jenkins - 有没有办法跟踪 Jenkins 中全局共享库的使用情况?
问题描述
语境:
- 在我的工作中,大多数开发人员都可以自由地为自己团队的项目编写自己的 Jenkinsfile。
- 作为 Jenkins 管理员,我为开发人员提供了一个全局共享库。
- 大多数项目都使用 v1 或 v2 或 v3 或此库的另一个版本,使用 idiom
library("theSharedLib@v#")
。
问题:有没有办法让我找出哪个 Jenkinsfile 正在使用哪个版本的共享库,而无需实际查找所有这些 Jenkinsfile 文件(在尽可能多的 git repos 中的 50 多个文件)?
我会看到最好的是一些机制,它在加载库时写入(写入 Jenkins 主机或数据库中的文件)哪个项目/Jenkinsfile 正在使用哪个版本。
一种可能的解决方案是向库中的每个函数添加一些代码,这些函数实际上会执行此报告。然后我可以看到谁使用了哪个功能。有更好的解决方案吗?
解决方案
我写了https://github.com/CiscoDevNet/es-logger从 Jenkins 那里收集诸如此类的信息。它有一个插件,可以针对已完成作业的控制台日志运行正则表达式,然后可以将事件发布到弹性搜索。
詹金斯在日志开始时有用地发布库负载,例如:
Loading library sharedLib@version
所以一个简单的正则表达式
"^Loading library\S+(?P<library_name>.*?)@(?P<library_version>.*?)\S+$"
添加到 console_log_events 插件将在弹性搜索中为每个用法和每个版本生成事件。
推荐阅读
- html - 使用 actionmailer 时如何根据设备类型或屏幕大小调整图像大小?
- angular - 如何使用打字稿比较不同格式的两个日期?
- javascript - 在将日期格式化为 unix 时间戳时,moment.js 忽略了语言环境设置
- python - 如何使用 python 和 opencv 将两个图像相减?
- javascript - 从 Node js/MongoDB 中的另一个文档中注入对象中的值
- azure - 如何将文件上传到 Azure Web Apps 虚拟目录?
- cmake - CMake 的 FindPkgConfig 连接路径
- javascript - 自定义 JS 影响表格格式
- java - 使用 Float.floatToIntBits() 然后 Integer.toBinaryString() 的结果令人困惑
- azure - 具有 SSIS 数据筛选的 Azure 数据湖