Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 所有项目的模板文件_Jenkins_Jenkins Pipeline - Fatal编程技术网

Jenkins 所有项目的模板文件

Jenkins 所有项目的模板文件,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,例如: 我有30个多分支Git项目。所有项目都有自己的文件。突然我发现了一个很酷的Jenkins插件,我想为所有项目添加它。在所有项目上这样做都很痛苦,这是一个很大的时间浪费 可以创建类似于Jenkinsfile的模板Jenkinsfile,类似于项目Jenkinsfile的包装器,或者类似于这样的模板Jenkinsfile,让我可以在1个位置而不是30个位置进行更改吗 我想要的是这样的东西: stage { ...} timestamps { <include rest of

例如:

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

可以创建类似于Jenkinsfile的模板Jenkinsfile,类似于项目Jenkinsfile的包装器,或者类似于这样的模板Jenkinsfile,让我可以在1个位置而不是30个位置进行更改吗

我想要的是这样的东西:

stage {
 ...}
timestamps {
    <include rest of stages definied in projects>
}
stage {
... }
阶段{
...}
时间戳{
}
舞台{
... }
模板文件,这是在一些回购是这样寻找的。所有的项目都有自己定义的阶段,这些阶段包含在模板JeNKNScript的中间,并在Project中定义。 因此,项目中的文件必须:

  • 从存储库加载模板
  • 在模板JeknsFiels
  • 中间放置阶段
您可以使用:

  • 委员会:

  • :

    在工作区中获取文件名并将其作为Groovy源文本运行

  • :

    通常,在不同的项目之间共享管道的一部分是很有用的,以减少冗余并保留代码“”

    Pipeline支持创建“共享库”,这些库可以在外部源代码管理存储库中定义并加载到现有管道中

  • 正如我常说的那样

    朋友不让朋友模板编码

    通常,我最后的办法是编写代码,然后生成更多的代码。此外,它在您的用例中没有用处

    实际上,你要问的是,“我有我想要在30个文件之间共享的代码”。当然,共享代码的最佳方式是创建一个共享库并从代码中使用它

    幸运的是。我强烈推荐将其用于您的用例。从上面给出的链接中的介绍段落:

    随着组织中越来越多的项目采用管道, 共同的模式可能会出现。通常,分享是有用的 不同项目之间的管道部分,以减少冗余和 保持代码“干燥”

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


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

    我想我可以利用它。我的想法是:在项目中将有Jenkinsfile,例如Jenkinsfile_项目。普通Jenkinsfile将使用共享库或configFile加载Jenkinsfile_模板。该模板将有一些字符,如%和使用bash脚本,我将替换为Jenkinsfile_项目。我将把这个文件放在构建文件夹中。之后,构建的Jenkins文件将通过load命令加载并运行。相关示例
    node {
      ...
      configFileProvider(
        [configFile(fileId: 'jenkinsfile-template', ...)]) {
          ...
        }
      ...
    }