我正在使用Azure Pipelines YAML格式设置管道。我创建了3个阶段:构建,分段和生产。顾名思义,Build阶段将构建项目并发布构建工件。过渡阶段部署到过渡环境,生产阶段部署到生产环境。
在我的项目的“环境”部分中,我添加了对生产环境的检查,以便可以在上线之前批准部署。
我的管道的工作方式是在构建阶段完成后自动触发“登台”阶段和“生产”阶段。我不喜欢的是,当开发人员将代码部署到Staging时,他们需要几天的时间在Staging上对其进行测试,然后才能将其代码推入Production。因此,直到那时,我的管道一直在运行并等待我的批准。左上角的微调框继续旋转,并且“ Duration”字段持续通过。
有什么方法可以使开发人员在准备就绪时手动触发生产阶段,而不是通过构建阶段触发生产阶段?
答案 0 :(得分:6)
答案 1 :(得分:3)
我认为有更好的方法。您可以添加管道变量,在启动管道时可以覆盖该变量。
您必须在管道中添加新变量,然后选择“让用户在运行此管道时覆盖此值”。
在您的管道中向您的阶段添加一个条件,例如:
condition: and(succeeded(), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['DEPLOY_PROD'], 'true')))
现在,每当您希望将构建部署到生产环境时,就开始构建,然后从此处覆盖变量:
将值设置为“ true”,您的构建将触发您想要的阶段。
答案 2 :(得分:2)
yaml管道中的手动阶段目前不可用。此feature请求已提交给Microsoft。您可以投票或提交新的投票。
有一些解决方法可以实现。
您可以将您的登台和生产阶段移动到Classic Web UI Release Pipeline。 Web UI发布管道中提供了手动触发阶段。请检查here了解更多信息。
另一种实现此目的的方法是将yaml管道分成两个yaml管道(阶段管道和生产管道)。并禁用生产管道的CI构建(在管道编辑页面中,单击右上角的3dots并选择触发器。请参阅下面的图片)。
以便开发人员完成测试后可以手动运行生产管道。
答案 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