Hudson / Jenkins发布插件:发布版本问题

时间:2017-01-13 16:49:26

标签: jenkins jenkins-plugins hudson maven-release-plugin hudson-plugins

我正在建立一个新的哈德森项目,偶然发现了release plugin。你基本上有两种可能性:

  1. 不要定义字符串参数releaseVersiondevelopmentVersion - 然后maven发布插件使用默认值。 (例如1.0.0-SNAPSHOT(svn) - > 1.0.0版本将被发布(标签在svn中),1.0.1-SNAPSHOT将成为下一个开发版本。)在大多数情况下,这对我们来说已经足够了。但是在某些情况下(例如,应该建立主要版本),它还不够。
  2. 定义这两个值(cp。图像,红色标记)但是你总是需要填充它们并且它们是空的!显然不可能使用默认值或将它们留空。这就是为什么有人可以像脚本等那样添加preReleasepostRelease动作的情况。但是如果插件稍微更聪明,那么就不需要imho了。
  3. enter image description here

    所以我的问题是:有没有办法不使用发布前/发布脚本来获取想要的行为?

    所需行为是:字段releaseVersiondevelopmentVersion应预先填充实际版本/版本+ 1。如果这是不可能的,那么将这些字段留空也是足够的(如果它触发maven构建插件的默认行为)如果这些字段现在为空,则将使用空参数调用maven,从而失败。

    (在不同的项目中,我使用jenkins与artifactory release插件结合使用非常简单 - 如果应该发布一个版本,则会显示列出所有版本的页面。例如,如果主要版本应该构建用户可以很容易地改变数字。)

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,但对我而言,解决方案可能会在您的情况下产生一些重大开销。

我的设置中的作业不是手动创建的,而是使用Job DSL Plugin生成的。情况就是这样,因为存在许多针对不同工件的类似作业,并且生成往往会阻止来自不同用户的雪花作业。

我的解决方案看起来像这样:

  1. 对于生成中的每个作业:查询工件存储库以查找作业创建的工件的最新版本(对我来说是Sonatype Nexus)
  2. 生成要向用户显示的版本(只需添加次要内容等)
  3. 将版本作为默认文本应用于Job DSL中的字符串参数(如图here所示)
  4. 在设定的时间间隔内重新生成一代,因此作业最有可能显示正确的版本
  5. 这对我来说很容易实现,因为Job DSL已经到位并且每个工件的名称都是作业名称的一部分。它远非完美,因为可能有时间点没有显示正确的版本(在新版本发布之后没有重新创建作业)。

    另一种选择是为此任务创建自定义Jenkins插件,但它可能会带来更多的开销。

    PS:如果此解决方案是您想尝试的路线,我可以尝试包含更多代码示例。