当前位置: 首页 > 面试题库 >

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

封飞
2023-03-14
问题内容

我工作的公司正在评估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分支名称。

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

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

谢谢


问题答案:

是的,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的特定原因。



 类似资料:
  • 问题内容: 我的git仓库有2个分支:master和development。我想要一个脚本,该脚本可以自动合并从开发到母版的所有更改。 我使用了Jenkins:Git插件会克隆存储库,然后运行以下脚本(“ version”变量是job参数): 我在测试存储库上尝试了它,但失败了: git merge -Xtheirs开发 CONFLICT(删除/修改):在develop中删除test.txt,在H

  • 所以我正在尝试为几个不同的项目制作一个多分支管道。 这些是基本要求: < li >每个客户有三项工作开发、准备和生产 < li >对于每个作业,从每个回购中提取相应的分支,并构建一个bot < li >如果作业正在使用的存储库中发生任何变化,则触发该环境的构建 所以这些要求非常简单。 但是还有第四个要求。我想弄清楚的是,我是否可以有一个回购,它可以保存我所有的Jenkins文件,然后构建另一个回购

  • 问题内容: class Match(Base): tablename = ‘matches’ 我需要编写一个查询,该查询将列和团队表连接在一起,以显示本地和客队的团队信息。 这返回 问题答案: 首先,您的代码不起作用的原因是因为SQLAlchemy不知道您是否要通过via或加入,因此您必须告诉它。此外,您需要加入两次,这使事情变得更加复杂。 使用以下命令可以更轻松地完成此操作: 并且将在相同的查询

  • 所以我有一个多项目设置,看起来像这样

  • 所以问题是:git分支名称中的最大字符数是多少?它取决于系统吗?是否可以在远程存储库(即Github)上拒绝的存储库中创建长分支名?

  • 我创建了两个laravel项目。一个用于后端连接数据库,第二个项目用于前端。然后我从projectone(后端项目)创建路由API,从数据库获取数据并传递到json。我希望projecttwo(前端)从api url获取数据。 我尝试以下代码: 我在第一个项目中的API路线: 我的第二个项目: 但是我得到500个内部服务器错误。 如何修复此问题?