因此,我尝试在脚本化 Jenkinsfile 中使用 if-else 条件来根据管道开头传递的选择参数来运行构建。在传递
pt
作为 ENVIRONMENT 参数的选择时,它仍然不执行 else 块。
stage("Docker Build") {
echo "1. Environment is ${ENVIRONMENT}"
if (env.ENVIRONMENT == 'dev'||'uat') {
echo "2. Environment is ${ENVIRONMENT}"
echo "This is Dev stage"
docker.image("nexus-az.${dockerBuildImageVersion}").inside("-e HOME=${WORKSPACE}") {
sh 'npm run run-envsub -- --env CONTEXTPATH=/app-${ENVIRONMENT}'
sh 'ng build --configuration=${ENVIRONMENT}-oci --base-href /app-${ENVIRONMENT}/'
}
} else {
echo "3. Environment is ${ENVIRONMENT}"
echo "This is PT stage"
docker.image("nexus-az.${dockerBuildImageVersion}").inside("-e HOME=${WORKSPACE}") {
sh 'npm run run-envsub -- --env CONTEXTPATH=/app-${ENVIRONMENT}'
sh 'ng build --configuration=w${ENVIRONMENT}-oci --base-href /app-${ENVIRONMENT}/'
}
}
并给出以下输出
[Pipeline] { (Docker Build)
[Pipeline] echo
1. Environment is pt
[Pipeline] echo
2. Environment is pt
[Pipeline] echo
This is Dev stage
[Pipeline] isUnix
.
.
.
+ ng build --configuration=pt-oci --base-href /app-oci-pt/
An unhandled exception occurred: Configuration 'pt-oci' is not set in the workspace.
ENVIRONMENT = "${params.ENVIRONMENT}"
将其定义为全局变量,然后使用 if (${ENVIRONMENT} == 'dev'||'uat')
但也没有帮助。pt
但仍然不执行 else 块。预期行为: 它应该进入 else 块并打印
[Pipeline] echo
1. Environment is pt
[Pipeline] echo
3. Environment is pt
[Pipeline] echo
This is PT stage
尝试下面的条件。
if(params.ENVIRONMENT.equals("dev") || params.ENVIRONMENT.equals("uat"))