一尘不染

使用来自同一个git分支名称关联的2个项目的工件的管道

jenkins

我工作的公司正在评估jenkins 2.71,尤其是 管道Blue Ocean
插件。我们已经还测试GoCD,我们需要,如 GoCD
,用于一条管道向其他2个管道自动抓取工件的方式(以他们每个人的最后成功的结果),我们这里的情况。

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

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

我创建了一个名为 configure (约1分钟)的管道,例如使用一个名为 customer-name
的参数,该参数将后端和前端文件放在一起,然后应用特定于客户的特定配置和定制,并生成可部署的工件。除了“客户名”之外,我还可以并行化此作业,以立即为每个客户创建所有工件,并在不同目录中进行分隔。

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

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

例如,我们有:

后端分支:

  • 版本/2017.2

前端分支:

  • 版本/2017.2

在管道编辑器,我发现了一个 构建触发 选项,设置如下: 其它项目的构建构建后 > 项目看 :前端,后端>检查 触发只有建立稳定
或更好的在我的测试环境中充满了失败的 触发连如果构建不稳定

进一步搜索后,我发现了复制工件插件

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

因为我们不想将后端版本“ release / 2017.2”与前端“
master”混合使用,所以它必须找到具有相同关系或参数或您要称呼的最后成功的版本,在本例中为association是git分支名称。

有可能实现这一目标吗?如果是,怎么办?

复制工件插件似乎可以在自由式项目中使用。它可以在管道中工作吗?这也是一个问题…

谢谢


阅读 369

收藏
2020-07-25

共1个答案

一尘不染

是的,Copy
Artifact插件可以在自由式项目和管道项目中使用;管道使用copyArtifact我在评论中引用的功能。请注意,如果转到“管道语法”链接,则它是隐藏的:您必须首先"step: General Build Step"从下拉列表中进行选择,然后它将为您提供“复制工件”管道命令构建器。

我将假设您的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%backend/%PROJECT_BRANCH_NAME%(或${env.PROJECT_BRANCH_NAME}在管道脚本中)。

另外,您为什么要专门评估Jenkins
2.7?2.7已有1年历史了,此后又发布了一些LTS新版本。我建议保持合理的最新状态,除非您知道有需要2.7的特定原因。

2020-07-25