hos*_*jay 13 yaml azure-devops azure-pipelines
我正在使用 Azure Pipelines YAML 格式设置管道。我创建了 3 个阶段:构建、暂存和生产。顾名思义,构建阶段构建项目并发布构建工件。Staging 阶段部署到 Staging 环境,Production 阶段部署到 Production 环境。
在我的项目的 Environments 部分,我添加了对生产环境的检查,以便我可以在上线之前批准部署。
我的管道的工作方式是在 Build 阶段完成后自动触发 Staging 和 Production 阶段。我不喜欢这一点的是,当开发人员将他们的代码部署到 Staging 时,他们需要几天时间在 Staging 上对其进行测试,然后再将他们的代码推送到生产环境。所以,在那之前,我的管道一直在运行并等待我的批准。左上角的微调器不断旋转,“持续时间”字段不断传递。
有什么方法可以让开发人员在准备就绪时手动触发生产阶段而不是构建阶段触发它?
Gee*_*vdC 39
您可以将触发器设置为无以禁用 CI 并且仅手动触发它
trigger: none
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 11
我有一个更干净的解决方案,我已经使用了一段时间了。它与我在此处发布的原始解决方案类似,但我不是手动向管道添加变量,而是添加一个参数并将其用作在特定环境中触发部署的条件。
azure-pipelines.yaml 如下所示:
trigger:
- master
parameters:
- name: deployDEV
displayName: Deploy to DEV
type: boolean
default: false
stages:
- stage: Build
jobs:
- job: Build
steps:
- script: |
echo "Building something..."
- stage: Release_DEV
displayName: Release to DEV
condition: |
and(
succeeded('Build'),
eq(${{ parameters.deployDEV }}, true)
)
dependsOn: Build
jobs:
- job: Release DEV
steps:
- script: |
echo "Releasing to DEV..."
Run Code Online (Sandbox Code Playgroud)
此解决方案的优点在于,当您启动新实例时,您将在 UI 中获得参数作为选项,如下所示:
我认为有更好的方法。您可以添加一个可以在启动管道时覆盖的管道变量。
您必须向管道添加一个新变量并选择“让用户在运行此管道时覆盖此值”。
在您的管道中,向您的阶段添加一个条件,例如:
condition: and(succeeded(), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['DEPLOY_PROD'], 'true')))
现在,每当您想要将构建部署到生产时,您都可以启动构建,然后从此处覆盖变量:
将该值设置为“true”,您的构建将触发您想要的阶段。
| 归档时间: |
|
| 查看次数: |
17851 次 |
| 最近记录: |