Определение jobs.job.strategy
Стратегия выполнения для этого задания.
Варианты реализации решения
Реализация | Описание |
---|---|
стратегия: 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://video2.skills-academy.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