【问题标题】:Hudson / Jenkins release plugin: release version issuesHudson / Jenkins 发布插件:发布版本问题
【发布时间】:2017-05-29 02:52:53
【问题描述】:

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

  1. 不要定义字符串参数releaseVersiondevelopmentVersion - 然后maven 发布插件使用默认值。 (例如 1.0.0-SNAPSHOT (svn) -> 1.0.0 版本将发布(svn 中的标记),1.0.1-SNAPSHOT 将是下一个开发版本。)在大多数情况下,这对我们来说已经足够了。但是在某些情况下(例如,应该构建一个主要版本)这还不够。
  2. 定义这两个值(cp. 图像,红色标记),但你总是必须填充它们,它们是空的!显然不可能使用默认值或将它们留空。这就是为什么有可能添加preReleasepostRelease 脚​​本等操作。但是,如果插件稍微更智能,恕我直言。

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

想要的行为是:字段releaseVersiondevelopmentVersion 应预填充实际版本/版本+1。如果这是不可能的,那么将这些字段留空也足够了(如果这会触发 maven 构建插件的默认行为)如果这些字段现在是空白的,maven 将使用空参数调用并因此失败。

(在不同的项目中,我将 jenkins 与 artifactory 发布插件结合使用,这真的很容易 - 如果应该发布一个版本,则会显示一个页面,其中列出了所有版本。如果例如应该构建一个主要版本,用户可以轻松更改数字。)

【问题讨论】:

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


    【解决方案1】:

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

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

    我的解决方案如下所示:

    1. 对于生成中的每个作业:查询您的工件存储库以获取由作业创建的工件的最新版本(对我来说是 Sonatype Nexus)
    2. 生成要向用户显示的版本(只需添加次要版本等)
    3. 将版本作为默认文本应用到 Job DSL 中的字符串参数(如图所示 here
    4. 在设定的时间间隔内重新运行生成,因此作业最有可能显示正确的版本

    这对我来说很容易实现,因为 Job DSL 已经到位,并且每个工件的名称都是作业名称的一部分。它远非完美,因为可能存在未显示正确版本的时间点(在未重新运行作业创建的新版本之后)。

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

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

    【讨论】:

    • 感谢您的建议,但是我无法安装新插件,您的解决方案类似于在构建过程之前/之后运行脚本。在堆栈溢出时,我看到了一个 groovy 脚本,内部其他一些同事为此使用了 ant。我认为必须有没有这些步骤的解决方案...仍然感谢您指出第三种方式...
    • 我觉得没有别的办法了,除非你想往下把这个功能引入插件本身。我也很乐意找到更好的解决方案,因为它可以改善我目前的环境。
    猜你喜欢
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2013-04-02
    • 2011-03-31
    • 2011-06-18
    • 2014-09-12
    • 2015-02-12
    相关资源
    最近更新 更多