首页主机资讯CentOS Jenkins配置中的环境变量怎么设置

CentOS Jenkins配置中的环境变量怎么设置

时间2026-01-21 07:56:04发布访客分类主机资讯浏览1331
导读:CentOS 上 Jenkins 环境变量的设置方法与优先级 一 设置位置与优先级 推荐按以下顺序理解优先级(由高到低): 构建时临时变量:在 Pipeline 的 environment 或 withEnv 中设置,仅对当前构建/步...

CentOS 上 Jenkins 环境变量的设置方法与优先级


一 设置位置与优先级

  • 推荐按以下顺序理解优先级(由高到低):
    1. 构建时临时变量:在 Pipeline 的 environment 或 withEnv 中设置,仅对当前构建/步骤生效。
    2. 节点级环境变量:在节点配置里设置,对该节点上运行的所有构建生效。
    3. 全局环境变量:在“系统管理 → 系统配置 → 全局属性”中设置,对所有项目生效。
    4. 操作系统级环境变量:如 /etc/profile、用户 ~/.bash_profile 等,Jenkins 进程若以 jenkins 用户启动,需要保证该用户能读取到这些变量。
  • 同名变量覆盖规则:节点变量 > 全局变量 > 系统变量。在节点上设置的同名变量会优先生效。

二 在 CentOS 上配置操作系统级变量供 Jenkins 使用

  • jenkins 用户生效为例,编辑其环境文件(如 ~jenkins/.bash_profile~jenkins/.bashrc),追加变量并重新加载:
    sudo -iu jenkins
    echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >
        >
         ~/.bash_profile
    echo 'export MAVEN_HOME=/opt/apache-maven-3.8.6' >
        >
         ~/.bash_profile
    echo 'export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin' >
        >
     ~/.bash_profile
    source ~/.bash_profile
    
  • 验证 jenkins 用户环境:
    sudo -iu jenkins env | egrep '^(JAVA_HOME|MAVEN_HOME|PATH)='
    java -version
    mvn -v
    
  • 说明:Jenkins 若通过 systemd 启动,默认不加载交互式 shell 的 profile。如需注入,可在 systemd 服务中显式声明 Environment(见下一节示例)。

三 在 Jenkins 界面中配置变量

  • 全局变量
    • 路径:Dashboard → Manage Jenkins → System Configuration → System → Global properties → Environment variables
    • 添加键值对,例如:JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64MAVEN_HOME=/opt/apache-maven-3.8.6
  • 节点变量
    • 路径:Dashboard → Manage Jenkins → Nodes and Clouds → 选择节点 → Configure → Node Properties → Environment variables
    • 适合为某台构建机单独设置 PATH、JAVA_HOME、NPM 等,优先级高于全局变量。
  • 项目级变量
    • 在任务配置的 构建环境 中勾选“提供环境变量”,添加项目所需变量(如 DEPLOY_ENV=prod)。
  • 使用方式
    • 在 Shell 步骤中可直接使用 $VAR${ VAR} ;在 Pipeline 中通过 env.VAR 读取。

四 Pipeline 中设置与打印变量

  • 声明式 Pipeline 示例(含 Node.js/npm 场景):
    pipeline {
    
      agent any
      environment {
    
        NODE_HOME = '/opt/nodejs'
        PATH      = "${
    env.NODE_HOME}
    /bin:${
    env.PATH}
    "
        JAVA_HOME = '/usr/lib/jvm/java-11-openjdk-amd64'
        MAVEN_HOME = '/opt/apache-maven-3.8.6'
      }
    
      stages {
    
        stage('Check') {
    
          steps {
    
            sh 'node -v'
            sh 'npm -v'
            sh 'java -version'
            sh 'mvn -v'
            sh 'echo "JAVA_HOME=$JAVA_HOME, MAVEN_HOME=$MAVEN_HOME"'
          }
    
        }
    
      }
    
    }
    
    
  • 脚本式或临时注入:
    node {
    
      withEnv(["PATH=/opt/nodejs/bin:${
    env.PATH}
    "]) {
        
        sh 'node -v &
        &
     npm -v'
      }
    
    }
    
    
  • 打印全部环境变量用于排查:
    pipeline {
    
      agent any
      stages {
    
        stage('Dump') {
    
          steps {
    
            script {
    
              env.getEnvironment().each {
         k, v ->
     echo "${
    k}
     = ${
    v}
    " }
    
            }
    
          }
    
        }
    
      }
    
    }
        
    
  • 查看内置变量清单:访问 http://< JENKINS_URL> /env-vars.html

五 常见问题与排查

  • 构建机已装 Node.js/npm 但报错 “npm: command not found”
    • 原因:Jenkins(以 jenkins 用户)未加载正确的 PATH
    • 解决:
      • 方案 A:在节点属性里设置 PATH 指向 /opt/nodejs/bin(或其他 Node 安装路径)。
      • 方案 B:在 systemd 服务中注入变量(示例):
        sudo systemctl edit jenkins
        # 在打开的编辑器中添加:
        [Service]
        Environment="PATH=/opt/nodejs/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        Environment="NODE_HOME=/opt/nodejs"
        # 保存后执行:
        sudo systemctl daemon-reload
        sudo systemctl restart jenkins
        
  • 修改了 /etc/profile 但构建机里仍无效
    • 原因:Jenkins 未以登录 Shell 执行 profile。
    • 解决:改用 ~jenkins/.bash_profile 配置,或在 systemd 中显式设置 Environment 并重启服务。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Jenkins配置中的环境变量怎么设置
本文地址: https://pptw.com/jishu/788306.html
CentOS Jenkins配置文件在哪里修改 CentOS Jenkins如何进行版本控制集成

游客 回复需填写必要信息