Поделиться через


Определение jobs.job.strategy

Стратегия выполнения для этого задания.

Определения, ссылающиеся на это определение: pipeline, jobs.job

Варианты реализации решения

Реализация Описание
стратегия: matrix, maxParallel Стратегия матричного задания.
стратегия: параллельная Стратегия параллельных заданий.

стратегия: matrix, maxParallel

При использовании матрицы создаются копии задания с разными входными данными. Эти копии полезны для тестирования с различными конфигурациями или версиями платформы.

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

Свойства

matrix { string1: { string2: string3 }.
Матрица, определяющая стратегию задания; См. следующие примеры.

maxParallel Строка.
Максимальное число заданий, выполняющихся параллельно.

Комментарии

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

Для каждого вхождения string1 в матрице создается копия задания. Имя string1 — это имя копии и добавляется к имени задания. Для каждого вхождения string2 для задания доступна переменная string2 со значением string3 .

Примечание

Имена конфигураций матрицы должны содержать только базовые буквы латинского алфавита (A–Z и a–z), цифры (0–9) и символы подчеркивания (_). Имя должно начинаться с буквы. Кроме того, их длина должна быть не более 100 символов.

Необязательный maxParallel ключевое слово указывает максимальное количество одновременных выполнений матрицы.

Если maxParallel параметр не указан или имеет значение 0, ограничение не применяется.

Если maxParallel значение не указано, ограничение не применяется.

Примечание

Синтаксис matrix не поддерживает автоматическое масштабирование заданий, но вы можете реализовать аналогичные each функции с помощью ключевое слово. Пример см. в разделе выражения.

Примеры

Сборка на нескольких платформах

В этом примере используется matrix стратегия задания для создания на нескольких платформах.

# 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

Этот конвейер использует скрипт для выполнения в интегрированном интерпретаторе скриптов каждой платформы: Bash в macOS и Linux, CMD в Windows. Дополнительные сведения см. в статье Многоплатформенные скрипты .

Создание на нескольких платформах с использованием локальных и размещенных агентов Майкрософт

Следующий пример основан как на локальном агенте, так и на агенте, размещенном в Майкрософт, путем указания и vmImage переменной Pool , как показано в следующем примере. Для размещенного агента укажите Azure Pipelines в качестве имени пула, а для локальных агентов оставьте поле vmImage пустым. Использование пустого поля vmImage для локального агента может вызвать появление некоторых необычных записей в журналах, но они не повлияют на конвейер.

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

    selfhosted:
      poolName: FabrikamPool
      vmImage:

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

steps:
- checkout: none
- script: echo test

Сборка с использованием разных версий Python

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

Эта матрица создает три задания: "Сборка Python35", "Сборка Python36" и "Сборка Python37". В каждом задании доступна переменная с именем PYTHON_VERSION. В "Сборка Python35" для переменной задано значение "3.5". В разделе "Сборка Python36" также задано значение "3.6". Одновременно выполняются только два задания.

стратегия: параллельная

Стратегия параллельного задания определяет, сколько дубликатов задания должно выполняться.

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

Свойства

parallel Строка.
Запустите задание так много раз.

Комментарии

Стратегия параллельного задания полезна для срезов большой тестовой матрицы. Задача Тестирования Visual Studio понимает, как разделить тестовую нагрузку на количество запланированных заданий.

Примеры

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4