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


определение job.job.strategy

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

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

Реализации

Внедрение Описание
стратегия : матрица, 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