在Azure Pipelines阶段(YAML)上手动触发

时间:2019-11-02 01:39:53

标签: azure-devops yaml azure-pipelines

我正在使用Azure Pipelines YAML格式设置管道。我创建了3个阶段:构建,分段和生产。顾名思义,Build阶段将构建项目并发布构建工件。过渡阶段部署到过渡环境,生产阶段部署到生产环境。

在我的项目的“环境”部分中,我添加了对生产环境的检查,以便可以在上线之前批准部署。

我的管道的工作方式是在构建阶段完成后自动触发“登台”阶段和“生产”阶段。我不喜欢的是,当开发人员将代码部署到Staging时,他们需要几天的时间在Staging上对其进行测试,然后才能将其代码推入Production。因此,直到那时,我的管道一直在运行并等待我的批准。左上角的微调框继续旋转,并且“ Duration”字段持续通过。

enter image description here

有什么方法可以使开发人员在准备就绪时手动触发生产阶段,而不是通过构建阶段触发生产阶段?

5 个答案:

答案 0 :(得分:6)

您可以指定要运行的阶段。

当您单击“运行管道”时,单击“要运行的阶段”:

enter image description here

现在选择要运行的阶段:

enter image description here

答案 1 :(得分:3)

我认为有更好的方法。您可以添加管道变量,在启动管道时可以覆盖该变量。

您必须在管道中添加新变量,然后选择“让用户在运行此管道时覆盖此值”。

enter image description here

在您的管道中向您的阶段添加一个条件,例如:

condition: and(succeeded(), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['DEPLOY_PROD'], 'true')))

现在,每当您希望将构建部署到生产环境时,就开始构建,然后从此处覆盖变量:

enter image description here

将值设置为“ true”,您的构建将触发您想要的阶段。

答案 2 :(得分:2)

yaml管道中的手动阶段目前不可用。此feature请求已提交给Microsoft。您可以投票或提交新的投票。

有一些解决方法可以实现。

您可以将您的登台生产阶段移动到Classic Web UI Release Pipeline。 Web UI发布管道中提供了手动触发阶段。请检查here了解更多信息。

enter image description here

另一种实现此目的的方法是将yaml管道分成两个yaml管道(阶段管道和生产管道)。并禁用生产管道的CI构建(在管道编辑页面中,单击右上角的3dots并选择触发器。请参阅下面的图片)。

enter image description here

enter image description here

以便开发人员完成测试后可以手动运行生产管道。

答案 3 :(得分:1)

您可以将触发器设置为none以禁用CI,而只能手动触发

trigger: none

答案 4 :(得分:0)

是的,可以做到。我们不直接在Yaml中执行此操作。但是相反,我们在YAML中添加了环境。在环境上,我们添加了手动触发器。

 environment: 'smarthotel-dev'

环境和触发器通过用户界面进行管理。

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/environments?view=azure-devops