jenkins - 我可以检查 Jenkinsfile 中是否存在环境变量

标签 jenkins groovy jenkins-pipeline multibranch-pipeline

我正在为我的项目运行 Multibranch 管道。

Jenkinsfile 的行为应该根据触发器而改变。
有两个事件会触发管道 1. 推送事件 2. 拉取请求。

我正在尝试检查环境变量“CHANGE_ID”(“CHANGE_ID”仅可用于拉取请求)。 Reference .

因此,如果管道由 Push 事件触发,并且如果检查 'CHANGE_ID' 变量,它会抛出异常(如果管道被拉取请求触发,代码工作正常)。

代码:

stage('groovyTest'){
    node('mynode1') {
        if (CHANGE_ID!=NULL){
            echo "This is Pull request"
        }else{
            echo "This is Push request"
        }
    }
}

错误:
groovy.lang.MissingPropertyException: No such property: CHANGE_ID for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:224)
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:28)
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
    at WorkflowScript.run(WorkflowScript:5)
    at ___cps.transform___(Native Method)

如何检查 Jenkinsfile 中是否存在“CHANGE_ID”变量?

最佳答案

您可以在使用前检查:

 if (env.CHANGE_ID) {
 ...

来自 doc

Environment variables accessible from Scripted Pipeline, for example: env.PATH or env.BUILD_ID. Consult the built-in Global Variable Reference for a complete, and up to date, list of environment variables available in Pipeline.

关于jenkins - 我可以检查 Jenkinsfile 中是否存在环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45758597/

相关文章:

logging - 无法识别 log4j2 配置文件

jenkins - 动态评估 Jenkinsfile 中的选择参数

Jenkins emailext 插件在管道脚本中具有默认主题和正文

docker - Jenkins-Run Docker : COPY failed: stat/var/lib/docker/tmp/docker-builder. ..:没有这样的文件或目录

git - CI 自动化/Jenkins - 如果 pull 请求分配了标签(或其他条件),则不要触发构建

ubuntu - 在 Ubuntu 14 上安装 Jenkins - jenkins 服务未运行

maven - 无需重建即可部署 Maven Artifact

java - 即使测试失败,如何始终写入 Jenkins Groovy 管道中的 .csv 数据文件

java - 使用依赖项加载 groovy 类

mongodb - grails 应用程序中的 mondogb-morphia 问题,无法将 Map 正确存储在数据库中