我已经阅读了手动验证任务的官方文档。
\n这是我的 YAML 管道中的阶段之一:
\n - stage: Prod\n dependsOn: QA\n condition: and(succeeded(\'QA\'), eq(variables[\'Build.SourceBranch\'], \'refs/heads/release\'))\n jobs:\n - job: WaitForValidation\n pool: server\n displayName: Wait for approval\n timeoutInMinutes: 4320\n steps:\n - task: ManualValidation@0\n timeoutInMinutes: 1440 # task times out in 1 day\n inputs:\n notifyUsers: |\n one@email.com\n other@email.com\n instructions: \'Approve the deployment to Prod\'\n - template: build-and-deploy-stage.yml\n parameters:\n targetEnv: \'Prod\'\n dataset: \'prod\'\n token: $(deploymentTokenProd)\n
Run Code Online (Sandbox Code Playgroud)\n这是build-and-deploy-stage.yml
:
parameters:\n - name: targetEnv\n type: string\n - name: dataset\n type: string\n - name: token\n type: string\n\njobs:\n - job: Deploy\n displayName: Build and deploy to ${{ parameters.targetEnv }}\n steps:\n - task: NodeTool@0\n displayName: \'Install Node LTS\'\n inputs:\n versionSpec: \'14.18.x\'\n # \xe2\x80\xa6 not relevant but using parameters.dataset and parameters.token\n
Run Code Online (Sandbox Code Playgroud)\n不幸的是,Deploy
即使没有人手动批准/恢复管道,该作业仍会运行。
只能在一个阶段结束时使用才能进入下一阶段吗?
\n我认为你的问题是你的管道中实际上必须有作业,因为 yaml 模板中有一个指定的作业。还没有实际测试过它,但我认为第一个作业中的手动验证步骤仅适用于该作业,而另一个作业无论如何都会启动。
\n可能有多种方法可以解决问题(通过添加 DependsOn 子句和/或将模板更改为仅包含步骤),但我实际上建议在 Azure DevOps 中添加一个环境(在 Pipelines -> Environments 下,让我们调用现在是“生产”),向该环境添加手动审批,并将生产阶段和作业更改为针对“生产”环境的部署作业。
\n所以像这样:
\n - stage: Prod\n displayName: "Deployment: Production"\n dependsOn: QA\n jobs:\n - deployment: deploy_prod\n displayName: Deploy Production \n pool: server\n condition: and(succeeded(\'QA\'), eq(variables[\'Build.SourceBranch\'], \'refs/heads/release\'))\n environment: Production\n strategy:\n runOnce:\n deploy:\n steps:\n - template: build-and-deploy-stage.yml\n parameters: \n targetEnv: \'Prod\'\n dataset: \'prod\'\n token: $(deploymentTokenProd)\n
Run Code Online (Sandbox Code Playgroud)\n模板只需以下步骤:
\nparameters:\n - name: targetEnv\n type: string\n - name: dataset\n type: string\n - name: token\n type: string\n\nsteps:\n - task: NodeTool@0\n displayName: \'Install Node LTS\'\n inputs:\n versionSpec: \'14.18.x\'\n # \xe2\x80\xa6 not relevant but using parameters.dataset and parameters.token\n
Run Code Online (Sandbox Code Playgroud)\nhttps://learn.microsoft.com/en-us/azure/devops/pipelines/process/environments?view=azure-devops
\nhttps://learn.microsoft.com/en-us/azure/devops/pipelines/process/deployment-jobs?view=azure-devops
\n 归档时间: |
|
查看次数: |
10481 次 |
最近记录: |