我在jenkins中有一个构建管道,用于构建和部署暴露REST API的后端组件。我有另一个构建管道,用于构建和部署调用后端组件的前端组件。后端和前端组件位于不同的Git存储库中。
当在每个相应的Git存储库中发生提交时,就会启动每个管道的构建工作。
我想在每个构建管道的构建管道的末尾运行自动化的功能测试。但是我怎么知道两个管道都已经完成了,应该运行功能测试呢?它能把这两条管道连接起来吗?
发布于 2012-10-14 01:49:29
一种方法是使用Locks and Latches插件,并为每个管道上的每个作业提供自己的锁,例如管道-A和管道-B,然后运行测试的作业被配置为同时获得管道-A和管道-B上的锁。如果管道的任何部分正在运行,这都会阻止测试作业运行,并在测试运行时阻止管道上的任何更改。
如果您只想锁定部署作业,则可以使用相同的方法,但只使用锁定配置部署作业;这将允许正常构建正常运行,但部署作业会在测试运行时排队。
假设;
第二种方法是设置作业管道,以便在执行部署之前,它们触发以下布局中的单个作业;
EndOfPipelineA -> SystemDeploymentController
EndOfPipelineB -> SystemDeploymentController
SystemDeploymentController -> DeployAppOne
SystemDeploymentController -> DeployAppTwo
DeployAppTwo -> TestExecution
DeployAppOne -> TestExecution然后,当两个部署都完成并成功时,才使用Join插件运行TestExecution作业。
第二种方法允许您:
利用促销插件突出显示两个应用程序协同工作的“良好配置”
然而,它的管理有一点棘手。
发布于 2013-05-29 06:14:36
尽管这是一个老问题,但您可以考虑使用构建流插件重新构建您的构建管道
https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin
它的优点是让你的流水线逻辑保持在一个地方。
发布于 2020-05-01 16:40:23
您可以使用build step来实现这一点。假设您有一个名为parent和child的管道。在parent管道中,您可以定义:
pipeline {
agent any
stages {
stage ('call-child-pipeline') {
steps {
build job: 'child'
}
}
}
}您还可以将一些参数传递给child管道:
stage ('call-child-pipeline') {
steps {
build job: 'child', parameters: [string(name: 'my_param', value: "my_value")]
}
}如果您不想等到子管道完成,请添加wait: false,例如
build job: 'child', wait: falsehttps://stackoverflow.com/questions/12869433
复制相似问题