所有项目

时间:2017-02-22 15:43:44

标签: jenkins jenkins-pipeline

例如:

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

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

我想要的是这样的:

stage {
 ...}
timestamps {
    <include rest of stages definied in projects>
}
stage {
... }

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

所以项目中的Jenkinsfile必须:

  • 从存储库加载模板
  • 将模板放在模板Jenkinsfile
  • 的中间

2 个答案:

答案 0 :(得分:9)

您可以使用:

答案 1 :(得分:9)

正如我经常说的那样,

  

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

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

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

幸运的是,this concept is fully supported in Jenkinsfiles。我强烈推荐它用于您的用例。从上面给出的链接中的引言段落:

  

由于管道被用于组织中越来越多的项目,   可能会出现常见的模式。分享通常很有用   各个项目之间的管道部分,以减少冗余和   保持代码“干”。

     

Pipeline支持创建“共享库”   在外部源代码控制存储库中定义并加载到   现有的管道。

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