Bra*_*rad 2 azure azure-devops azure-pipelines azure-pipelines-yaml
Azure DevOps 管道文档提供了一个用于matrix
构建两个不同操作系统和版本组合的示例:
strategy:
matrix:
jdk10_linux:
imageName: "ubuntu-latest"
jdkVersion: "1.10"
jdk11_windows:
imageName: "windows-latest"
jdkVersion: "1.11"
Run Code Online (Sandbox Code Playgroud)
看这里
问题:有没有办法获得多组矩阵选项的叉积。举例来说,假设我想要这个:
strategy:
matrix:
jdk10_linux:
imageName: "ubuntu-latest"
jdkVersion: "1.10"
jdk11_linux:
imageName: "ubuntu-latest"
jdkVersion: "1.11"
jdk10_windows:
imageName: "windows-latest"
jdkVersion: "1.10"
jdk11_windows:
imageName: "windows-latest"
jdkVersion: "1.11"
Run Code Online (Sandbox Code Playgroud)
除了复制并粘贴整个列表之外,是否有更干净/更简单的方法来执行此操作?
从逻辑上讲,我希望能够说更多类似的话:
imageList: ['windows-latest', 'ubuntu-latest']
jdkList: ['1.10', '1.11']
optionList: ['a','b','c']
strategy:
matrix_combine_lists:
imageName: imageList
jdkVersion: jdkList
someOption: optionList
Run Code Online (Sandbox Code Playgroud)
我不确定是否可以使用矩阵,但矩阵只是与一组不同的参数并行运行作业,因此使用每个模板表达式也应该有效:
parameters:
- name: imageList
type: object
default: ['windows-latest', 'ubuntu-latest']
- name: jdkList
type: object
default: ['1.10', '1.11']
- name: optionList
type: object
default: ['a','b','c']
jobs:
- ${{ each image in parameters.imageList }}:
- ${{ each jdk in parameters.jdkList }}:
- ${{ each option in parameters.optionList }}:
- job: ${{ replace(image, '-', '_') }}_${{ replace(jdk, '.', '_') }}_${{ option }}
pool:
vmImage: ${{ image }}
steps:
- script: |
echo "Image: ${{ image }}, jdk: ${{ jdk }}, option: ${{ option }}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1070 次 |
最近记录: |