如何在jenkins构建完成后将更改推送到github?

时间:2013-11-12 06:32:35

标签: git github jenkins

我有一个jenkins作业,它从github克隆存储库,然后运行powershell脚本,增加文件中的版本号。我现在正尝试将该更新文件发布回github上的原始存储库,因此当开发人员提取更改时,他会获得最新的版本号。

我尝试在后期制作活动中使用Git Publisher,我可以发布没有问题的标签,但它似乎没有发布任何文件。

5 个答案:

答案 0 :(得分:39)

answer by Wolandgit checkout master不是必需的。而是使用" Checkout到特定的本地分支"在"附加行为"部分设置"分支名称"掌握。

仍然需要git commit -am "blah"

现在你可以使用" Git Publisher"在"构建后的行动"推动变革。一定要指定"分支" to push(" Branch to push" = master," Target remote name" = origin)。

"合并结果"不需要。

答案 1 :(得分:33)

我自己找到了答案,这篇博客帮助:http://thingsyoudidntknowaboutjenkins.tumblr.com/post/23596855946/git-plugin-part-3

基本上需要执行:

git checkout master
修改任何文件之前

然后

git commit -am "Updated version number"
修改文件后

然后使用Git Publisher的后构建操作,并选择Merge Results,这将在成功构建时将更改推送到github。

答案 2 :(得分:9)

实际上,也不需要克劳斯答案中的"Checkout to specific local branch"

您可以执行更改,执行git commit -am "message"然后使用“Git Publisher”和“Branch to push”= /refs/heads/master(或开发或需要推送的任何分支),“目标远程名称“=原产地。

答案 3 :(得分:4)

设置 Global Jenkins 凭据后,您可以应用此步骤:

stage('Update GIT') {
  steps {
    script {
      catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
        withCredentials([usernamePassword(credentialsId: 'example-secure', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
            def encodedPassword = URLEncoder.encode("$GIT_PASSWORD",'UTF-8')
            sh "git config user.email admin@example.com"
            sh "git config user.name example"
            sh "git add ."
            sh "git commit -m 'Triggered Build: ${env.BUILD_NUMBER}'"
            sh "git push https://${GIT_USERNAME}:${encodedPassword}@github.com/${GIT_USERNAME}/example.git"
        }
      }
    }
  }
}

答案 4 :(得分:0)

我遵循以下步骤。它对我有用。

在Jenkins中,在Build下执行shell,创建一个文件,然后尝试将该文件从Jenkins工作区推送到GitHub。

enter image description here

下载Git Publisher插件并进行配置,如下图所示。

enter image description here

单击“保存并构建”。现在,您可以检查git存储库中是否成功推送了文件。