Tim*_*Tim 27 jenkins jenkins-workflow jenkins-pipeline
我正在考虑使用最近詹金斯管道脚本,一个问题是,我没有想出一个聪明的方法来创建可重用的内部代码utils的,想象一下,我有一个共同的功能helloworld将通过大量的管道作业的使用,所以我希望创建一个utils.jar可以将其注入作业类路径.
我注意到Jenkins与全局库有类似的概念,但我对这个插件的关注:
既然是一个插件,所以我们需要安装/通过詹金斯插件管理器升级,那么它可能需要重新启动以应用更改,这不是我希望看到的,因为utils的可能更改,添加往常一样,我们希望它可能是立即可用.
其次,它是官方jenkins共享lib,我不想(或者他们不会申请我们)将私人代码放入jenkins repo.
有什么好主意吗?
Ste*_*ing 30
该共享库(文档),可以使你的代码可以访问到所有管道的脚本.您不必为此构建插件,也不必重新启动Jenkins.
例如,这是我的库,这是一个调用这个常用函数的Jenkins文件.
编辑(2月2017):
库可以通过詹金斯的内部的Git服务器进行访问,或通过其他方式部署(例如,通过厨师)在(仍然可能,但非常不方便).workflow-lib/该目录内詹金斯用户的主目录.
可以通过以下方式配置全局库:
@Library('github.com/...')注释Jenkinsfile.第一个和最后一个方法的组合将是一个没有明确加载的共享库,那么只有在使用其名称要求Jenkinsfile:@Library('mysharedlib').
Pom*_*m12 10
根据您计划重用代码的频率,您还可以加载一个函数(或一组函数)作为另一个管道的一部分.
{
// ...your pipeline code...
git 'http://urlToYourGit/projectContainingYourScript'
pipeline = load 'global-functions.groovy'
pipeline.helloworld() // Call one of your defined function
// ...some other pipeline code...
}
Run Code Online (Sandbox Code Playgroud)
与StephenKing相比,这个解决方案可能看起来有点麻烦,但我喜欢这个解决方案的是我的全局函数都被提交给Git,任何人都可以轻松地修改它们,而不需要(几乎)任何Jenkins的知识,只是Groovy的基础知识.
在Groovy脚本中load,请确保return this在最后添加.这将允许您稍后拨打电话.否则,在设置时pipeline = load global-functions.groovy,变量将设置为null.
| 归档时间: |
|
| 查看次数: |
16961 次 |
| 最近记录: |