![](/img/trans.png)
[英]Jenkins - Username and Password to checkout git in Jenkinsfile (groovy)
[英]Not able to read Git Environment variables Jenkins using Groovy Jenkinsfile
Git 插件(默认情况下)安装在我的 Jenkins 中,但我无法获取应该由 Git 插件传入的 env 变量。 我正在寻找:
GIT_COMMIT
GIT_BRANCH
GIT_PREVIOUS_COMMIT
GIT_PREVIOUS_SUCCESSFUL_COMMIT
GIT_URL
等等。我正在使用指向 Github 存储库的流水线作业项,其中包含 Jenkinsfile 和以下代码
stage 'PushToProd'
node {
git url: "https://github.com/username/fakeurl.git"
echo "Starting PushToProd"
sh 'printenv'
sh 'env'
sh 'echo $BRANCH_NAME'
sh 'echo $GIT_COMMIT'
}
当我使用env
或printenv
而不是 Github 插件时,我得到了很多环境变量。
关于如何将 Git 环境变量传递给作业的任何提示?
更新:当我使用 Freestyle 项目并且有一个 shell 步骤使用echo $GIT_COMMIT
时,我能够轻松获取 Git 环境变量。 仍然想知道如何使用 Jenkinsfile + Pipeline 作业项让它工作。
由于缺少双引号、缺少大括号和缺少env.
,这将不起作用env.
:
sh 'echo $BRANCH_NAME'
这在 Jenkinsfile 中按预期工作:
node {
sh "echo ${env.BRANCH_NAME}"
}
因此,任何偶然发现此 Stackoverflow 问题的人都应该意识到这是当前管道情况的一个错误。
这里有很多讨论: https : //issues.jenkins-ci.org/browse/JENKINS-35230
本质上,由于与管道的某些不兼容,插件无法正确添加环境变量。
这在Git 插件 3.3.1 中已修复
版本 3.3.1(2017 年 6 月 23 日)
我发现的大多数管道示例都将代码包装在“节点”闭包中,出于某种原因,这不允许 Jenkins Git 插件填充环境变量。
但是,如果您像这样包装它,则环境变量设置正确:
pipeline {
agent {
label ('<AGENT>')
}
stages {
stage('<STAGE>') {
steps {
<CODE>
}
}
}
}
我不确定哪些闭包在这里至关重要,但是这种格式允许我访问环境变量,例如env.GIT_COMMIT
你可能需要做这样的事情。
node {
def branch = env.BRANCH_NAME
sh "My branch name: ${branch}"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.