définition jobs.job.strategy

Stratégie d’exécution pour ce travail.

Définitions qui font référence à cette définition : pipeline, jobs.job

Implémentations

Implémentation Description
stratégie : matrice, maxParallel Stratégie de travail matriciel.
stratégie : parallèle Stratégie de travail parallèle.

stratégie : matrice, maxParallel

L’utilisation d’une matrice génère des copies d’un travail, chacune avec une entrée différente. Ces copies sont utiles pour effectuer des tests sur différentes configurations ou versions de plateforme.

strategy:
  matrix: # Matrix defining the job strategy; see the following examples.
    { string1: { string2: string3 }
  maxParallel: string # Maximum number of jobs running in parallel.

Propriétés

matrix { string1: { string2: string3 }.
Matrice définissant la stratégie de travail ; Consultez les exemples suivants.

maxParallel String.
Nombre maximal de travaux en cours d’exécution en parallèle.

Notes

strategy:
  matrix: { string1: { string2: string3 } }
  maxParallel: number

Pour chaque occurrence de string1 dans la matrice, une copie du travail est générée. La chaîne de nom1 est le nom de la copie et est ajoutée au nom du travail. Pour chaque occurrence de string2, une variable appelée string2 avec la valeur string3 est disponible pour le travail.

Notes

Les noms de configuration de matrice doivent contenir uniquement des lettres alphabétiques latines de base (A-Z et a-z), des chiffres (0-9) et des traits de soulignement (_). Ils doivent commencer par une lettre. En outre, leur longueur doit être de 100 caractères ou moins.

Le mot clé facultatif maxParallel spécifie le nombre maximal de jambes de matrice simultanées à exécuter simultanément.

Si maxParallel n’est pas spécifié ou défini sur 0, aucune limite n’est appliquée.

Si maxParallel n’est pas spécifié, aucune limite n’est appliquée.

Notes

La matrix syntaxe ne prend pas en charge la mise à l’échelle automatique des travaux, mais vous pouvez implémenter des fonctionnalités similaires à l’aide du each mot clé. Pour obtenir un exemple, consultez expressions.

Exemples

Générer sur plusieurs plateformes

Cet exemple utilise une matrix stratégie de travail pour créer sur plusieurs plateformes.

# Build NodeJS Express app using Azure Pipelines
# https://video2.skills-academy.com/azure/devops/pipelines/ecosystems/javascript?view=azure-devops
strategy:
  matrix:
    linux:
      imageName: 'ubuntu-latest'
    mac:
      imageName: 'macOS-latest'
    windows:
      imageName: 'windows-latest'

pool:
  vmImage: $(imageName)

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '8.x'

- script: |
    npm install
    npm test

- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/TEST-RESULTS.xml'
    testRunTitle: 'Test results for JavaScript'

- task: PublishCodeCoverageResults@1
  inputs: 
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false

- task: PublishBuildArtifacts@1

Ce pipeline utilise un script pour s’exécuter dans l’interpréteur de script intégral de chaque plateforme : Bash sur macOS et Linux, CMD sur Windows. Pour en savoir plus, consultez Scripts multi-plateformes.

Créer sur plusieurs plateformes à l’aide d’agents auto-hébergés et hébergés par Microsoft

L’exemple suivant s’appuie à la fois sur un agent auto-hébergé et un agent hébergé par Microsoft, en spécifiant à la fois une vmImage variable et une Pool variable, comme dans l’exemple suivant. Pour l’agent hébergé, spécifiez Azure Pipelines comme nom de pool et, pour les agents auto-hébergés, laissez le vmImage vide. Le vide vmImage de l’agent auto-hébergé peut entraîner des entrées inhabituelles dans les journaux, mais elles n’affectent pas le pipeline.

strategy:
  matrix:
    microsofthosted:
      poolName: Azure Pipelines
      vmImage: ubuntu-latest

    selfhosted:
      poolName: FabrikamPool
      vmImage:

pool:
  name: $(poolName)
  vmImage: $(vmImage)

steps:
- checkout: none
- script: echo test

Générer à l’aide de différentes versions de Python

jobs:
- job: Build
  strategy:
    matrix:
      Python35:
        PYTHON_VERSION: '3.5'
      Python36:
        PYTHON_VERSION: '3.6'
      Python37:
        PYTHON_VERSION: '3.7'
    maxParallel: 2

Cette matrice crée trois travaux : « Build Python35 », « Build Python36 » et « Build Python37 ». Dans chaque travail, une variable nommée PYTHON_VERSION est disponible. Dans « Générer Python35 », la variable est définie sur « 3.5 ». Il est également défini sur « 3.6 » dans « Générer Python36 ». Seules deux tâches s’exécutent simultanément.

stratégie : parallèle

La stratégie de travail parallèle spécifie le nombre de doublons d’un travail à exécuter.

strategy:
  parallel: string # Run the job this many times.

Propriétés

parallel String.
Exécutez le travail plusieurs fois.

Notes

La stratégie de travail parallèle est utile pour découper une grande matrice de test. La tâche de test Visual Studio comprend comment diviser la charge de test sur le nombre de travaux planifiés.

Exemples

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4