【问题标题】:Jenkins Git Publisher: How to commit code back to master after build?Jenkins Git Publisher:如何在构建后将代码提交给 master?
【发布时间】:2013-07-17 21:36:10
【问题描述】:

在构建后,我在 Jenkins Git Publisher 提交代码并将代码推送回主控程序时遇到了一些困难。我的构建过程增加了我的一个文件中的版本号,然后我想将此文件提交回 repo,但我似乎无法让它工作。

在 Source Code Management->Git 中,这些是我的设置:

  • 存储库名称:Android
  • 分支说明符:master
  • 结帐/合并到本地分支:master

然后,在 Git Publisher 中,这些是我的设置:

  • 仅在构建成功时推送:选中
  • 合并结果:选中
  • 要推送的分支:master
  • 目标远程名称:Android
  • 注意事项:推送注意事项:更新版本
  • 注意:目标远程名称:Android
  • Notes:Note 的命名空间:master

这是 Jenkins 的输出:

Pushing HEAD to branch master at repo Android
Adding note to namespace "master":
Updating version

请帮忙!

【问题讨论】:

    标签: android git jenkins jenkins-plugins git-push


    【解决方案1】:

    我认为 jenkins git 发布者插件没有做类似的事情

    git add .
    git commit -m 'xxx'
    

    插件仅执行推送,并可选择使用git-notes 添加注释。

    在此处查看注释:

    https://github.com/hamsterready/jenkins-git-publisher-test/tree/refs/notes/master

    要实现这样的目标:https://github.com/hamsterready/jenkins-git-publisher-test/commit/d80a1eef2133bee6d7a57b1b229ccd5990d2d606

    我添加了构建后步骤(执行 shell 脚本):

    git add .
    git commit -m 'Updating git.properties'
    

    然后启用将本地提交推送到源的 git 发布者构建后操作。

    【讨论】:

      【解决方案2】:

      如果您还使用 Gradle 进行构建,则可以使用 Git plugin

      这是完整的build.gradle

      buildscript {
        repositories { mavenCentral() }
        dependencies { classpath "org.ajoberstar:gradle-git:0.6.3" }
      }
      import org.ajoberstar.gradle.git.tasks.*
      
      task tag(type: GitTag) {
          tagName = version
          message = "Release of $version"
      }
      
      task pushWithTags(type: GitPush){
          credentials{
              username = "karim"
              password = gitPassword
          }
          setPushTags(true)
      }
      task add(type: GitAdd){
          include("yourVersionFile.txt") 
          // or add everything with include("*") 
      }
      task commit(type: GitCommit){
          setMessage(commitMsg)
      }
      task pushNewVersion(){
          tasks.add.execute()
          tasks.commit.execute()
          tasks.tag.execute()
          tasks.pushWithTags.execute()
      }
      

      这是您使用脚本添加、标记、提交和推送的方式(在 Jenkins 中有一个 plugin 用于执行此操作):

      gradle pushNewVersion "-PcommitMsg=hi" "-Pversion=0.1.1" "-PgitPassword=secret"
      

      【讨论】:

        【解决方案3】:

        我在使用 Jenkins 上的 Git 插件将更改推回原点时遇到了同样的问题。您使用的 Git 客户端插件版本是什么? git 客户端插件中必须存在错误,因此行为。

        他们修复了与推送相关的问题。参考:https://issues.jenkins-ci.org/browse/JENKINS-17242。 似乎它已经坏了,因为最近再次提交了另一个相同的错误:https://issues.jenkins-ci.org/browse/JENKINS-19442

        如果您阅读了 urls 中的讨论,建议的快速修复是将 Git 客户端插件降级到 1.0.5,将 git 插件降级到 1.3.0。希望这对你有用。

        【讨论】:

          猜你喜欢
          • 2015-09-25
          • 1970-01-01
          • 2012-10-28
          • 1970-01-01
          • 2021-05-23
          • 1970-01-01
          • 2014-06-08
          • 2013-07-14
          • 1970-01-01
          相关资源
          最近更新 更多