首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jenkins中,如何将两个不同的构建管道连接在一起?

在Jenkins中,如何将两个不同的构建管道连接在一起?
EN

Stack Overflow用户
提问于 2012-10-13 10:29:41
回答 3查看 5.6K关注 0票数 4

我在jenkins中有一个构建管道,用于构建和部署暴露REST API的后端组件。我有另一个构建管道,用于构建和部署调用后端组件的前端组件。后端和前端组件位于不同的Git存储库中。

当在每个相应的Git存储库中发生提交时,就会启动每个管道的构建工作。

我想在每个构建管道的构建管道的末尾运行自动化的功能测试。但是我怎么知道两个管道都已经完成了,应该运行功能测试呢?它能把这两条管道连接起来吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-14 01:49:29

一种方法是使用Locks and Latches插件,并为每个管道上的每个作业提供自己的锁,例如管道-A和管道-B,然后运行测试的作业被配置为同时获得管道-A和管道-B上的锁。如果管道的任何部分正在运行,这都会阻止测试作业运行,并在测试运行时阻止管道上的任何更改。

如果您只想锁定部署作业,则可以使用相同的方法,但只使用锁定配置部署作业;这将允许正常构建正常运行,但部署作业会在测试运行时排队。

假设;

  • 任何部署作业都会触发测试执行

第二种方法是设置作业管道,以便在执行部署之前,它们触发以下布局中的单个作业;

代码语言:javascript
复制
EndOfPipelineA -> SystemDeploymentController
EndOfPipelineB -> SystemDeploymentController
SystemDeploymentController -> DeployAppOne
SystemDeploymentController -> DeployAppTwo
DeployAppTwo -> TestExecution
DeployAppOne -> TestExecution

然后,当两个部署都完成并成功时,才使用Join插件运行TestExecution作业。

第二种方法允许您:

  1. 有条件地控制测试执行的执行取决于部署的成功与否,
  2. 有一个单独的作业,允许您在对运行系统的系统进行任何更改时重新部署整个系统,然后运行测试

利用促销插件突出显示两个应用程序协同工作的“良好配置”

然而,它的管理有一点棘手。

票数 3
EN

Stack Overflow用户

发布于 2013-05-29 06:14:36

尽管这是一个老问题,但您可以考虑使用构建流插件重新构建您的构建管道

https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin

它的优点是让你的流水线逻辑保持在一个地方。

票数 1
EN

Stack Overflow用户

发布于 2020-05-01 16:40:23

您可以使用build step来实现这一点。假设您有一个名为parentchild的管道。在parent管道中,您可以定义:

代码语言:javascript
复制
pipeline {
    agent any
    stages {
        stage ('call-child-pipeline') {
            steps {
                build job: 'child'
            }
        }
    }
}

您还可以将一些参数传递给child管道:

代码语言:javascript
复制
stage ('call-child-pipeline') {
    steps {
        build job: 'child', parameters: [string(name: 'my_param', value: "my_value")]
    }
}

如果您不想等到子管道完成,请添加wait: false,例如

代码语言:javascript
复制
build job: 'child', wait: false
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12869433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档