2

语境:

  • 在我的工作中,大多数开发人员都可以自由地为自己团队的项目编写自己的 Jenkinsfile。
  • 作为 Jenkins 管理员,我为开发人员提供了一个全局共享库。
  • 大多数项目都使用 v1 或 v2 或 v3 或此库的另一个版本,使用 idiom library("theSharedLib@v#")

问题:有没有办法让我找出哪个 Jenkinsfile 正在使用哪个版本的共享库,而无需实际查找所有这些 Jenkinsfile 文件(在尽可能多的 git repos 中的 50 多个文件)?

我会看到最好的是一些机制,它在加载库时写入(写入 Jenkins 主机或数据库中的文件)哪个项目/Jenkinsfile 正在使用哪个版本。

一种可能的解决方案是向库中的每个函数添加一些代码,这些函数实际上会执行此报告。然后我可以看到谁使用了哪个功能。有更好的解决方案吗?

4

1 回答 1

0

我写了https://github.com/CiscoDevNet/es-logger从 Jenkins 那里收集诸如此类的信息。它有一个插件,可以针对已完成作业的控制台日志运行正则表达式,然后可以将事件发布到弹性搜索。

詹金斯在日志开始时有用地发布库负载,例如:

Loading library sharedLib@version

所以一个简单的正则表达式

"^Loading library\S+(?P<library_name>.*?)@(?P<library_version>.*?)\S+$"

添加到 console_log_events 插件将在弹性搜索中为每个用法和每个版本生成事件。

于 2020-09-16T09:37:17.680 回答