Jenkins使用管道和groovy将存储库中的更改发布到github

时间:2016-06-08 18:55:09

标签: github jenkins groovy jenkins-pipeline

我有一个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?

1 个答案:

答案 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中配置。