在使用maven release-plugin和git发布期间如何避免“更新被拒绝,因为遥控器包含工作”?

时间:2016-07-06 09:20:15

标签: git maven jenkins maven-3 maven-release-plugin

我们最近从SVN迁移到git。除了在git上发布版本的其他(意外)问题之外,我想知道如何处理以下问题:

当我在Jenkins和一些开发人员(意外地)在发布的第一阶段推出发布版本时,发布版本失败并出现以下错误:

powershell.exe -file "$(SolutionDir)Resources\UpdateVersion.ps1" -path $(SolutionDir)

Jenkins用来启动发布版本的maven命令是(我们在Windows上构建,所以我们不幸要激活[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project xyz: Unable to commit files [ERROR] Provider message: [ERROR] The git-push command failed. [ERROR] Command output: [ERROR] To ssh://[some-ip]/home/git/xyz [ERROR] ! [rejected] release/xyz-6.10 -> release/xyz-6.10 (fetch first) [ERROR] error: failed to push some refs to 'ssh://[some-ip]/home/git/xyz' [ERROR] hint: Updates were rejected because the remote contains work that you do [ERROR] hint: not have locally. This is usually caused by another repository pushing [ERROR] hint: to the same ref. You may want to first integrate the remote changes [ERROR] hint: (e.g., 'git pull ...') before pushing again. [ERROR] hint: See the 'Note about fast-forwards' in 'git push --help' for details. [ERROR] -> [Help 1] ,因为-DautoVersionSubmodules上的命令行太长,包括所有修改过的git add):

pom.xml

是否有一种简单的方法可以阻止其他用户推送(但允许Jenkins推送!)?或任何其他稳定的工作 - 或最佳做法?

使用的版本:

  • Maven 3.3.9
  • Maven Release-Plugin 2.5.3
  • Git 2.8.1
  • Jenkins 1.629
  • Jenkins Maven Release Plug-in Plug-in 0.14.0
  • Windows 10

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我希望你同意发布失败是正确的。在这种情况下,修复并不是一个大问题:更新项目并执行另一个版本。 解决这个问题最简单的方法是:沟通:)告诉同事你打算做这个版本。 我听说的另一个解决方案是:首先创建一个分支并从该分支中​​释放。没有人会改变分支的内容,所以这应该是一个安全的解决方案,但它需要额外的工作。由您来决定它是否值得。大部分时间都不是。