2017-02-22 826 views
8

例如:所有项目的模板Jenkinsfile

我有30个多分支Git项目。所有项目都有自己的Jenkins文件。突然间,我发现了一个很酷的Jenkins插件,我想为所有项目添加插件。在所有项目上做这件事都很痛苦,这是对时间的极大浪费。

是否有可能创建一个像模板Jenkinsfile这样的项目,它将像项目Jenkinsfile的包装器或类似的东西,让我可以做1个地方而不是30个地方的变化?

我要的是这样的事情:

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

模板文件,该文件是在一些回购是寻找这样的。所有项目都有自己的阶段定义,它们包含在模板Jenkinsfile的中间并在项目中定义。

所以Jenkinsfile项目必须:在模板中从仓库

  • 负载模板
  • 放阶段Jenkinsfile
+0

相关示例[Jenkins管道模板](https://stackoverflow.com/a/44070069/542251) – Liam

回答

4

你可以使用:

+0

我想我可以使用它。我的想法: 在项目中会有Jenkinsfile和Jenkinsfile_project。普通Jenkinsfile将使用Shared Libraries或configFile加载Jenkinsfile_template。该模板将具有一些字符,如%和使用bash脚本,我将用Jenkinsfile_project替换它。合并的Jenkinsfile我将放入生成文件夹。在这之后,Jenkinsfile将通过加载命令加载并运行。 – Kapitalny

5

正如我常说的,

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

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

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

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

由于组织中越来越多的项目采用管道,因此可能会出现 常见模式。通常在各种项目之间共享Pipeline的 部分以减少冗余是有用的,并且 保持代码“干燥”。

流水线支持创建可在外部源代码管理存储库中定义的 并加载到 现有管道中的“共享库”。

然后,只需更新库和使用它的所有Jenkinsfiles也将被更新。您可以为共享库创建版本,并且设置将更容易调试。