definição jobs.job.strategy
Estratégia de execução para este trabalho.
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