Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 在詹金斯,如何将两条不同的建筑管线连接在一起?_Jenkins - Fatal编程技术网

Jenkins 在詹金斯,如何将两条不同的建筑管线连接在一起?

Jenkins 在詹金斯,如何将两条不同的建筑管线连接在一起?,jenkins,Jenkins,我在jenkins中有一个构建管道,用于构建和部署后端组件,这些组件公开RESTAPI。我有另一个构建管道,用于构建和部署前端组件,这些组件称为后端组件。后端和前端组件位于独立的Git存储库中 每个管道的构建作业在每个Git存储库中发生提交时启动 我希望在每个构建管道的构建管道的末尾运行自动功能测试。但是我怎么知道这两条管道都完成了,并且应该运行功能测试呢?它可以将两个管道连接在一起吗?一种方法是使用插件,并为每个管道上的每个作业提供自己的锁,例如pipeline-A和pipeline-B,然后

我在jenkins中有一个构建管道,用于构建和部署后端组件,这些组件公开RESTAPI。我有另一个构建管道,用于构建和部署前端组件,这些组件称为后端组件。后端和前端组件位于独立的Git存储库中

每个管道的构建作业在每个Git存储库中发生提交时启动


我希望在每个构建管道的构建管道的末尾运行自动功能测试。但是我怎么知道这两条管道都完成了,并且应该运行功能测试呢?它可以将两个管道连接在一起吗?

一种方法是使用插件,并为每个管道上的每个作业提供自己的锁,例如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如下: