我对JenkinsFile的理解是,它将仅在提交给它的存储库上运行,并且仅在SCM系统向Jenkins发送请求通知其新更改时才运行。
是否可以使两个单独的存储库中的JenkinsFile相互通信,以便在构建一个时也可以构建另一个,并且只有在两个都构建之后才可以部署它们? br />
我的主要目的是避免在Jenkins UI中创建单独的Jenkins作业。
#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
的调用可能变得相对复杂。有关更多完整信息,请参见上面链接的文档。
评论
据我所知,Jenkinsfile可以触发一个构建,它可能是另一个项目构建,因此每个项目都可以在部署我认为之前触发另一个项目构建步骤。 (我在这里可能是错误的,不能与Jenkinsfile一起使用)