[英]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.