【问题标题】:Manually triggered stages in Azure Devops YAML PipelinesAzure Devops YAML Pipelines 中的手动触发阶段
【发布时间】:2020-10-22 03:27:28
【问题描述】:

我想在 YAML 中重新创建一个看起来像这样的管道。

我已经成功地重新创建了第一行 (A) 管道。 dependsOn、environmentName 和环境批准的组合可以解决这个问题。 但是,似乎没有办法在 YAML 中创建 B 和 C 管道。

我见过几个similar questions,但大多数都不是我想要的,或者很老没有解决方案。我怀疑现在不可能,但想问一下。

【问题讨论】:

  • 好几天没有收到您的回复,能否分享一下您对此问题的最新信息?如果您有任何疑问,请随时在此处分享。
  • @HughLin-MSFT,我在这方面没有任何进展。

标签: azure azure-devops azure-pipelines azure-pipelines-release-pipeline azure-yaml-pipelines


【解决方案1】:

您可以根据参数控制它,例如:

parameters:
- name: stageTest
  displayName: Run Stage test
  type: boolean
  default: false

trigger:
  - none

variables:      # pipeline-level
  system.debug: true

stages:
- stage: Build
  jobs:
  - job: Build
    steps:
    - script: echo "hello to my first Build"
- stage: Test
  dependsOn:
    - Build
  jobs:
  - job: Test
    steps:
    - script: echo "test"
- ${{ if eq(parameters.stageTest, true) }}: 
  - stage: B1
    dependsOn: []
    jobs:
    - job: B1
      steps:
      - script: echo "B1"
  - stage: B2
    dependsOn:
    - B1
    jobs:
    - job: B2
      steps:
      - script: echo "B2"

参数为stageTest,可以在排队流水线时设置值(勾选或不勾选)。

另一方面,您也可以在运行管道时跳过阶段:Skipping stages in a YAML pipeline

【讨论】:

  • 这将删除管道的 CI 部分,并要求我提前知道应该执行哪些阶段。
  • @drs9222 我不清楚你的意思。删除了哪个 CI 部分?另一方面,如果在运行管道时跳过某些阶段,结果会怎样?
  • 它删除了需要我在每次提交后手动运行构建的初始触发器。
  • @drs9222 您可以更改触发器值以启用 CI 部分,但它使用默认参数值。
  • 是的,你可以,但这实际上消除了控制执行内容的能力,让我回到第一方。
【解决方案2】:

在第一个环境前面加上一个批准。在获得批准之前不会触发。这与您现在将要达到的一样接近。

【讨论】:

  • 那么它要么总是运行,要么失败。没有办法拥有一个不运行每个阶段的成功管道。
【解决方案3】:

恐怕目前无法在YAML管道中实现像发布管道的UI这样的手动触发阶段。

目前在yaml中提供了指定运行stage的功能,但是这只适用于手动触发的管道,不能像release管道那样随时部署手动stage。

根据你的流程图,你希望你的流水线从 CI 开始,保持手动阶段的独立性,不会影响流水线的运行。将stage拆分成多个yaml管道应该不是你想要的,所以你可以关注uservoice并投票给这张票,期待新功能的发布。

【讨论】:

  • 这也是我发现的。我已经对此进行了投票,但已经过去一年多了,还没有任何消息。我只是希望有人有一个聪明的解决方法,或者做了一些没有在上面列出的事情。
猜你喜欢
  • 2020-08-13
  • 1970-01-01
  • 2020-02-28
  • 2020-10-31
  • 2020-01-13
  • 2021-10-14
  • 2021-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多