Jenkins 使用管道和 groovy 将存储库中的更改发布到 github
Jenkins publish changes in repository to github using pipeline and groovy
我有一个 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?。
实际上找到了几个解决方案,首先我像这样修改了 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"
您必须在 Jenkins 中配置名称为 "Git" 的 Git 工具。
我有一个 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?。
实际上找到了几个解决方案,首先我像这样修改了 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"
您必须在 Jenkins 中配置名称为 "Git" 的 Git 工具。