持续集成 jenkins 的构建历史是否可以进行重复构建

kingper · 2024年08月02日 · 最后由 Pactortester 回复于 2024年08月05日 · 4832 次阅读

我们项目是通过 jenkins 构建安卓项目打包成 apk,然后 job 里面有非常多的参数需要按需选择或修改的。

请教下各位,jenkins 的构建历史,是否可以直接进行重新构建。因为 job 中的参数太多,改起来比较麻烦。或者说能够直接利用构建历史中的参数进行下一次构建。还是有什么其他可行的方案可以替代实现的。

最佳回复

有插件可以做到类似效果:https://plugins.jenkins.io/rebuild/(只是网上搜到,实际建议自己试验下)

另外,这个场景听起来,是暴露的参数过多,而实际构建其实只有少数几个典型参数组合场景?

如果是,建议改为两端式的 job。用历史构建的话,如果找不到对应的历史构建,还是解决不了这个问题。

job1:对应少数典型参数组合场景,只需要选少量参数即可满足大部分需求。job1 的实际逻辑是根据参数选择情况,对应推断出 job2 所需的参数,并触发 job2 运行。
job2:就是现在的 job,暴露所有参数,按需自定义。

共收到 8 条回复 时间 点赞

写个脚本,提取目标构建 ID 对应的参数并应用在本次构建

然而,如果你想要使用历史参数直接进行重新构建,Jenkins 并没有提供直接使用历史参数来触发重新构建的功能。通常,重新构建是通过手动触发、定时触发或者通过源代码更新触发的。但是,你可以使用 Jenkins 的 REST API 或脚本来获取构建参数,并使用这些参数来触发重新构建。例如,你可以编写一个脚本,查询特定构建的参数,然后使用这些参数来触发一个新的构建。

如果你需要在构建过程中使用历史参数,你可能需要在构建配置中设置参数,并在构建触发时指定这些参数。这样,每次构建都可以根据需要使用不同的参数,包括之前构建中使用过的参数。

在 Jenkins 中,你可以使用 “Rebuild Last” 功能来重新构建最近一次的构建。这个功能对于快速重复上一次构建操作非常有用。以下是如何在 Jenkins 中实现和使用这个功能的详细步骤:

前提条件
Jenkins 已安装并运行:确保你的 Jenkins 服务器已经正确安装并正在运行。
已配置的 Jenkins 项目:确保你已经有一个配置好的 Jenkins 项目。
安装 Rebuild 插件
首先,你需要安装 Rebuild 插件,该插件允许你重新构建最近一次的构建。

进入 Jenkins 管理页面:

在浏览器中打开你的 Jenkins 实例,通常是 http://your-jenkins-url/
导航到插件管理页面:

点击左侧菜单中的 Manage Jenkins。
选择 Manage Plugins。
安装 Rebuild 插件:

在 Available 标签页中搜索 Rebuild。
勾选 Rebuild 插件,然后点击 Install without restart 或 Download now and install after restart。
使用 Rebuild 功能
安装完插件后,你可以在项目页面中看到重新构建按钮。

导航到项目页面:

在 Jenkins 主页,点击你要重新构建的项目名称。
重新构建最后一次构建:

在项目页面,找到最近一次的构建记录。
你会看到一个新的按钮 Rebuild Last 或者在具体的构建详情页中有一个 Rebuild 按钮。
点击该按钮,系统将会重新执行最近一次的构建操作,包括所有参数和环境设置。

6楼 已删除

有插件可以做到类似效果:https://plugins.jenkins.io/rebuild/(只是网上搜到,实际建议自己试验下)

另外,这个场景听起来,是暴露的参数过多,而实际构建其实只有少数几个典型参数组合场景?

如果是,建议改为两端式的 job。用历史构建的话,如果找不到对应的历史构建,还是解决不了这个问题。

job1:对应少数典型参数组合场景,只需要选少量参数即可满足大部分需求。job1 的实际逻辑是根据参数选择情况,对应推断出 job2 所需的参数,并触发 job2 运行。
job2:就是现在的 job,暴露所有参数,按需自定义。

把参数存在数据库里面,然后通过 API 的方式调用 Jenkins 构建

我用的 jenkins 版本是:2.375,整理一下大家的方案:

  1. 通过脚本或 API 来获取历史构建参数,以使用在新的构建中(这个后面我再试试);
  2. 通过Rebuild插件,实现重新构建历史中的构建(已实践,可行)。

    a. 在插件管理中,你可以看到插件名称叫:Rebuilder
    b. 在插件说明中提到了:It will also allow the user to edit the parameters before rebuilding. 你在重新构建历史构建时,同时也可以修改参数。

另外 5 楼 @ 陈恒捷 的提议给了一个很好的思路,准备先按设备类型和业务功能拆分成多个 job。

感谢大家的方案和建议👍

API 可以实现,可以搜一下

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册