Jenkins Artifactory Release Plugin:一种在不指定新的开发版本的情况下发布的方法吗?

时间:2014-04-21 19:46:08

标签: jenkins continuous-integration jenkins-plugins artifactory

背景

在我工作的公司,我们在分支机构中开发主干和商店版本。通常,在我们发布之后,我们将下一个开发版本设置为次要版本的增量以及规范" -SNAPSHOT"后缀。到目前为止一切都很好。

问题

当我们尝试应用"补丁版本"我们的问题就出现了。 - Z中的X.Y.Z到已发布的模块。根据我们的规则,发布补丁版本意味着处理已发布的版本。 Jenkins Artifactory Release Plugin(我们用来管理工件的发布)似乎需要一个" Next Development Version"。但对我们来说,这通常没有意义;发布的工件没有开发版本 - 它已经发布了,我们只想修补它。值得注意的是,我们的补丁版本与任何其他版本一样,也存储在新的分支中。下图有助于说明到目前为止我所描述的模型。

--- 0.1.0-SNAPSHOT --- 1.1.0-SNAPSHOT (Development version; trunk)
                    \ 
                     \
           1.0.0 (Release Version)
                       \ 
                        \---1.0.1 (A patch to a released version)

发布插件的字段截图可能也会有所帮助:Screenshot of Artifactory Release Plugin

可以说,尝试不指定新的dev分支会导致一堆错误。但是,无论我放入现有的分支版本,新的分支版本,还是将其留空,我总会收到相同的错误消息:

错误日志

19:40:48.188 [RELEASE] Pushing branch 'RELEASE-BRANCH-dummy-1.7.0' to 'git@bitbucket.org:Inc/dummy.git'
19:40:48.694 ERROR: [RELEASE] Failed on build completion
19:40:48.695 java.io.IOException: Failed to push: Command "git push git@bitbucket.org:Inc/dummy.git refs/heads/RELEASE-BRANCH-dummy-1.7.0" returned status code 1:
19:40:48.695 stdout: 
19:40:48.695 stderr: To git@bitbucket.org:Inc/dummy.git
19:40:48.695  ! [rejected]        RELEASE-BRANCH-dummy-1.7.0 -> RELEASE-BRANCH-dummy-1.7.0 (non-fast-forward)
19:40:48.695 error: failed to push some refs to 'git@bitbucket.org:Inc/dummy.git'
19:40:48.695 hint: Updates were rejected because the tip of your current branch is behind
19:40:48.695 hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
19:40:48.695 hint: before pushing again.
19:40:48.695 hint: See the 'Note about fast-forwards' in 'git push --help' for details.

帮助解决我们的问题,或者更好的方法来处理此过程。

编辑:更新

斯拉夫的提示帮助我意识到当我尝试从发布分支指定新的开发版本时会出现问题。该插件尝试创建一个新分支,但在上面的例子中,分支已经存在。但是,在其他情况下,由于我的帖子中列出的原因,我不想要新的开发版本。所以这是双输的。

1 个答案:

答案 0 :(得分:1)

如果没有修改Artifactory Release插件的源代码并根据您自己的要求重建它,那么您唯一的另一个选择就是用脚本语言编写自定义分支。

插件问题在于它们通常限制某个流程。

BTW FWIW,在我们的设置中,“补丁”被提交给发布分支(没有创建特殊的“修补”分支)。标签用于跟踪已发布的版本和分支。