我想显示当前构建与 Jenkins 上已知的最新成功构建之间的非代码差异。
通过非代码差异,我的意思是:
- 环境变量(包括詹金斯参数((
set
(,也许带有一些过滤器 - 系统工具包版本 (
rpm -qa | sort
( - 安装的 python 软件包版本 (
pip freeze
(
虽然我知道如何将这些文件保存和存档为构建的一部分,但唯一不清楚的部分是如何生成有关当前构建和上次成功构建之间发现的差异的差异/更改报告。
请注意,我正在寻找一个与管道兼容的解决方案,理想情况下,我更愿意在 Jenkins UI 上轻松访问此报告,就像我们目前使用 SCM 更改日志一样。
或者改写一下,如何创建构建清单并将其与最后一个已知的成功清单进行比较?如果有人知道可以轻松用于组合所有这些信息的标准清单格式,那就太好了。
你总是问最多的球手问题,干得不错。 :)
我们总是尝试将尽可能多的内容推送到代码中,因为您在非代码配置中描述的缺乏可追溯性。 我们从使用 JenkinsFiles 开始,因此我们在那里捕获了很多构建配置(以一种仍然显示源代码管理更改的方式(。 对于系统工具包,我们通过使用 Docker 并从 Docker Base 的特定标记继承来将其引入应用程序图像。因此,即使我们想更改系统包甚至 Python 版本,例如,这也会表现为应用程序 Docker 文件中 FROM 行的更新。甚至环境变量也可以由 docker 进行微观管理,以解决您的另一个示例。关于我们如何在 https://jenkins.io/blog/2017/07/13/speaker-blog-rosetta-stone/上回避您的问题的更多详细信息。
总会有一些东西很难作为代码捕获,因此构建仍然会失败并且偶尔难以调试,所以我希望有人能为您的问题提供一个干净的解决方案。