例如:
我有30个多分支Git项目。所有项目都有自己的Jenkinsfile。突然间我找到了一个很酷的Jenkins插件,我想为所有项目添加它。这对所有项目都很痛苦,这是浪费时间。
是否有可能像模板Jenkinsfile那样创建一些想法,就像项目Jenkinsfile的包装器或类似的东西,这使我有可能在1个地方而不是30个地方进行更改?
我想要的是这样的:
stage {
...}
timestamps {
<include rest of stages definied in projects>
}
stage {
... }
某些仓库中的模板文件就是这样查找的。所有项目都定义了自己的阶段,这些阶段包含在模板Jenkinsfile的中间并在项目中定义。
所以项目中的Jenkinsfile必须:
答案 0 :(得分:9)
您可以使用:
Config File Provider Plugin using the configuration files in Jenkins Pipelines:
node {
...
configFileProvider(
[configFile(fileId: 'jenkinsfile-template', ...)]) {
...
}
...
}
load:
Evaluate a Groovy source file into the Pipeline script:
在工作区中取一个文件名并将其作为Groovy源文本运行。
通常,在各种项目之间共享部分管道以减少冗余并保持代码“DRY”非常有用。
Pipeline支持创建“共享库”,可以在外部源代码管理存储库中定义并加载到现有管道中。
答案 1 :(得分:9)
正如我经常说的那样,
朋友不要让朋友模板代码。
这通常是我编写代码的最后手段,代码反过来会生成更多代码。此外,它在您的用例中没用。
你有效地问的是,“我有想要在30 Jenkinsfiles之间分享的代码”。当然,共享代码的最佳方式是创建共享库并使用代码中的代码。
幸运的是,this concept is fully supported in Jenkinsfiles。我强烈推荐它用于您的用例。从上面给出的链接中的引言段落:
由于管道被用于组织中越来越多的项目, 可能会出现常见的模式。分享通常很有用 各个项目之间的管道部分,以减少冗余和 保持代码“干”。
Pipeline支持创建“共享库” 在外部源代码控制存储库中定义并加载到 现有的管道。
然后,只需更新库,所有使用它的Jenkins文件也将更新。您可以对共享库进行版本化,并且设置将更容易调试。