【问题标题】:Azure pipeline to run two or more independent pipelines from a wrapper pipeline?Azure 管道从包装管道运行两个或多个独立管道?
【发布时间】:2021-03-24 05:02:04
【问题描述】:

是否可以在 Azure DevOps 中创建一个简单地运行两个或多个独立管道(并行)而不执行其他任何操作的包装管道?

我有一个问题要解决。场景看起来像这样“*

  1. 在我的项目中,我说有 9 个团队,每个团队都设计了单独的健全性测试脚本。他们都有自己现有的 Sanity Pipeline。即 9 条健全性管道*
  2. 计划只有一个 Master/Wrapper 管道,这反过来又需要 9 个与 Sanity 相关的子管道
  3. 当发布工程师或 IT 区域领导运行主运行以获取报告时,子管道并行运行
  4. 同样在主管道中,我不想太冗长。只是我想在我的个人 Job 标签中提及 Child 管道的名称(可能带有参数),它会运行。易于配置“所以我想在我的主管道中使用以下内容:资源:管道: 管道:Sanity1 来源:P00xxx-Sanity1-Pipeline 管道:Sanity2 来源:P00xxx-Sanity2-Pipeline 这个列表应该很容易扩展...... 然后 How in Jobs--> Job --> Steps 我可以使用别名运行管道,例如理智1 ??任何示例代码 sn-p?

【问题讨论】:

  • 我没有现成的答案,但您可以使用模板将步骤与构建过程的其余部分分开。也就是说,单个构建可以在一个作业中包含他们的 1 个步骤模板,而大型构建可以包含 9 个作业,每个作业引用一个不同的步骤模板,一个来自每个健全的构建。
  • 这个 repo 展示了如何从作业定义中拆分步骤,使得在多个管道中重用步骤变得容易:github.com/Microsoft/vsts-team-calendar/tree/master
  • 嗨@user2571588。这张票有什么更新吗?如果答案可以给你一些帮助,请随时告诉我。只是提醒this

标签: azure-devops azure-pipelines


【解决方案1】:

另一种方法是采用管道并利用模板。包装器管道可以调用一个模板,该模板将利用所有所需的任务和执行,并且可以设置为作为管道的一部分并行运行。

这是一篇关于this的博文

【讨论】:

    【解决方案2】:

    您可以使用 PowerShell 和 REST API (Builds - Queue)。添加PowerShell step 并组成任何运行序列。在这里您可以找到队列构建的不同示例:

    1. Build Pipeline using powershell
    2. Trigger another build exist in project in Azure Devops

    【讨论】:

      【解决方案3】:

      根据您的描述,您可以尝试使用参数和条件来设置管道。

      您可以尝试以下 Yaml 示例:

      trigger:
      - none
      parameters:
      - name: pipeline1
        displayName: Gradle sample #PipelineName
        type: boolean
        default: false
      - name: pipeline2
        displayName: groovy-spring-boot-restdocs-example.git #PipelineName
        type: boolean
        default: false
      - name: pipeline3
        displayName: Gradle sample-CI  #PipelineName
        type: boolean
        default: false
      
      
      
      pool:
        vmImage: 'windows-latest'
      
      steps:
      - ${{ if eq(parameters.pipeline1, true) }}:
        - task: TriggerPipeline@1
          inputs:
           serviceConnection: 'TestBuild'
           project: '966ef694-1a7d-4c35-91f3-41b8c5363c48'
           Pipeline: 'Build'
           buildDefinition: 'Gradle sample' #PipelineName
           Branch: 'master'
      
      - ${{ if eq(parameters.pipeline2, 'true') }}:
        - task: TriggerPipeline@1
          inputs:
           serviceConnection: 'TestBuild'
           project: '966ef694-1a7d-4c35-91f3-41b8c5363c48'
           Pipeline: 'Build'
           buildDefinition: 'groovy-spring-boot-restdocs-example.git' #PipelineName
           Branch: 'master'
      
      ...
      

      说明:

      我使用来自Trigger Azure DevOps Pipeline ExtensionTrigger Azure DevOps Pipeline 任务来触发子管道。

      参数用于列出管道名称,if条件用于判断是否选择管道名称。

      结果:

      当您运行管道时,您可以选中该复选框。

      如果选择了管道名称,则运行相应的任务并触发相应的管道。

      这应该会使选择界面更清晰。

      【讨论】:

      • 让我与我的 Azure 管理员核实以安装此插件。我会回来的。。
      • 嗨@user2571588。随时让我知道你的进展。如果您有任何问题,我仍然会在这里为您提供帮助。
      • 嗨@user2571588。跟进,您对这张票有任何更新吗?
      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多