我想在Jenkinsfile下面設定動態變數是我的Jenkinsfile
def determineProjectByBranch(branchName) {
String projectName = "";
if (branchName.contains("api")) {
projectName = "api";
} else if (branchName.contains("auth")) {
projectName = "auth";
}
return projectName;
}
pipeline {
agent any
stages {
stage("Build") {
environment {
PROJECT_NAME = determineProjectByBranch("${GIT_BRANCH}")
}
steps {
script {
PROJECT_NAME = determineProjectByBranch("${GIT_BRANCH}")
}
echo "branch name: ${GIT_BRANCH}"
echo "project name: " PROJECT_NAME // it shows empty value
echo "project name: ${PROJECT_NAME}"
sh "chmod x gradlew"
sh "./gradlew ${PROJECT_NAME}:clean ${PROJECT_NAME}:build"
}
}
}
}
如您所見,我想使用函式來設定動態值,但我找不到動態設定變數的正確方法。
我也嘗試了下面的代碼,但它也沒有作業。
def determineProjectByBranch(branchName) {
String projectName = "";
if (branchName.contains("api")) {
projectName = "api";
} else if (branchName.contains("auth")) {
projectName = "auth";
}
return projectName;
}
def projectName
pipeline {
agent any
stages {
stage("Build") {
steps {
script {
projectName = determineProjectByBranch("${GIT_BRANCH}")
}
echo "branch name: ${GIT_BRANCH}"
echo "project name: " projectName // it shows empty value
echo "project name: ${projectName}"
sh "chmod x gradlew"
sh "./gradlew ${projectName}:clean ${projectName}:build"
}
}
}
}
您可能認為該函式回傳空值,但是當我使用以下代碼構建時,它顯示了預期值
def determineProjectByBranch(branchName) {
String projectName = "";
if (branchName.contains("api")) {
projectName = "api";
} else if (branchName.contains("auth")) {
projectName = "auth";
}
return projectName;
}
def projectName
pipeline {
agent any
stages {
stage("Build") {
steps {
echo "branch name: ${GIT_BRANCH}"
echo "project name: " determineProjectByBranch("${GIT_BRANCH}") // it shows expected value
echo "project name: ${projectName}"
sh "chmod x gradlew"
sh "./gradlew ${PROJECT_NAME}:clean ${PROJECT_NAME}:build"
}
}
}
}
我不確定定義變數取決于 Jenkins 版本,但我的是 2.361.2。任何幫助將不勝感激提前謝謝你??
uj5u.com熱心網友回復:
我只是硬編碼了這些值并洗掉了不相關的部分,以下似乎對我來說很好。
def determineProjectByBranch(branchName) {
String projectName = "";
if (branchName.contains("api")) {
projectName = "api";
} else if (branchName.contains("auth")) {
projectName = "auth";
}
return projectName;
}
pipeline {
agent any
stages {
stage("Build") {
environment {
PROJECT_NAME = determineProjectByBranch("api123")
}
steps {
echo "branch name:"
echo "project name: " PROJECT_NAME // it shows empty value
echo "project name: ${PROJECT_NAME}"
}
}
}
}
輸出
[Pipeline] withEnv
[Pipeline] {
[Pipeline] echo
branch name:
[Pipeline] echo
project name: api
[Pipeline] echo
project name: api
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523050.html
上一篇:初始化后如何將引數傳遞給類?
