gpt4 book ai didi

Jenkins 跨作业共享构建号?

转载 作者:行者123 更新时间:2023-12-02 13:00:28 26 4
gpt4 key购买 nike

我们目前正在开发一个具有多个并行开发流的应用程序。我们有一个 Jenkins 工作来构建每个流/版本。因此,Job-A 可能正在构建版本 1.1,而 Job-B 可能正在构建版本 1.2。

我认为最好在每个版本之间共享内部版本号,这样如果作业 A 以内部版本号 125 运行,如果作业 B 接下来运行,它将以内部版本号 126 运行。我认为这个的原因最好的策略是,这是一个 Android 应用程序,每次提交到 Google Play 时都需要递增其 versionCode 参数。我们使用 Jenkins 内部版本号作为 versionCode 值。

有没有办法配置 Jenkins 在多个作业之间共享内部版本号?或者,有没有人想出更好的解决方案来解决这个问题?

最佳答案

简短回答使用时间戳或手动设置版本代码,在不需要时将内容保留在 CI 服务器之外。或者强制 Jenkins 内部版本号。

长答案 我喜欢 Jenkins 负责自动化一些也可以独立工作的东西。因此,如果我不需要 Jenkins 进行设置,我也很高兴。

此外,如果您使用 2 个分支,您可能会以随机顺序提交给它们。试图以某种方式将这些工作捆绑在一起似乎是一个不必要的麻烦,以后可能会成为问题。例如。如果 2.0 版本现在已经构建并进行了 QA,只是等待适当的发布日期和营销团队完成其工作,但之后您需要发布 v1.1.1 快速修复程序怎么办?根据您选择的解决方案,您可能需要触发一些重建以强制版本代码碰撞。新构建,新质量检查?

您对 versionCode 的真正要求是它高于以前的版本。

来自http://developer.android.com/guide/topics/manifest/manifest-element.html

android:versionCode An internal version number.

This number is usedonly to determine whether one version is more recent than another,with higher numbers indicating more recent versions. This is not theversion number shown to users; that number is set by the versionNameattribute. The value must be set as an integer, such as "100". You candefine it however you want, as long as each successive version has ahigher number. For example, it could be a build number. Or you couldtranslate a version number in "x.y" format to an integer by encodingthe "x" and "y" separately in the lower and upper 16 bits. Or youcould simply increase the number by one each time a new version isreleased.

这里有两个解决方案:

  • 手动碰撞。在我们的项目中,我使用一些 sed 脚本在发布前自动更新内部版本号。由于我还需要手动更改一些内容,例如 versionName 前缀、在开发过程中禁用/启用 Debug模式等,因此我手动运行凹凸版本脚本,以便分支中的下一个构建具有适当的版本和 versionCode 编号。注意我在 versionName 中使用 jenkins 内部版本号。如果您为 v2 选择足够大的版本代码,此解决方案可以防止您遇到 v2 准备好后需要退出 1.1.1 的问题。

  • 另一个更自动化但仍然简单的解决方案是使用时间戳之外的东西。 YYMMDDHHSS 的格式足够好,是一个整数(< 2^31),并且很可能您要发布的任何版本都将在前一个版本之后准备好,而不是在同一分钟内准备好。所以基本上当你构建 v1.1 时,它会得到例如1308131600,如果你在 v1.2 获得 1308131601 后一分钟构建它。(这显然不能帮助你应对 v1.1.1/v2 场景)

以下是一些脚本生成/更新版本代码 Auto increment version code in Android app 的想法.

Jenkins 方式

现在,如果您仍然希望 Jenkins 负责,一个简单的解决方案是使用类似 https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin 的内容并将每个分支作业配置为具有足够大的前缀以确保不会发生冲突。设置仍然非常简单。

例如

  • 分支 1.1 为 110000
  • 分支 1.2 为 120000

关于Jenkins 跨作业共享构建号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18195731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com