gpt4 book ai didi

azure - 如何在 Azure Devops 中以正确的方式进行基于功能的部署?

转载 作者:行者123 更新时间:2023-12-03 06:13:20 25 4
gpt4 key购买 nike

这是我的 azure-pipeline.yml 文件,并尝试使用下面的代码博客创建基于功能的部署,但我想从另一个 yaml 文件中读取这部分。这可能吗?

parameters:
- name: skipDevTestUAT
type: boolean
default: false
trigger:
branches:
include:
- origin/feature/Yusuf/branch1
- origin/feature/Yusuf/branch2

请检查我的下面的 azure-pipeline.yml 代码

  1. 这是基于功能的部署吗?
  2. 我将在这里分享我们的管道部署。我希望这是正确的方法
# Feature Based Deployment
# I will share here our pipeline deployment via feature based Deployment

parameters:
- name: skipDevTestUAT
type: boolean
default: false
trigger:
branches:
include:
- origin/feature/Yusuf/branch1
- origin/feature/Yusuf/branch2


# Rest of your pipeline configuration

pool:
vmImage: ubuntu-latest

stages:
- stage: DEV
displayName: "DEV Stage"
jobs:
- job: DEV_Job
displayName: "DEV Job"
steps:
- script: echo "Perform DEV deployment"

- stage: TEST
displayName: "TEST Stage"
dependsOn: DEV
condition: and(succeeded(), eq('${{ parameters.skipDevTestUAT }}', 'false'))
jobs:
- job: TEST_Job
displayName: 'TEST Job'
steps:
- script: echo "Perform TEST deployment"

- stage: UAT
displayName: "UAT Stage"
dependsOn: TEST
condition: and(succeeded(), eq('${{ parameters.skipDevTestUAT }}', 'false'))
jobs:
- job: UAT_Job
displayName: 'UAT Job'
steps:
- script: echo "Perform UAT deployment"

- stage: PROD
displayName: "PROD Stage"
dependsOn: UAT
condition: and(succeeded(), eq('${{ parameters.skipDevTestUAT }}', 'true'))
jobs:
- job: PROD_Job
displayName: 'PROD Job'
steps:
- script: echo "Perform PROD deployment"

我可以将这部分放入project-template.yml中吗?

parameters:
- name: skipDevTestUAT
type: boolean
default: false
trigger:
branches:
include:
- origin/feature/Yusuf/branch1
- origin/feature/Yusuf/branch2

如果您有任何想法,我完全愿意?顺便说一句,我们可以说这是一个基于功能的部署吗?

最佳答案

因此变量文件将被加载并 scoped适本地。根据您提供的代码,它很可能是根级别,因为它用于评估跨阶段的条件。我建议,如果保持原样,请删除条件并将其读为 conditional insertion to the stage 。这里的区别是,如果不满足条件,阶段甚至不会加载到管道中,而不是始终存在并跳过。

此外,为了更精细地控制,另一个选项是每个环境一个变量文件。模板文件将具有不同的名称,其中很可能包含环境名称的某些部分。然后根据需要在阶段或作业加载变量文件。这可以为在 DEV 而不是 UAT 中运行某些作业/任务提供更多控制。

对于您的具体要求,它看起来像:

variables:
- template: variables.yml
trigger:
branches:
include:
- origin/feature/Yusuf/branch1
- origin/feature/Yusuf/branch2

pool:
vmImage: ubuntu-latest
stages:
- stage: TEST
displayName: "TEST Stage"
dependsOn: DEV
condition: and(succeeded(), eq('${{ variables.skipDevTestUAT }}', 'false'))
jobs:
- job: TEST_Job
displayName: 'TEST Job'
steps:
- script: echo "Perform TEST deployment"

变量.yml:

variables:
- name: skipDevTestUAT
value: false

要跳过阅读舞台,则为:

stages:
-${{ if eq('${{ variables.skipDevTestUAT }}', 'false') }} :
- stage: TEST
displayName: "TEST Stage"
dependsOn: DEV
jobs:
- job: TEST_Job
displayName: 'TEST Job'
steps:
- script: echo "Perform TEST deployment"

仅供引用,它似乎总是出现......为了评估管道执行后是否正确插入了变量,请选择椭圆菜单,下载日志并查看 azure-pipeline-expane

以下是一些有关如何大规模执行此操作的后续 Material 。 Microsoft Series on YAML Pipelines和一个example on using if/else根据标准加载阶段。

关于azure - 如何在 Azure Devops 中以正确的方式进行基于功能的部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76522047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com