我最近正在考虑使用 Jenkins 管道脚本,一个问题是我没有找到一种明智的方法来创建内部可重用的 utils 代码,想象一下,我有一个通用函数helloworld
它将被很多管道作业使用,所以我希望创建一个utils.jar
可以将其注入到作业类路径中。
我注意到詹金斯有类似的概念全球图书馆 https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/master/README.md,但我对此插件的担忧:
由于它是一个插件,所以我们需要通过 jenkins 插件管理器安装/升级它,然后可能需要重新启动才能应用更改,这不是我想看到的,因为 utils 可能会更改,总是添加,我们希望它可以立即可用。
其次,它是官方的jenkins共享库,我不想(或者他们不会应用我们)将私有代码放入jenkins repo中。
有什么好主意吗?
The 共享库 https://github.com/jenkinsci/workflow-cps-global-lib-plugin (docs https://jenkins.io/doc/book/pipeline/shared-libraries/)允许你做your所有管道脚本都可以访问的代码。您不必为此构建插件,也不必重新启动 Jenkins。
例如。这是我的图书馆 https://github.com/TYPO3-infrastructure/jenkins-pipeline-global-library-chefci and 这是 Jenkinsfile https://github.com/TYPO3-cookbooks/site-chefcitypo3org/blob/master/Jenkinsfile调用这个通用函数。
编辑(2017 年 2 月):
该库可以通过 Jenkins 的内部 Git 服务器访问,或通过其他方式(例如通过 Chef)部署到workflow-lib/
目录内的jenkins用户的主目录。(仍然可以,但非常不方便)。
全局库可以通过以下方式进行配置:
- an
@Library('github.com/...')
中的注释Jenkinsfile
指向共享库存储库的 URL。
- 在 Jenkins 作业的文件夹级别配置。
- 在 Jenkins 配置中配置为全局库,其优点是代码trusted,即不受脚本安全性的约束。
第一个和最后一个方法的混合将是一个未显式加载的共享库,然后仅使用其名称来请求该共享库Jenkinsfile
: @Library('mysharedlib')
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)