当构建运行生产时,我只想在发布管道上运行我的生产阶段。开发也一样

问题描述 投票:0回答:1

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

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

azure devops pipeline release azure-pipelines-release-pipeline
1个回答
0
投票

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

作为解决方法,您可以在舞台下的

job
上设置条件,步骤如下:

  1. 我的发布管道如下:测试、开发、生产阶段。

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

  3. 在您的构建管道中,调用上述任务,选择目标发布,将发布变量json设置为

    {'RunStage' : 'dev'}
    (dev是本示例中的目标阶段)。

  1. release管道中,添加变量

    RunStage
    ,将其设置为
    release
    范围,并在发布期间可设置。

  2. 对于每个阶段的作业,在条件表达式中设置

    agent job
    级别的条件:dev为开发阶段,test为测试阶段。

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

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

  1. 更改为触发器 Azure DevOps Pipeline 任务中的触发器

    build
    ,因为发布是 yaml。

  2. 添加变量

    RunStage
    并启用
    Let users override this value when running this pipeline
    。发布YAML如下,在
    stage
    级别设置条件:

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发布,并传递变量值。仅执行开发阶段作业。

© www.soinside.com 2019 - 2024. All rights reserved.