所有项目的模板Jenkinsfile

Kap*_*lny 12 jenkins jenkins-pipeline

例如:

我有30个multibranch Git项目.所有项目都有自己的Jenkinsfile.突然间我找到了一个很酷的Jenkins插件,我想为所有项目添加它.这对所有项目都很痛苦,这是一个很大的浪费时间.

是否有可能创建一些像模板Jenkinsfile这样的东西,就像项目Jenkinsfile的包装器或类似的东西,这使我有可能在1个地方而不是30个地方进行更改?

我想要的是这样的:

stage {
 ...}
timestamps {
    <include rest of stages definied in projects>
}
stage {
... }
Run Code Online (Sandbox Code Playgroud)

在某些回购中的模板文件是这样查找的.所有项目都定义了自己的阶段,这些阶段包含在模板Jenkinsfile的中间并在项目中定义.

所以项目中的Jenkinsfile必须:

  • 从存储库加载模板
  • 把阶段放在模板Jenkinsfile的中间

Ger*_*ica 9

你可以使用:


djh*_*987 9

正如我经常说的那样,

朋友不要让朋友模板代码.

这通常是我编写代码的最后手段,代码反过来会生成更多代码.此外,它在您的用例中没用.

你有效地问的是,"我有想要在30 Jenkinsfiles之间共享的代码".当然,共享代码的最佳方式是创建共享库并使用代码中的共享库.

幸运的是,Jenkinsfiles完全支持这个概念.我强烈推荐它用于您的用例.从上面给出的链接中的引言段落:

随着组织中越来越多的项目采用管道,可能会出现常见的模式.通常,在各种项目之间共享部分管道以减少冗余并使代码"干"是很有用的.

Pipeline支持创建"共享库",可以在外部源控制存储库中定义并加载到现有管道中.

然后,只需更新库,所有使用它的Jenkins文件也将更新.您可以对共享库进行版本化,并且设置将更容易调试.