2016-06-08 25 views
0

我有一個jenkins組織管道作業,它在所有定義有「Jenkinsfile」的存儲庫上執行。作業從github克隆存儲庫,然後運行增加文件中版本號的powershell腳本。我現在正試圖將更新後的文件發佈回github上的原始存儲庫,因此當開發人員修改更改時,他會獲取最新的版本號。Jenkins使用流水線和groovy發佈存儲庫中的更改到github

我嘗試使用jenkins JIRA(https://issues.jenkins-ci.org/browse/JENKINS-28335)中建議的腳本(在「jenkinsfile」中),但無濟於事。任何建議將不勝感激。基本上需要使用爲作業定義的相同參數執行「git commit」和「git push」。

作爲參考,以下是用於自由風格(不是管道作業)的以前的解決方案:How to push changes to github after jenkins build completes?

回答

0

居然發現幾個解決方案,首先我從詹金斯這樣的(工作流管道改變了一些對象)modied腳本:

import hudson.FilePath 
import org.eclipse.jgit.transport.URIish 

node { 
    env.WORKSPACE = pwd() 
    stage 'Checkout' 
     checkout scm 

     def build = manager.build 
     def listener = manager.listener 
     def workspace = new FilePath(new File(env.WORKSPACE)) 
     def environment = build.getEnvironment(listener) 
     final def project = build.getParent() 
     final def gitScm = project.getTypicalSCM() 
     final def gitClient = gitScm.createClient(listener, environment, build, workspace); 

     final def gitTagName = "TAG_NAME" 
     final def comment = "COMMENT" 
     final def remoteURI = new URIish("origin") 

     gitClient.tag(gitTagName, comment) 
     gitClient.push().tags(true).to(remoteURI).execute() 
} 

你需要運行腳本多次,然後允許執行代碼在詹金斯(管理詹金斯 - >在進程腳本批准)。

另一種解決方案,更簡單的(使用這個現在):

bat "\"${tool 'Git'}\" config user.email \"[email protected]\"" 
bat "\"${tool 'Git'}\" config user.name \"Virto Jenkins\"" 
bat "\"${tool 'Git'}\" commit -am \"Updated version number\"" 
bat "\"${tool 'Git'}\" push origin HEAD:master -f" 

你必須有與詹金斯配置一個名爲「混帳」的Git工具。

相關問題