if else 条件在 Jenkinsfile 中不起作用

问题描述 投票:0回答:1

因此,我尝试在脚本化 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.
  1. 我尝试使用 `if (params.ENVIRONMENT == 'dev'||'uat')' 但看到了相同的行为。
  2. 尝试在阶段之前声明
    ENVIRONMENT = "${params.ENVIRONMENT}"
    将其定义为全局变量,然后使用
    if (${ENVIRONMENT} == 'dev'||'uat')
    但也没有帮助。
  3. 添加了多个 echo 语句以查看 ENVIRONMENT 的值是什么,该值解析为
    pt
    但仍然不执行 else 块。

预期行为: 它应该进入 else 块并打印

[Pipeline] echo
1. Environment is pt
[Pipeline] echo
3. Environment is pt
[Pipeline] echo
This is PT stage
jenkins jenkins-pipeline jenkins-groovy
1个回答
0
投票

尝试下面的条件。

if(params.ENVIRONMENT.equals("dev") || params.ENVIRONMENT.equals("uat"))
© www.soinside.com 2019 - 2024. All rights reserved.