Partager via


définition de jobs.job.strategy

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

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

Implémentations

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

Remarques

Pour accéder à des variables à partir d’un travail dans un travail suivant, consultez Définir une variable de sortie à plusieurs travaux.

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 les 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.

chaîne maxParallel.
nombre maximal de travaux en cours d’exécution en parallèle.

Remarques

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

Pour chaque occurrence de chaîne1 dans la matrice, une copie du travail est générée. Le nom chaîne1 est le nom de la copie et est ajouté au nom du travail. Pour chaque occurrence de chaîne2, une variable appelée chaîne2 avec la valeur chaîne3 est disponible pour le travail.

Remarque

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é maxParallel facultatif 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.

Remarque

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

Exemples

Générer sur plusieurs plateformes

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

# Build NodeJS Express app using Azure Pipelines
# https://learn.microsoft.com/azure/devops/pipelines/ecosystems/javascript
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 script pour s’exécuter dans l’interpréteur de script intégral de chaque plateforme : Bash sur macOS et Linux, CMD sur Windows. Consultez scripts multiplateformes pour en savoir plus.

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

L’exemple suivant s’appuie sur un agent auto-hébergé et un agent hébergé par Microsoft, en spécifiant à la fois une vmImage et une variable Pool, comme 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. Les vmImage vides de l’agent auto-hébergé peuvent 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 : « Générer Python35 », « Générer Python36 » et « Générer Python37 ». Dans chaque travail, une variable nommée PYTHON_VERSION est disponible. Dans « Build Python35 », la variable est définie sur « 3.5 ». Elle est également définie sur « 3.6 » dans « Build Python36 ». Seuls deux travaux 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

chaîne parallel.
exécuter le travail plusieurs fois.

Remarques

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