use*_*684 7 azure-devops azure-pipelines
我如何循环遍历数组或对象来创建阶段?
下面是一个有效的 yml 文件。您可以看到构建阶段在作业的参数环境上循环。在发布阶段是否有可能实现同样的目标?
发布阶段需要手动批准,必须按顺序运行并且只有在前一阶段成功完成后才能运行?
parameters:
- name: 'environments'
type: object
default:
- environment: development
variableGroup: strata2-admin-spa-vg
dependsOn: 'build'
- environment: test
variableGroup: strata2-test-admin-spa-vg
dependsOn: 'development'
- environment: production
variableGroup: strata2-development-variables
dependsOn: 'development'
- name: 'buildTemplate'
type: string
default: buildTemplate.yml
- name: 'publishTemplate'
type: string
default: publishTemplate.yml
trigger:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: build
displayName: Build stage
jobs:
# Can I do this for stages?
- ${{each build in parameters.environments}}:
- template: ${{parameters.buildTemplate}}
parameters:
environment: ${{build.environment}}
variableGroup: ${{build.variableGroup}}
# How to loop over parameters.environments to dynamically create stages
- stage: Publish_Development
displayName: Publish development environment
dependsOn: build
jobs:
- template: ${{parameters.publishTemplate}}
parameters:
environment: Development_websites
variableGroup: strata2-admin-spa-vg
- stage: Publish_Test
displayName: Publish test environment
dependsOn: Publish_Dev
jobs:
- template: ${{parameters.publishTemplate}}
parameters:
environment: Test_websites
variableGroup: strata2-test-admin-spa-vg
- stage: Publish_Production
displayName: Publish production environment
dependsOn: Publish_Test
jobs:
- template: ${{parameters.publishTemplate}}
parameters:
environment: Production_websites
variableGroup: strata2-development-variables
Run Code Online (Sandbox Code Playgroud)
小智 6
虽然接受的答案是正确的 - 但它并不那么清楚 - 在我让它正常工作之前我花了一些时间摆弄
这是我如何运行循环的
parameters:
- name: stages
type: object
default:
- stage: Sandbox
dependsOn: Build
- stage: Dev
dependsOn: DeploySandbox
- stage: PreProd
dependsOn: Build
- stage: Prod
dependsOn: DeployPreProd
stages:
- stage: Build
displayName: Build
jobs:
- job:
displayName: Build_Job
- ${{ each stage in parameters.stages }} :
- stage: Deploy${{ stage.stage }}
displayName: Deploy ${{ stage.stage }} Environment
dependsOn: ${{ stage.dependsOn }}
variables:
- name: system. Debug
value: true
jobs:
- job:
displayName: "${{ stage.stage }}"
steps:
- script: echo Hello, world!
displayName: 'Deploying to ${{ stage.stage }}'
Run Code Online (Sandbox Code Playgroud)
从现在开始,我将使用它来显着减少管道中的重复,希望这将帮助人们更快地掌握速度
干杯
-=A=-
。
您可以按照创建环境对象的方式创建阶段对象。
stages:
Publish_Development:
- stage: Publish_Development
- displayName: Publish development environment
- dependsOn:
- ...
Publish_Test
- stage: Publish_Development
- ...
Run Code Online (Sandbox Code Playgroud)
然后您可以像处理环境一样循环阶段对象。
- ${{each stage in parameters.stages}}:
- stage: ${{ stage.stage }}
displayName: ${{ stage.displayName}}
dependsOn: ${{ stage.dependsOn}}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6904 次 |
| 最近记录: |