从管道到下游作业共享环境变量

时间:2019-08-28 09:58:23

标签: maven jenkins environment-variables jenkins-pipeline

我在Jenkins中有两个Maven项目,它们下载源代码,然后使用mvn clean install和一个在构建阶段结合了这两个步骤的管道进行构建。

Jenkins maven插件希望为maven存储库的位置找到一个环境变量。即${env.MAVEN_REPO}

我的目标是在管道中定义此变量,以便下游maven构建作业使用它。
这是我的管道:

pipeline {
    agent any
    environment {
        MAVEN_REPO = "C:\\Users\\Chris\\development\\repositories\\maven"
    }
    stages {
        stage('Build') {
            steps {
                echo MAVEN_REPO
                echo env.MAVEN_REPO
                echo "${env.MAVEN_REPO}"
                build job: 'projectA'
                build job: 'projectB'
            }
        }
    }
}

上面所有三个回显都将打印已经设置的值。
现在,在下游作业中,我创建了“预处理>执行Windows批处理命令”,其中包含:

echo MAVEN_REPO is %MAVEN_REPO%
echo List of variables:
SET

问题是MAVEN_REPO变量没有值。
最后,打印所有环境变量只需验证没有定义任何MAVEN_REPO变量即可。

我什至尝试将变量作为作业参数提供,就像这样:

pipeline {
    agent any
    environment {
        MAVEN_REPO = "C:\\Users\\Chris\\development\\repositories\\maven"
    }
    stages {
        stage('Build') {
            steps {
                echo MAVEN_REPO
                echo env.MAVEN_REPO
                echo "${env.MAVEN_REPO}"
                build job: 'projectA', parameters: [[$class: 'StringParameterValue', name: 'MAVEN_REPO', value: 'C:\\Users\\Chris\\development\\repositories\\maven']]
                build job: 'projectB'
            }
        }
    }
}

但在尝试使用下游作业的前置步骤并运行此bat命令echo MAVEN_REPO is %MAVEN_REPO%来打印该变量时,该变量仍然没有值。

注意:我的Jenkins实例当前在Windows 10上运行。

0 个答案:

没有答案