0

我工作的公司正在评估 jenkins 2.71,特别是管道蓝海插件。我们已经测试了GoCD,我们需要一种方法,就像在GoCD中一样,管道可以自动从其他 2 个管道获取工件(获取每个管道的最后一个成功结果),这里是我们的案例。

我们有这些初始管道(构建和运行测试),它们反映了 2 个项目:

  • 前端,~ 15 分钟
  • 后端,约 10 分钟

我创建了一个名为configure的管道(大约 1 分钟),例如一个名为customer-name的参数,它获取后端和前端文件并将它们放在一起,然后应用特定的客户特定配置和定制并生成可部署的工件。除了“客户名称”,我还可以并行化这项工作,一次为每个客户创建所有工件,在不同的目录中分开。

下一个管道是将它们部署在为每个客户分开的不同测试服务器上。这也可能是同一个配置管道的一部分,我们仍然需要看看如何在詹金斯中把东西放在一起......

理想情况下,我需要将管道配置为在每个前端或后端成功后自动(或按需)触发,并将这两个管道中最后成功的工件作为输入,但不仅仅是最后一次成功的构建,我们需要依赖 git分支名称

例如我们有:

后端分支:

  • 掌握
  • 发布/2017.2

前端分支:

  • 掌握
  • 发布/2017.2

在管道编辑器中,我找到了一个Build Triggers选项并将其设置如下:构建其他项目后构建>要观察的项目:前端,后端>仅当在我充满失败的测试环境中构建稳定或更好时才检查触发器甚至触发如果构建不稳定

进一步搜索,我找到了Copy Artifact Plugin

但现在最大的问题是,如何从这些管道中获取具有相同 git 分支名称的最后成功的工件

因为我们不想将“release/2017.2”的后端构建与前端“master”混合在一起,所以它必须找到具有相同关系或参数或任何您想称呼它的最后一个成功构建,在我们的例子中关联是 git 分支名称。

有可能实现这一目标吗?如果是,如何?

复制工件插件似乎适用于自由式项目。它会在管道中工作吗?这也是一个担心...

谢谢

4

1 回答 1

0

是的,Copy Artifact 插件在自由式和流水线项目中都可以使用;管道使用copyArtifact我在评论中引用的函数。请注意,如果您转到 Pipeline Syntax 链接,它有点隐藏:您必须首先"step: General Build Step"从下拉列表中选择,然后它会为您提供 Copy Artifact 管道命令生成器。

我将假设您的项目frontendbackend项目构建为多分支管道,因为这可能最容易维护,这样您就不必为每个版本都创建新项目。您可以通过引用从其他项目中引用这些项目<project name>/<branch name>(有时我不得不用替换替换/%2f我认为主要是在自由式项目上)。然后,您可以将configure项目设置为参数化构建(管道或自由式),例如使用PROJECT_BRANCH_NAME. 然后在您的前端/后端项目管道脚本中输入以下内容以触发configure项目的构建

build job: 'configure', parameters: [[$class: 'StringParameterValue', name: 'PROJECT_BRANCH_NAME', value: ${env.BRANCH_NAME}]]

然后,您应该能够在复制工件时让您的configure项目引用frontend/%PROJECT_BRANCH_NAME%and backend/%PROJECT_BRANCH_NAME%(或${env.PROJECT_BRANCH_NAME}在管道脚本中)。

另外,您是否有特殊原因要专门评估 Jenkins 2.7?2.7 现在已经一岁了,从那时起已经有一些新的 LTS 版本。除非您知道有特定原因需要 2.7,否则我建议您保持合理的最新状态。

于 2017-07-24T16:18:28.033 回答