我只想在构建时在发布管道上运行我的生产阶段。开发也是如此

I want to run only my production stage on release pipeline when built is run of production. Same with development too

提问人:Muhammad Moiz 提问时间:11/17/2023 更新时间:11/17/2023 访问量:38

问:

生成时,仅在发布管道上运行我的生产阶段是生产运行,而不是其他阶段。与开发相同,当我运行开发的构建管道时,只有开发阶段应该在发布管道上运行。

与开发相同,当我运行开发的构建管道时,只有开发阶段应该在发布管道上运行。

Azure DevOps 管道 发布 azure-pipelines-release-pipeline

评论

0赞 wade zhou - MSFT 11/20/2023
嗨,我可以知道是否有任何更新吗?请按照我在下面的回复进行检查,如果您有任何疑问,请告诉我。

答:

0赞 wade zhou - MSFT 11/17/2023 #1

对于经典发布管道,它具有触发器设置,不允许指定运行目标阶段的条件。

作为解决方法,您可以在阶段下设置条件,步骤如下:job

  1. 我有如下发布管道:测试、开发、生产阶段。enter image description here

  2. 安装扩展触发Azure DevOps Pipeline,它可用于触发发布管道。注意:虽然它有阶段设置来指定目标发布阶段,但它无法正常工作。

  3. 生成管道中,调用上述任务,选择 target release,将发布变量 json 设置为(dev 是此示例中的目标阶段)。{'RunStage' : 'dev'}

enter image description here

  1. 在发布管道中,添加变量,将其设置为范围,并在发布期间设置。RunStagereleaseenter image description here

  2. 对于每个阶段的作业,在条件表达式中设置 level: dev for dev stage, test for test stage 的条件。agent job

enter image description here

  1. 运行构建,它将触发目标发布,仅执行开发阶段的作业,测试中的其他作业,生产阶段将被跳过。

enter image description here

或者,您可以使用 YAML 编辑器作为发布管道,它可以在阶段级别设置条件。步骤类似,详情如下:

  1. 更改为触发 Azure DevOps 管道任务中的触发器,因为 release 为 yaml。build

  2. 添加变量并启用 .释放 YAML,如下图所示,在级别设置条件:RunStageLet users override this value when running this pipelinestage

trigger: none


pool:
  vmImage: ubuntu-latest

stages:
 - stage: test
  condition: eq(variables['RunStage'], 'test')
  jobs:
 - job: A1
    steps:
      - script: echo test 

 - stage: dev
  condition: eq(variables['RunStage'], 'dev')
  dependsOn: test
  jobs:
 - job: B1
    steps:
    - script: echo dev

 - stage: prod
  condition: eq(variables['RunStage'], 'prod')
  dependsOn: dev
  jobs:
 - job: C1
    steps:
    - script: echo dev
  • 运行构建,它将触发 yaml 发布,并传输变量值。仅执行开发阶段作业。

enter image description here