【问题标题】:Jenkins Git Environment variables not set in PipelineJenkins Git 环境变量未在管道中设置
【发布时间】:2017-09-20 09:07:13
【问题描述】:

我正在尝试在 Jenkins 管道脚本中读取一些应该由 Git 插件设置的环境变量,但似乎它们没有设置,因为当我尝试在脚本中使用它的值是空字符串并且如果我使用 sh 'printenv' 我可以看到它们没有设置。

可能我遗漏了一些东西,但我找不到什么。

有什么想法吗?

【问题讨论】:

    标签: git jenkins jenkins-pipeline


    【解决方案1】:

    每页:

    http://JenkinsURL/pipeline-syntax/globals:

    GIT_COMMIT 等特定于 SCM 的变量不会自动 定义为环境变量;相反,您可以使用返回值 结帐步骤。

    我相信这应该在 Jenkins 2.60 中解决:

    https://plugins.jenkins.io/pipeline-model-definition

    查看 JENKINS-45198 的项目

    您可以通过在 shell 中运行适当的 git 命令并将它们分配给变量来解决:

    GIT_REVISION = sh( script: 'git rev-parse HEAD', returnStdout: true )
    

    在声明式管道中,您必须将其包装在 script{} 块中,并且可能在管道之外声明变量以获得适当的范围。

    【讨论】:

    • 这对您有帮助吗?
    • 5年后,Jenkins的最新版本是2.335。我不知道你为什么说它在 Jenkins 2.60 中解决了?
    【解决方案2】:

    如果你像我一样使用checkout scm,你会注意到你没有任何与 GIT 相关的环境变量来帮助你,所以在这种情况下,你需要这样做:

    scm_variables = checkout scm
    
    echo scm_variables.get('GIT_COMMIT')
    

    【讨论】:

    • 这是在声明中可用,还是必须使用脚本部分?其实……试过了……两者都不管用?
    猜你喜欢
    • 2017-08-09
    • 2018-11-24
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多