определение job.job.strategy
Стратегия выполнения для этого задания.
Реализации
Внедрение | Описание |
---|---|
стратегия : матрица, maxParallel | Стратегия задания матрицы. |
стратегия : параллельная | Стратегия параллельного задания. |
Замечания
Сведения о доступе к переменным из задания в последующем задании см. в разделе Задание переменной вывода с несколькими заданиями.
стратегия: матрица, 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, ограничение не применяется.
Примечание.
Синтаксис matrix
не поддерживает автоматическое масштабирование заданий, но вы можете реализовать аналогичные функции с помощью ключевого слова each
. Пример см. в выражениях.
Примеры
Создание на нескольких платформах
В этом примере используется стратегия задания matrix
для создания на нескольких платформах.
# Build NodeJS Express app using Azure Pipelines
# https://learn.microsoft.com/azure/devops/pipelines/ecosystems/javascript
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". Он также установлен на "3.6" в разделе "Сборка Python36". Одновременно выполняются только два задания.
стратегия: параллельная
Стратегия параллельного задания указывает, сколько дубликатов задания должно выполняться.
strategy:
parallel: string # Run the job this many times.
Свойства
строка parallel
.
выполнить задание много раз.
Замечания
Стратегия параллельного задания полезна для срезов большой матрицы тестирования. Задача тестирования Visual Studio понять, как разделить тестовую нагрузку на количество запланированных заданий.
Примеры
jobs:
- job: SliceItFourWays
strategy:
parallel: 4