这是我设置某些参数后触发构建的Jenkins管道代码的一部分,我也是从master和分支设置这些env变量。我知道我的主人和分支机构可以独立(同时)触发构建。
他们(分支构建和主构建)是否有可能共享Jenkins公开的这个env变量?或者他们有自己的env变量副本?
// determine current quadrant using system time
def quadrant = getCurrentQuadrant()
env.TRIGGER_TYPE=getTriggerType()
echo "Current quadrant: " + quadrant + " | triggertype: " + env.TRIGGER_TYPE
env.ENV = "${environment}"
//if the build is triggered by timer in first/fourth quarter of 24 hrs day then change default trigger<dev> to <staging>
if ( (quadrant == 0 || quadrant == 3 ) && env.TRIGGER_TYPE =='Started by timer') {
env.ENV = "staging"
}
答案 0 :(得分:1)
共享的环境变量:“Working with the Environment”:JENKINS_URL
和其他人
规则是:
- 顶级管道块中使用的环境指令将应用于管道中的所有步骤。
- 在舞台中定义的环境指令仅将给定的环境变量应用于舞台中的步骤。
因此,如果您的步骤涉及多个分支,则它们将共享相同的环境变量 但是如果这些分支是独立使用的,那么在同一管道工作的单独运行中,它就不会 另一种方法是将parameters用于特定于运行时的值。
您可以找到another approach in this gist:
stage('Deploy application') {
// This is the cool part where you deploy. Here, you can specify builds you want to deploy
switch (env.BRANCH_NAME) {
case "master":
sh("env >> .env")
sh("docker run --env-file .env --rm ${project} ./gradlew clean build assembleRelease crashlyticsUploadDistributionRelease")
sh("rm -rf .env")
break
case "dev":
sh("env >> .env")
sh("docker run --env-file .env --rm ${project} ./gradlew clean build assembleDebug crashlyticsUploadDistributionDebug")
sh("rm -rf .env")
break
}
}
在具有--env-file .env
的泊坞窗中运行Jenkins管道步骤将允许构建共享存储在.env
中的一组公共变量。