Jenkins 在詹金斯,如何将两条不同的建筑管线连接在一起?
我在jenkins中有一个构建管道,用于构建和部署后端组件,这些组件公开RESTAPI。我有另一个构建管道,用于构建和部署前端组件,这些组件称为后端组件。后端和前端组件位于独立的Git存储库中 每个管道的构建作业在每个Git存储库中发生提交时启动Jenkins 在詹金斯,如何将两条不同的建筑管线连接在一起?,jenkins,Jenkins,我在jenkins中有一个构建管道,用于构建和部署后端组件,这些组件公开RESTAPI。我有另一个构建管道,用于构建和部署前端组件,这些组件称为后端组件。后端和前端组件位于独立的Git存储库中 每个管道的构建作业在每个Git存储库中发生提交时启动 我希望在每个构建管道的构建管道的末尾运行自动功能测试。但是我怎么知道这两条管道都完成了,并且应该运行功能测试呢?它可以将两个管道连接在一起吗?一种方法是使用插件,并为每个管道上的每个作业提供自己的锁,例如pipeline-A和pipeline-B,然后
我希望在每个构建管道的构建管道的末尾运行自动功能测试。但是我怎么知道这两条管道都完成了,并且应该运行功能测试呢?它可以将两个管道连接在一起吗?一种方法是使用插件,并为每个管道上的每个作业提供自己的锁,例如pipeline-A和pipeline-B,然后,运行测试的作业被配置为获得管道A和管道B上的锁。这既可以防止在任何管道的任何部分正在运行时测试作业运行,也可以在测试运行时阻止管道上的任何更改 如果您只想锁定部署作业,则可以使用相同的方法,但只能使用锁配置部署作业;这将允许正常构建正常运行,但部署作业会在测试运行时排队 假设
- 任何部署作业都会触发测试执行
EndOfPipelineA -> SystemDeploymentController
EndOfPipelineB -> SystemDeploymentController
SystemDeploymentController -> DeployAppOne
SystemDeploymentController -> DeployAppTwo
DeployAppTwo -> TestExecution
DeployAppOne -> TestExecution
然后,仅当两个部署都完成并成功时,才使用该插件运行TestExecution作业
第二种方法允许您:
但是管理起来有点棘手。
虽然这是一个老问题,但您可能会考虑使用生成流插件重构构建管道。 它的优点是将管道逻辑保持在一个位置。您可以使用它。假设您有一个名为parent
和child
的管道。在parent
管道中,您可以定义:
pipeline {
agent any
stages {
stage ('call-child-pipeline') {
steps {
build job: 'child'
}
}
}
}
您还可以将一些参数传递给子管道
管道:
stage ('call-child-pipeline') {
steps {
build job: 'child', parameters: [string(name: 'my_param', value: "my_value")]
}
}
如果不想等待子管道完成,请添加wait:false
,例如
build job: 'child', wait: false
锁和闩锁插件的正确URL如下: