Use Azure Pipelines itself to generate and run test matrix from Python script

Instead of having to run a script on the developer's system and then committing the result, Azure Pipelines itself can run a modification of that script and reuse the variable it sets in later steps to determine the test matrices.

Reference: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&tabs=yaml#multi-configuration

With this, `/azure-pipelines.yml` no longer needs to be treated like a committed generated artifact!

Closes #30.
This commit is contained in:
Nelson Chen
2019-06-01 16:42:26 -07:00
parent b360851600
commit ba5849026d
3 changed files with 55 additions and 215 deletions

View File

@@ -1,156 +1,46 @@
# Generated by `generate_azure_pipelines_yml.py`
# Please edit template in `ci/`
jobs:
- job: MatricesGenerator
displayName: Matrices Generator
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.7'
addToPath: true
- bash: python generate_azure_pipelines_matrices.py
name: mtrx
displayName: Generate test matrices and set variables in Azure Pipelines
- job: Mac
dependsOn: MatricesGenerator
pool:
vmImage: macOS-10.14
steps:
- script: brew install p7zip
displayName: Install 7zip
- template: ci/steps.yml
vmImage: 'macOS-10.14'
strategy:
matrix:
QT 5.11.3 mac desktop clang_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.11.3
HOST: mac
TARGET: desktop
ARCH: clang_64
ARCHDIR: clang_64
QT 5.12.3 mac desktop clang_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.12.3
HOST: mac
TARGET: desktop
ARCH: clang_64
ARCHDIR: clang_64
QT 5.13.0 mac desktop clang_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: mac
TARGET: desktop
ARCH: clang_64
ARCHDIR: clang_64
QT 5.13.0 mac ios ios:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: mac
TARGET: ios
ARCH: ios
ARCHDIR: ios
matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.mac'] ]
steps:
- script: brew install p7zip
displayName: Install 7zip
- template: ci/steps.yml
- job: Windows
dependsOn: MatricesGenerator
pool:
vmImage: vs2017-win2016
steps:
- template: ci/steps.yml
vmImage: 'vs2017-win2016'
strategy:
matrix:
QT 5.11.3 windows desktop win64_msvc2017_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.11.3
HOST: windows
TARGET: desktop
ARCH: win64_msvc2017_64
ARCHDIR: msvc2017_64
QT 5.11.3 windows desktop win32_msvc2015:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.11.3
HOST: windows
TARGET: desktop
ARCH: win32_msvc2015
ARCHDIR: msvc2015
QT 5.12.3 windows desktop win64_msvc2017_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.12.3
HOST: windows
TARGET: desktop
ARCH: win64_msvc2017_64
ARCHDIR: msvc2017_64
QT 5.12.3 windows desktop win32_msvc2017:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.12.3
HOST: windows
TARGET: desktop
ARCH: win32_msvc2017
ARCHDIR: msvc2017
QT 5.13.0 windows desktop win64_msvc2017_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: windows
TARGET: desktop
ARCH: win64_msvc2017_64
ARCHDIR: msvc2017_64
QT 5.13.0 windows desktop win64_msvc2015_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: windows
TARGET: desktop
ARCH: win64_msvc2015_64
ARCHDIR: msvc2015_64
QT 5.13.0 windows desktop win64_mingw73:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: windows
TARGET: desktop
ARCH: win64_mingw73
ARCHDIR: mingw73_64
QT 5.13.0 windows desktop win32_msvc2017:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: windows
TARGET: desktop
ARCH: win32_msvc2017
ARCHDIR: msvc2017
QT 5.13.0 windows desktop win32_mingw73:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: windows
TARGET: desktop
ARCH: win32_mingw73
ARCHDIR: mingw73_32
matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.windows'] ]
steps:
- template: ci/steps.yml
- job: Linux
dependsOn: MatricesGenerator
pool:
vmImage: ubuntu-16.04
steps:
- template: ci/steps.yml
vmImage: 'ubuntu-16.04'
strategy:
matrix:
QT 5.11.3 linux desktop gcc_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.11.3
HOST: linux
TARGET: desktop
ARCH: gcc_64
ARCHDIR: gcc_64
QT 5.12.3 linux desktop gcc_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.12.3
HOST: linux
TARGET: desktop
ARCH: gcc_64
ARCHDIR: gcc_64
QT 5.13.0 linux desktop gcc_64:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: linux
TARGET: desktop
ARCH: gcc_64
ARCHDIR: gcc_64
QT 5.13.0 linux android android_x86:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: linux
TARGET: android
ARCH: android_x86
ARCHDIR: android_x86
QT 5.13.0 linux android android_armv7:
PYTHON_VERSION: '3.7'
QT_VERSION: 5.13.0
HOST: linux
TARGET: android
ARCH: android_armv7
ARCHDIR: android_armv7
matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.linux'] ]
steps:
- template: ci/steps.yml
- job: LinuxSpecificMirror
displayName: Linux (Specific Mirror)
variables:
@@ -162,6 +52,6 @@ jobs:
ARCHDIR: android_armv7
QT_BASE_MIRROR: http://mirrors.ocf.berkeley.edu/qt/
pool:
vmImage: ubuntu-16.04
vmImage: 'ubuntu-16.04'
steps:
- template: ci/steps.yml
- template: ci/steps.yml