我们的团队有两个用于前端/后端系统的独立存储库。他们希望将这两个存储库一起部署到共享团队环境中。

我对JenkinsFile的理解是,它将仅在提交给它的存储库上运行,并且仅在SCM系统向Jenkins发送请求通知其新更改时才运行。

是否可以使两个单独的存储库中的JenkinsFile相互通信,以便在构建一个时也可以构建另一个,并且只有在两个都构建之后才可以部署它们? br />
我的主要目的是避免在Jenkins UI中创建单独的Jenkins作业。

评论

据我所知,Jenkinsfile可以触发一个构建,它可能是另一个项目构建,因此每个项目都可以在部署我认为之前触发另一个项目构建步骤。 (我在这里可能是错误的,不能与Jenkinsfile一起使用)

#1 楼

是的,对于Jenkinsfiles来说,这非常容易,不需要任何第三方插件或类似的东西:使用内置的Pipeline构建步骤。

我使用它来触发项目中的项目构建依赖项链,这样在一个项目成功构建后,其他依赖它的项目将提取更新的依赖项并针对它进行构建。

这是Jenkinsfile中的样子:

build repoName


其中repoName是一个变量,其中包含您要构建的存储库的名称。

事情会变得有些复杂,例如重新使用文件夹或多分支管道:

build "${projectName}/${repoName}/${branchName}"


此示例在多分支项目中构建作业,其中变量为:



projectName-我的Multibranch项目的名称

repoName-存储库的名称

branchName-要构建的分支的名称,通常是master


或者这个e xample使用参数构建作业,并异步触发构建(父作业在继续下一步之前不会等待子作业完成):

build(
  jobName,
  wait: false,
  parameters: [
    [
      $class: 'BooleanParameterValue',
      name: 'someBooleanParameter',
      value: true,
    ],
    [
      $class: 'StringParameterValue',
      name: 'someStringParameter',
      value: 'some string value',
    ],
  ],
)


如您所见,对build的调用可能变得相对复杂。有关更多完整信息,请参见上面链接的文档。

#2 楼

您可以使用种子作业来完成此任务。种子作业(实际上是自由样式的作业)包含在Job-DSL插件中。