git 检查属性是否存在Groovy

xj3cbfub  于 2023-04-19  发布在  Git
关注(0)|答案(2)|浏览(122)

我在Jenkins中使用多分支插件,并轮询我的git repo以查看是否有任何更改。我的问题是,当它轮询时,我的$GIT_BRANCH_NAME变量不存在,构建失败。

groovy.lang.MissingPropertyException: No such property: GIT_BRANCH_NAME for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)

我试着检查

if (!bindings.hasProperty(GIT_BRANCH_NAME)){
echo "Why is this not working"
env.GIT_BRANCH_NAME = sh(script: "git rev-parse HEAD", returnStdout: true).trim()
}

if (!project.hasProperty(GIT_BRANCH_NAME)){
    echo "Why is this not working"
    env.GIT_BRANCH_NAME = sh(script: "git rev-parse HEAD", returnStdout: true).trim()
    }

但还是不行。任何帮助都很感激

ewm0tg9j

ewm0tg9j1#

给你:

if (!bindings.properties."${GIT_BRANCH_NAME}")){
    echo "Why is this not working"
    env.GIT_BRANCH_NAME = sh(script: "git rev-parse HEAD", returnStdout: true).trim()
}

UPD:
据我所知,问题是你的类既没有声明bindings,也没有声明projectGIT_BRANCH_NAME变量(或者它们没有从外部传递到绑定中)。有没有可能发布整个类和脚本执行器(绑定或类似的)?

jjjwad0x

jjjwad0x2#

一些需要提前知道(或至少猜测)的事情:

  • Jenkins Groovy运行时使用env对象(?)来管理当前环境变量-这意味着不能保证任何env成员也会出现在“绑定”系统中
  • 某些成员(如WORKSPACE)可能仅在运行于node/agent/ws覆盖的上下文中时才存在。
  • 部分/全部(?)成员与env.<name><name>同时存在
  • 尝试访问env.<name>的不存在的成员将导致空,而对于相同的情况,访问<name>将引发故障。
  • 有一些特殊的成员将无法通过绑定或类似的分类系统来定位它们。

因此,我建议实现看起来像这样的代码:

if (env.WORKSPACE != null) {
    println "WORKSPACE=${WORKSPACE}"  // or ${env.WORKSPACE}
    // checking for an empty string value is now a simple story.
} else {
    println "WORKSPACE is null"
}

相关问题