2016-08-04 49 views
7

我正在嘗試使用Jenkinsfile創建Jenkins工作流程。我希望它做的就是監視'開發'分支的變化。當發生變化時,我希望它能夠標記併合併到主機。我正在使用GitSCM Step,但它唯一支持的是git clone。我不想掏腰包來做標籤/合併,但我看不到它的方式。有誰知道這是否可能?我爲我的Git服務器使用BitBucket(本地)。是否有可能通過Jenkins管道進行Git合併/推送

回答

13

目前還不可能,因爲GitPublisher插件(以前負責自由式作業中標記/合併/推送的插件)尚未更新爲與Jenkins管道兼容。您可以在pipeline plugins compatibility page和專用GitPublisher Jira issue上遵循該問題。

所以看起來你唯一的選擇是實際提取你的標記/合併命令......但是,請注意,你仍然可以從一些Jenkins內置功能中受益,例如爲你的Git回購使用憑據,這使得它非常簡單,然後根據您的需求進行標記/合併。

例退房:

git url: "ssh://[email protected]:12345/your-git-project.git", 
    credentialsId: 'jenkins_ssh_key', 
    branch: develop 

然後標籤/合併/推將是非常簡單的:

sh 'git tag -a tagName -m "Your tag comment"' 
sh 'git merge develop' 
sh 'git commit -am "Merged develop branch to master' 
sh "git push origin master" 

我希望有一天GitPublisher將在管道兼容的版本發佈,但現在這個解決方法應該做。

+3

真的嗎?當我嘗試上面的答案(使用ssh證書剛剛在上面生活)並嘗試做任何與遠程I'權限被拒絕(公開)'的事情。它可以像上面那樣從git檢出代碼,但憑據不會被緩存 –

+0

讓我們繼續在[專用問題](http://stackoverflow.com/q/39237910/702954) – Pom12

6

如果你是git的憑證,你可以在這個環節使用SSH代理插件等之後什麼:https://issues.jenkins-ci.org/browse/JENKINS-28335?focusedCommentId=260925&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-260925

sshagent(['git-credentials-id']) { 
    sh "git push origin master" 
} 
+0

上的具體問題,這仍然是詢問用戶名和密碼 – vinay

+0

請確保您已通過SSH在您的git上啓用登錄,並且您已將正確的SSH密鑰添加到您的Jenkins。這對我和其他6個人都有效,無需任何其他配置。 –

0

在我來說,我被迫使用HTTPS工作。我解決了它的:

  1. 創建一個用戶名/密碼憑據bitbucketUsernamePassword
  2. 使用該憑證進行結帳。
  3. 在結帳前設置credential.helper。
  4. 做一個git結帳分支得到一個本地分支跟蹤遠程。

然後,我可以推git push之後。

像這樣:

sh 'git config --global credential.helper cache' 
sh 'git config --global push.default simple' 

checkout([ 
    $class: 'GitSCM', 
    branches: [[name: branch]], 
    extensions: [ 
     [$class: 'CloneOption', noTags: true, reference: '', shallow: true] 
    ], 
    submoduleCfg: [], 
    userRemoteConfigs: [ 
     [ credentialsId: 'bitbucketUsernamePassword', url: cloneUrl] 
    ] 
]) 
sh "git checkout ${branch}" //To get a local branch tracking remote 

然後,我可以做這樣的事情:

sh 'git push' 
相關問題