definição jobs.job.strategy

Estratégia de execução para este trabalho.

Definições que fazem referência a essa definição: pipeline, jobs.job

Implementações

Implementação Descrição
estratégia: matrix, maxParallel Estratégia de trabalho de matriz.
estratégia: paralelo Estratégia de trabalho paralela.

estratégia: matrix, maxParallel

O uso de uma matriz gera cópias de um trabalho, cada uma com uma entrada diferente. Essas cópias são úteis para testes em diferentes configurações ou versões de plataforma.

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

Propriedades

matrix { string1: { string2: string3 }.
Matriz definindo a estratégia de trabalho; consulte os exemplos a seguir.

maxParallel String.
Número máximo de trabalhos em execução em paralelo.

Comentários

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

Para cada ocorrência de string1 na matriz, uma cópia do trabalho é gerada. O nome string1 é o nome da cópia e é acrescentado ao nome do trabalho. Para cada ocorrência de string2, uma variável chamada string2 com o valor string3 está disponível para o trabalho.

Observação

Os nomes de configuração de matriz devem conter apenas letras básicas do alfabeto latino (A-Z e a-z), dígitos (0-9) e sublinhados (_). Eles precisam iniciar com uma letra. Além disso, seu comprimento deve ter 100 caracteres ou menos.

A palavra-chave opcional maxParallel especifica o número máximo de segmentos simultâneos de matriz a serem executados.

Se maxParallel não for especificado ou definido como 0, nenhum limite será aplicado.

Se maxParallel não for especificado, nenhum limite será aplicado.

Observação

A sintaxe matrix não dá suporte ao dimensionamento automático de trabalhos, mas você pode implementar funcionalidades semelhantes usando a palavra-chave each. Para obter um exemplo, confira expressões.

Exemplos

Criar em várias plataformas

Este exemplo usa uma matrix estratégia de trabalho para criar em várias plataformas.

# Build NodeJS Express app using Azure Pipelines
# https://learn.microsoft.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

Esse pipeline usa o script para ser executado no interpretador de script integral de cada plataforma: Bash no macOS e no Linux, CMD no Windows. Confira Scripts multiplataforma para saber mais.

Criar em várias plataformas usando agentes auto-hospedados e hospedados pela Microsoft

O exemplo a seguir se baseia em um agente auto-hospedado e em um agente hospedado pela Microsoft, especificando um vmImage e uma Pool variável, como o exemplo a seguir. Para o agente hospedado, especifique Azure Pipelines como o nome do pool e, para agentes auto-hospedados, deixe o vmImage em branco. O espaço em branco vmImage para o agente auto-hospedado pode resultar em algumas entradas incomuns nos logs, mas elas não afetarão o 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

Compilar usando diferentes versões do Python

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

Essa matriz cria três trabalhos: "Compilar Python35", "Compilar Python36" e "Compilar Python37". Em cada trabalho, uma variável chamada PYTHON_VERSION está disponível. Em "Compilar Python35", a variável é definida como "3.5". Ela também é definida como "3.6" em "Compilar Python36". Apenas dois trabalhos são executados simultaneamente.

estratégia: paralelo

A estratégia de trabalho paralela especifica quantas duplicatas de um trabalho devem ser executadas.

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

Propriedades

parallel String.
Execute o trabalho muitas vezes.

Comentários

A estratégia de trabalho paralela é útil para cortar uma matriz de teste grande. A tarefa Teste do Visual Studio entende como dividir a carga de teste entre o número de trabalhos agendados.

Exemplos

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4