You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以ci-user身份运行Jenkins任务而非默认jenkins用户?

如何让Jenkins以ci-user身份运行任务

当然可以!完全不用给jenkins用户重复配置虚拟环境、Python包这些东西,下面几种方案能帮你实现用ci-user身份运行Jenkins任务,你可以根据自己的场景选择:

方案1:全局修改Jenkins服务的运行用户(适合所有任务都用ci-user的情况)

如果希望Jenkins整个服务都以ci-user身份运行,这样所有任务默认都会继承ci-user的环境配置,步骤如下:

  • 找到Jenkins的服务配置文件:
    • 用systemd的系统(比如Ubuntu 16.04+、CentOS 7+):/etc/systemd/system/jenkins.service
    • 用sysvinit的系统:/etc/init.d/jenkins
  • 打开文件,找到User=jenkins这一行,把它改成User=ci-user
  • 调整Jenkins相关目录的权限,确保ci-user能读写:
    sudo chown -R ci-user:ci-user /var/lib/jenkins /var/log/jenkins /var/cache/jenkins
    
  • 重启Jenkins服务:
    • systemd系统:sudo systemctl daemon-reload && sudo systemctl restart jenkins
    • sysvinit系统:sudo service jenkins restart

方案2:在单个任务中切换到ci-user(适合仅部分任务需要的情况)

如果只是部分任务需要用ci-user的环境,可以在任务里通过sudo切换身份:

自由风格任务

  • 在任务的“构建”步骤中添加“执行shell”,用以下格式执行命令:
    sudo -u ci-user bash -c 'source /home/ci-user/your_venv/bin/activate && python your_script.py'
    
  • 要让jenkins用户能免密执行sudo,编辑sudoers文件(一定要用visudo命令打开,避免语法错误),添加:
    jenkins ALL=(ci-user) NOPASSWD: ALL
    
    (为了安全,建议把ALL换成具体需要执行的命令路径,比如/usr/bin/python3, /home/ci-user/run_script.sh)

Pipeline任务

在Pipeline脚本里用sh步骤结合sudo切换用户:

pipeline {
    agent any
    stages {
        stage('Run with ci-user env') {
            steps {
                sh '''
                    sudo -u ci-user bash -c "
                        source /home/ci-user/venv/bin/activate
                        python your_task_script.py
                        pip install your_required_package
                    "
                '''
            }
        }
    }
}

同样需要给jenkins用户配置免密sudo权限。

方案3:创建以ci-user运行的Jenkins代理节点

如果想把ci-user的环境隔离开作为独立的任务运行节点,可以这样做:

  • 进入Jenkins管理界面,点击「管理节点和云」
  • 点击「新建节点」,选择「固定节点」,填写节点名称(比如ci-user-node)
  • 在节点配置中:
    • 勾选「启用」
    • 设置「远程工作目录」为ci-user下的目录,比如/home/ci-user/jenkins_workspace
    • 「启动方法」选择「通过SSH启动代理」,填写服务器地址、用户名ci-user,并配置SSH密钥(确保ci-user能无密码登录到目标服务器,本地服务器填localhost即可)
  • 保存配置后,启动该节点
  • 后续创建任务时,在「限制项目的运行节点」中选择这个ci-user-node,任务就会以ci-user身份运行,直接使用它的所有环境配置

注意事项

  • 修改服务运行用户后,要确认ci-user有足够的权限访问Jenkins的工作目录,否则可能导致Jenkins启动失败
  • 使用sudo的方式时,尽量缩小权限范围,避免给jenkins用户无限制的sudo权限,降低安全风险
  • 用SSH代理节点时,要确保ci-user的SSH密钥配置正确,且Jenkins能正常连接到节点

内容的提问来源于stack exchange,提问作者omer mazig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:21:52