首页 > 解决方案 > 我应该如何控制我的部署流程?

问题描述

新的管道最佳实践是什么?

文档到处都是,而且严重不完整。

允许您像一年前一样使用 Gates 和 Checks 的环境被标记为很快支持 AppServices,该部分已被删除。

支持的环境“您现在不必指定资源”这意味着我可以通过代码来完成,现在已被“当前支持 Kubernetes 资源和虚拟机资源类型”所取代。

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

原本应该充当门的手动干预任务在等待 6 个月后变成了美化的“睡眠”,现在也仅适用于服务器,而不适用于 Microsoft 托管代理。

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/manual-intervention?view=azure-devops#demands

当推动最佳实践以使用一条管道来运行验证、测试、构建、部署到开发、测试和生产时,您需要对发布流程进行该死的控制,而如何实现这一点却无处可寻。

这里的计划是什么?我如何实现这些目标?我是否打破了最佳实践并制作了多个管道?我是否通过使用旧版发布管道将自己逼入绝境?为什么还没有将发布管道功能和 GUI 移植到 YAML?

至少可以说,设计和工作流程变得令人愤怒、不必要的复杂和烦人。

我可能找到了解决方法:https ://ochzhen.com/blog/manual-trigger-in-yaml-azure-pipelines

任何人都可以帮助解释或指出新 Azure Pipelines 最佳实践的方向吗?

标签: azure-devopsazure-pipelines

解决方案


为了隔离管道中的不同环境,我们使用像这样的变量和条件 https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

# Special Run Description Variables
- name: IsPullRequest
  value: ${{ or(eq(variables['Build.Reason'], 'PullRequest'), eq(parameters.ForcePullRequest, true)) }}
   
- name: IsCIRun
  value: ${{ or(and(eq(variables['Build.SourceBranch'], 'refs/heads/develop'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')), eq(parameters.DeployCI, true)) }}

- name: IsUatRun
  value: ${{ or(and(eq(variables['Build.SourceBranch'], 'refs/heads/main'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')), eq(parameters.DeployUat, true)) }}

不确定这是否能回答您的问题,但希望这是一个很好的起点


推荐阅读