definição jobs.job.strategy

Estratégia de execução para esta tarefa.

Definições que referenciam esta definição: pipeline, jobs.job

Implementações

Implementação Descrição
estratégia: matriz, maxParallel Estratégia de tarefas de matriz.
estratégia: paralela Estratégia de tarefa paralela.

estratégia: matriz, maxParallel

A utilização de uma matriz gera cópias de uma tarefa, cada uma com entradas diferentes. Estas cópias são úteis para testar diferentes configurações ou versões da 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 que define a estratégia de trabalho; veja os exemplos seguintes.

maxParallel cadeia.
Número máximo de tarefas em execução em paralelo.

Observações

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

Para cada ocorrência de string1 na matriz, é gerada uma cópia da tarefa. A cadeia de nome1 é o nome da cópia e é anexada ao nome da tarefa. Para cada ocorrência de cadeia2, uma variável chamada string2 com a cadeia de valor3 está disponível para a tarefa.

Nota

Os nomes de configuração da matriz têm de conter apenas letras básicas do alfabeto latino (A-Z e a-z), dígitos (0-9) e carateres de sublinhado (_). O nome tem de começar por uma letra. Além disso, o seu comprimento tem de ter 100 carateres ou menos.

A palavra-chave opcional maxParallel especifica o número máximo de pernas de matriz simultâneas a executar ao mesmo tempo.

Se maxParallel não for especificado ou definido como 0, não é aplicado qualquer limite.

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

Nota

A matrix sintaxe não suporta o dimensionamento automático de tarefas, mas pode implementar funcionalidades semelhantes com a each palavra-chave. Por exemplo, veja expressões.

Exemplos

Criar em várias plataformas

Este exemplo utiliza uma estratégia de matrix 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

Este pipeline utiliza script para ser executado no interpretador de script integral de cada plataforma: Bash no macOS e Linux, CMD no Windows. Veja scripts de várias plataformas para saber mais.

Criar em várias plataformas com agentes autoalojados e alojados na Microsoft

O exemplo seguinte baseia-se num agente autoalojado e num agente alojado pela Microsoft, ao especificar uma vmImage variável e uma Pool variável, como no exemplo seguinte. Para o agente alojado, especifique Azure Pipelines como o nome do conjunto. Para agentes autoalojados, deixe vmImage em branco. O espaço em branco vmImage para o agente autoalojado pode resultar em algumas entradas invulgares nos registos, mas 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

Criar com versões diferentes do Python

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

Esta matriz cria três tarefas: "Compilar Python35", "Compilar Python36" e "Compilar Python37". Em cada tarefa, está disponível uma variável com o nome PYTHON_VERSION. Em "Build Python35", a variável está definida como "3.5". Também está definido como "3.6" em "Compilar Python36". Apenas duas tarefas são executadas em simultâneo.

estratégia: paralela

A estratégia de tarefa paralela especifica quantos duplicados de uma tarefa devem ser executados.

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

Propriedades

parallel cadeia.
Execute a tarefa várias vezes.

Observações

A estratégia de tarefa paralela é útil para cortar uma matriz de teste grande. A tarefa de Teste do Visual Studio compreende como dividir a carga de teste pelo número de tarefas agendadas.

Exemplos

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4