我想在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。如有任何帮助,将不胜感激,提前感谢🙇
1条答案
按热度按时间yizd12fk1#
我只是硬编码的价值观和删除不相关的部分和以下似乎为我工作的罚款。
输出量