无法使用Groovy Jenkins文件读取Git环境变量Jenkins
Git插件(默认情况下)安装在my Jenkins中,但我无法获取Git插件应该传入的环境变量。我正在寻找:无法使用Groovy Jenkins文件读取Git环境变量Jenkins,git,jenkins,groovy,jenkins-pipeline,jenkinsfile,Git,Jenkins,Groovy,Jenkins Pipeline,Jenkinsfile,Git插件(默认情况下)安装在my Jenkins中,但我无法获取Git插件应该传入的环境变量。我正在寻找: GIT_COMMIT GIT_BRANCH GIT_PREVIOUS_COMMIT GIT_PREVIOUS_SUCCESSFUL_COMMIT GIT_URL 等等,我使用管道作业项,它指向一个Github repo和Jenkins文件,代码如下 stage 'PushToProd' node { git url: "https://github.com/username/
GIT_COMMIT
GIT_BRANCH
GIT_PREVIOUS_COMMIT
GIT_PREVIOUS_SUCCESSFUL_COMMIT
GIT_URL
等等,我使用管道作业项,它指向一个Github repo和Jenkins文件,代码如下
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 env变量传递到作业中的技巧
更新:当我使用Freestyle项目并使用shell步骤时,我能够轻松获取Git env变量,使用
echo$Git\u COMMIT
。仍然想知道如何使用Jenkinsfile+管道作业项使其工作 您可能需要这样做
node {
def branch = env.BRANCH_NAME
sh "My branch name: ${branch}"
}
由于缺少双引号、缺少大括号和
env.
,这将不起作用:
sh 'echo $BRANCH_NAME'
这在Jenkins文件中按预期工作:
node {
sh "echo ${env.BRANCH_NAME}"
}
因此,任何其他偶然发现Stackoverflow问题的人都应该知道,这是当前管道状况中的一个bug 这里有很多讨论: 本质上,由于与管道不兼容,插件无法正确添加环境变量。这在 版本3.3.1(2017年6月23日)
- 打印控制台日志(JENKINS-38241)中提交消息的第一行
- 允许scm步骤返回修订版()
- 即使启用了CSRF(JENKINS-34350),发布到/git/notifyCommit也不需要crumb
- 修复管道库使用中跟踪空指针异常的凭据(JENKINS-44640)
- 修复git参数使用中跟踪空指针异常的凭据(JENKINS-44087)
pipeline {
agent {
label ('<AGENT>')
}
stages {
stage('<STAGE>') {
steps {
<CODE>
}
}
}
}
我不确定哪些闭包在这里很重要,但这种格式允许我访问环境变量,例如
env.GIT\u COMMIT
您可以使用env.VARIABLE
访问Jenkins文件中的环境变量。我记得env.BRANCH\u NAME
起作用。上述问题的可能重复项-现已修复:-)Git插件3.3.1已经发布,并合并了必要的pull请求。哇!!谢谢你,摩根!事实上,如果您使用的是通用的签出scm
,这是行不通的。还需要最新的Jenkins。它仍然不起作用,也许workplace cps插件也需要发布……嘿@Konrad Kleine,我也有同样的问题,printenv甚至没有在管道中打印git env变量。你对此有什么提示吗?嘿@TibinPaul,没有,我没有任何提示给你,并且停止使用Jenkins管道。