在何处存储下游管道的Jenkins文件(无自身回购协议)

在何处存储下游管道的Jenkins文件(无自身回购协议),jenkins,build,jenkins-pipeline,artifact,jenkins-declarative-pipeline,Jenkins,Build,Jenkins Pipeline,Artifact,Jenkins Declarative Pipeline,我正在为我们的构建建立Jenkins管道作业。我们以前使用自由式作业来构建每个回购协议,在打包和部署阶段使用各种额外的手动触发作业 到目前为止,我们有以下管道设置: repo A/Jenkinsfile-管道A-构建、运行单元测试和生成 人工制品 repo B/Jenkinsfile-管道B-构建、运行单元测试和 产生伪影 无论何时管道A或B完成,我都希望运行管道C 管道C应该获取最新的A和B管道的工件,将它们打包为docker映像,运行集成测试,部署到临时环境 管道C的Jenkins文

我正在为我们的构建建立Jenkins管道作业。我们以前使用自由式作业来构建每个回购协议,在打包和部署阶段使用各种额外的手动触发作业

到目前为止,我们有以下管道设置:

  • repo A/Jenkinsfile-管道A-构建、运行单元测试和生成 人工制品
  • repo B/Jenkinsfile-管道B-构建、运行单元测试和 产生伪影
无论何时管道A或B完成,我都希望运行管道C

  • 管道C应该获取最新的A和B管道的工件,将它们打包为docker映像,运行集成测试,部署到临时环境
管道C的Jenkins文件没有自己的源repo,我应该存储在哪里?

对我来说,这在逻辑上是作为一个单独的管道,位于a和B的下游,所以假设它属于一个单独的Jenkins文件,但在源代码管理中,它会去哪里呢。为了澄清,我希望我的所有管道文件都在源代码控制下

或者,我是否应该尝试在一个父管道中定义整个管道(包括集成等),从另一个管道触发构建部分时跳过构建部分?将另一个作为简单的构建。比如说

  • 管道A(完整管道)

    • 建造
    • 单元测试
    • 人工制品
    • (获取最新的B工件)
    • 集成测试
    • 部署到暂存
  • 管道B(然后使用完整管道的简单构建)

    • 建造
    • 单元测试
    • 人工制品
    • 触发器管道A,跳过集成测试步骤之前的所有内容(可能在查看构建触发器的那些阶段上使用
      块时使用
我可以找到关于构建或触发一条管道与另一条管道的资源,如下所示:
但是没有关于在Jenkins Pipeline中构建上述依赖项和管道的信息。

当您在Jenkins中定义“新项”并选择“管道”项目类型时,当管道默认为“管道脚本”时,您会得到一个表单。
如果您有一个Jenkins文件,那么您可以切换到使用“Pipeline script from SCM”,并将其设置为指向Jenkins文件的GIT位置,但如果将其保留为默认的“Pipeline script”,则可以将管道的内容放在表单中,并将其保存在作业的config.xml文件中,无需将其存储在源代码管理中。

管道C可以位于任何一个存储库中,您只需在作业C的配置中指向此Jenkins文件。@DibakarAditya这就是我要尝试的。我不是100%相信这是它的逻辑位置,但是这似乎比创建一个新的repo/项目来存储单个管道C文件要好。也许一旦我有了一套完整的集成测试,我会把它们和管道C文件放在一个repo中。你是对的,这会解决问题,但你的回答让我意识到我没有声明我希望所有管道文件都在源代码控制下。我现在已经编辑了我的答案,明确指出这一点。