我有一个jenkins组织管道作业,它在所有具有" Jenkinsfile"的存储库上执行。定义。作业从github克隆存储库,然后运行powershell脚本,该脚本会增加文件中的版本号。我现在正试图将更新的文件发布回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 :(得分:0)
实际上找到了几个解决方案,首先我从Jenkins修改了这样的脚本(在工作流程管道中更改了一些对象):
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()
}
您需要多次运行脚本,然后允许在jenkins中执行代码(在流程脚本批准中管理jenkins->)。
另一个解决方案,更简单(现在使用这个):
bat "\"${tool 'Git'}\" config user.email \"ci@virtocommerce.com\""
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"的Git工具。在Jenkins中配置。