【问题标题】:Where to store Jenkinsfile for downstream pipeline without its own repo在没有自己的仓库的情况下为下游管道存储 Jenkinsfile 的位置
【发布时间】:2020-02-26 21:16:06
【问题描述】:

我正在为我们的构建设置 Jenkins 管道作业。我们之前使用 Freestyle 作业来构建我们的每个存储库,并在打包和部署阶段使用各种额外的手动触发作业。

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

  • repo A/Jenkinsfile - 流水线 A - 构建、运行单元测试并生成 神器
  • repo B/Jenkinsfile - 管道 B - 构建、运行单元测试和 产生工件

每当管道 A 或 B 完成时,我都想运行管道 C。

  • 管道 C 应采用最新的 A 和 B 管道的工件,将它们打包为 docker 映像,运行集成测试,部署到暂存环境。

我应该将管道 C 的 Jenkinsfile 存储在哪里,因为它没有自己的源代码库?

对我来说,这在逻辑上是作为 A 和 B 下游的单独管道,所以假设它属于单独的 Jenkinsfile,但那将在源代码控制中去哪里。澄清一下,我希望将所有管道文件置于源代码控制之下。

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

  • 流水线A(全流水线)

    • 构建
    • 单元测试
    • 神器
    • (获取最新的B神器)
    • 集成测试
    • 部署到暂存
  • 管道 B(使用完整管道的简单构建)

    • 构建
    • 单元测试
    • 神器
    • 触发管道 A,将所有内容都跳过到集成测试步骤(可能在那些查看构建触发器的阶段使用 when 块?)

我可以找到有关构建或触发另一个管道的资源,如下所示:https://metamorphant.de/blog/posts/2019-03-11-jenkins-101-downstream-projects/ 但没有关于在 Jenkins Pipeline 中构建上述依赖项和管道的信息。

【问题讨论】:

  • 管道 C 可以位于任何一个存储库中,您只需在作业 C 的配置中指向此 Jenkinsfile。
  • @DibakarAditya 这就是我要尝试的。我不是 100% 相信这是它的合乎逻辑的地方,但这似乎比创建一个新的 repo/project 只是为了存储单个 Pipeline C 文件更好。也许一旦我完成了一整套集成测试,我会将它们和 Pipeline C 文件放在一个 repo 中。

标签: jenkins build jenkins-pipeline artifact jenkins-declarative-pipeline


【解决方案1】:

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

【讨论】:

  • 你说得对,这可以解决问题,但你的回答让我意识到我并没有说我希望我的所有管道文件都处于源代码控制之下。我现在已经编辑了我的答案以明确说明这一点。
猜你喜欢
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2013-08-05
  • 2015-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多