- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们目前正在开发一个具有多个并行开发流的应用程序。我们有一个 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 的内容并将每个分支作业配置为具有足够大的前缀以确保不会发生冲突。设置仍然非常简单。
例如
关于Jenkins 跨作业共享构建号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18195731/
我想创建一个 Jenkins 工作来启动其他 Jenkins 工作。这很容易,因为 Jenkins 模板项目插件允许我们创建“使用另一个项目的构建器”类型的构建步骤。然而,让我的情况更难的是我必须在其
我有一个简单的Windows批处理命令(robocopy),该命令返回零错误,但在Jenkins中始终被标记为失败。我想知道为什么? D:\ Jenkins \ jobs \ Jenkins Conf
我有两个 Jenkins 工作 - Jenkins Job1 和 Jenkins Job2。 我有多个应用程序并使用相同的 Jenkins 来构建应用程序。如果相同的应用程序在 Jenkins 中运行
我找不到这两者之间的区别。这些是相同的还是不同的。 最佳答案 第一个区别是支持(正如其他人所提到的)。 CloudBees 提供企业级支持以及经过全面审查和测试的 Jenkins 版本,该版本将在各种
是否可以指定在多次触发作业(A)的情况下,将先前的作业从队列中删除,并且如果有足够的可用插槽,则仅将最新的作业留在队列中或启动? 提前致谢! 最佳答案 您可以使用通过Groovy Script Plu
我有2位Jenkins主持人,并且希望First Jenkins在第一个结果的基础上基于“SUCCESS”触发远程Jenkins上的工作。 我看过各种插件,但它们似乎都表明一个Jenkins主机,可以
我的 jenkinsfile 有几个参数,每次我更新参数(例如删除或添加新输入)并将更改提交到我的 SCM 时,我没有在 jenkins 中看到相应更新的作业输入屏幕,我必须运行执行,取消它,然后查看
有没有办法在构建完成后触发相同的工作。我有一项工作需要运行,直到我手动中止它。有没有办法做到这一点? 最佳答案 最简单的方法是添加一个构建相同项目的后期构建步骤。将“构建后操作”-“构建其他项目”-“
我在 Linux 家中的特定用户下有工作/.jenkins 文件夹。我想与另一个用户一起启动 Jenkins,但重新使用另一个用户的 .jenkins 文件夹。我怎样才能做到这一点? Jenkins
我是 Jenkins 的新手,我不确定这是否可行,但我想设置一个 Web 界面,人们可以在其中单击“开始作业”,这将告诉 Jenkins 开始特定的构建作业。 Jenkins 是否有允许此类操作的网络
如何获取 Jenkins 凭证变量,即“mysqlpassword”,可供 Jenkins 声明性管道的所有阶段访问? 下面的代码片段工作正常并打印我的凭据。 node { stage('Gett
如何获取 Jenkins 凭证变量,即“mysqlpassword”,可供 Jenkins 声明性管道的所有阶段访问? 下面的代码片段工作正常并打印我的凭据。 node { stage('Gett
如何将构建参数从一个项目传递到另一个项目? 我们在 Jenkins 用户界面中是否有任何配置,可以在完成一个构建项目后将构建参数传递给另一个项目? 我能够触发另一个项目,但无法传递构建参数。我们是否有
我正在 Jenkins 中构建一个项目,并希望在它之后立即启动测试,请稍候 直到测试完成,然后运行另一个作业来分析结果。测试系统是一个封闭的系统(我不能修改它)所以为了检查测试是否完成我需要每 X 秒
我创建了一个测试 jenkins 作业管道。此作业具有字符串参数 - 'testVar' Jenkins文件代码: println("env.TESTVAR=" + env.TESTVAR) prin
我的 Jenkins 工作“构建”配置有 3 执行 shell - 构建任务 2 构建后操作 有没有办法获取每个构建任务和构建后操作的运行时间? 最佳答案 不直接,这就是为什么: 我使用 a Jenk
是否有任何适用于 Jenkins 的插件可以为 Jenkins 提供键值存储选项?功能接近的插件是凭据插件。目标是拥有一个存储全局配置参数的插件,并且此参数可用于 Jenkins 作业。 最佳答案 转
默认情况下,Jenkins 是否会保留每个构建中生成的所有构建和工件。或者它会在一段时间后删除它们。我知道我可以配置“丢弃旧版本”选项,但我想知道 Jenkins 的默认行为。 最佳答案 默认是保留所
Jenkins 构建中的每个文件参数“帮助文本”, Accepts a file submission from a browser as a build parameter. The uploade
情况:我在我的虚拟服务器上安装了 Jenkins 并设置了一个“自由式管道”。我通过 webhook push 将它连接到我的 github,它可以工作(当我推送到存储库时,在 jenkins 中启动
我是一名优秀的程序员,十分优秀!