Compartir vía


definición de jobs.job.strategy

Estrategia de ejecución para este trabajo.

Definiciones que hacen referencia a esta definición: canalización, jobs.job

Implementaciones

Implementación Descripción
strategy: matrix, maxParallel Estrategia de trabajo de matriz.
estrategia: paralela Estrategia de trabajo en paralelo.

strategy: matrix, maxParallel

El uso de una matriz genera copias de un trabajo, cada una con una entrada diferente. Estas copias son útiles para las pruebas en diferentes configuraciones o versiones 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.

Propiedades

matrix { string1: { string2: string3 }.
Matriz que define la estrategia de trabajo; consulte los ejemplos siguientes.

maxParallel Cadena.
Número máximo de trabajos que se ejecutan en paralelo.

Comentarios

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

Para cada aparición de string1 en la matriz, se genera una copia del trabajo. El nombre string1 es el nombre de la copia y se anexa al nombre del trabajo. Para cada aparición de string2, una variable denominada string2 con el valor string3 está disponible para el trabajo.

Nota:

Los nombres de configuración de matriz solo deben contener letras alfabéticas latinas básicas (A-Z y a-z), dígitos (0-9) y caracteres de subrayado (_). Deben empezar con una letra. Además, su longitud debe tener 100 caracteres o menos.

La palabra clave opcional maxParallel especifica el número máximo de segmentos de matriz simultáneos que se ejecutarán a la vez.

Si maxParallel no se especifica o se establece en 0, no se aplica ningún límite.

Si maxParallel no se especifica, no se aplica ningún límite.

Nota:

La sintaxis matrix no admite el escalado automático de trabajos, pero puede implementar una funcionalidad similar mediante la palabra clave each. Para obtener un ejemplo, vea expresiones.

Ejemplos

Compilar en varias plataformas

En este ejemplo se usa una matrix estrategia de trabajo para crear en varias 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

Esta canalización usa script para ejecutarse en el intérprete de scripts integrales de cada plataforma: Bash en macOS y Linux, CMD en Windows. Para más información, consulte Scripts de varias plataformas.

Compilación en varias plataformas mediante agentes autohospedados y hospedados por Microsoft

En el ejemplo siguiente se basa tanto en un agente autohospedado como en un agente hospedado por Microsoft, especificando una vmImage variable y , Pool como en el ejemplo siguiente. Para el agente hospedado, especifique Azure Pipelines como nombre del grupo y, para los agentes autohospedados, deje vmImage en blanco. La opción de vmImage en blanco para el agente autohospedado puede dar lugar a algunas entradas inusuales en los registros, pero no afectará a la canalización.

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

    selfhosted:
      poolName: FabrikamPool
      vmImage:

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

steps:
- checkout: none
- script: echo test

Compilación con diferentes versiones de 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 crea tres trabajos: "Build Python35", "Build Python36" y "Build Python37". Dentro de cada trabajo, hay disponible una variable denominada PYTHON_VERSION. En "Build Python35", la variable se establece en "3.5". También se establece en "3.6" en "Build Python36". Solo se ejecutan dos trabajos simultáneamente.

estrategia: paralela

La estrategia de trabajo en paralelo especifica cuántos duplicados de un trabajo se deben ejecutar.

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

Propiedades

parallel Cadena.
Ejecute el trabajo muchas veces.

Comentarios

La estrategia de trabajo en paralelo es útil para segmentar una matriz de prueba grande. La tarea de prueba de Visual Studio entiende cómo dividir la carga de pruebas en el número de trabajos programados.

Ejemplos

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4