Pur*_*ome 3 azure azure-devops
我有以下 Azure DevOps 模板,当前已硬编码到某些特定文件。我希望使用循环将其重构为更简单的模板,这样我就不需要复制(和硬编码)特定文件。
[为了简洁起见,伪代码]
#tests.yml
steps:
# pre-test steps. This is done once.
- script: install tool1
- script: install tool2
- script: setup path stuff.
# Tests
- script: test project1 |
display codecoverage to console-out
- script: test project 2 |
display codecoverage to console-out
# Post-tests
- script: upload coverage report for project1
- script: upload coverage report for project2
- task: PublishTestResults@2 # publish test results to Azure DevOps.
Run Code Online (Sandbox Code Playgroud)
所以请注意我是如何在每个项目中做到这一点的
我希望有一种方法可以让我将信息传递到模板中,然后循环遍历输入数据数组。
像这样..
steps:
# pre tests.
...
# tests
foreach project in projects
- script: test project |
display code coverage report
- script: upload report
# post-test
...
Run Code Online (Sandbox Code Playgroud)
这可以在 Azure DevOps 中完成吗?
就个人而言,也许这些关键词each就是您正在寻找的?
对于样品:
azure-pipelines.yml
extends:
template: template.yml
parameters:
buildArgs:
Arg1 : $(arg1-value)
Arg2 : $(arg2-value)
Run Code Online (Sandbox Code Playgroud)
模板.yml
parameters:
- name: buildArgs
type: object
default: []
stages:
- stage: EachLoop
displayName: Run Each extends
jobs:
- job: looping
steps:
- ${{ each arg in parameters.buildArgs }}:
- bash: |
echo ${{ arg.key }}
echo ${{ arg.value }}
echo "##vso[task.setvariable variable=buildOther]${{ arg.value }}"
displayName: ${{ arg.key }}
- bash: |
echo "buildstring=$(buildOther)"
displayName: ECHO-${{ arg.key }}
Run Code Online (Sandbox Code Playgroud)
对于您的场景,只需将run test//display步骤放入uploadtemplate.yml 中。使用eachwithparameters来扩展模板,这样就可以实现循环。
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |