Azure DevOps Server 2019: условие выполнения задачи

В Azure DevOps Services я использую параметры, чтобы сделать выполнение задачи необязательным, например:

...
parameters:
- name: createObj
  displayName: 'Create Object?'
  type: boolean
  default: true

...
jobs:
- job: build
  pool:
    name: Default
  steps:
  - ${{ if eq(parameters.createObj, true) }}:
    - template: ./templates/create-object.yml

Azure DevOps Server 2019 не поддерживает параметры, есть идеи, как можно добавить такое условие?


person kagarlickij    schedule 18.06.2020    source источник


Ответы (1)


Azure DevOps Server 2019 не поддерживает параметры, есть идеи, как можно добавить такое условие?

Да, согласно этот билет Azure DevOps Server 2019 плохо поддерживает параметры. Поэтому я предлагаю вам попробовать условные задания / шаги с использованием переменных вместо параметров, чтобы получить более подробную информацию о Синтаксис условий.

Поскольку в настоящее время параметры не поддерживаются в Azure Devops Server, не рекомендуется использовать шаблоны в вашем сценарии. (Переменные нельзя использовать для условного шаблона). Вы можете развернуть эти шаги прямо в вашем azure-pipeline.yml файле следующим образом:

jobs:
- job: build
  pool:
    name: Default
  steps:
    - task: CmdLine@2
      inputs:
        script: 'echo This is first build task'
      condition: {Add your custom condition here in Step level.}
    - task: CmdLine@2
      inputs:
        script: 'echo This is second build task'

- job: test
  condition: {Add your custom condition here in Job level.}
  pool:
    name: Default
  steps:
    - task: CmdLine@2
      inputs:
        script: 'echo This is first test task'
    - task: CmdLine@2
      inputs:
        script: 'echo This is second test task'

Вы можете добавить условие на уровне задания / шага, чтобы определить, будет ли выполняться одно задание / шаг.

Примеры для двух разных направлений:

1. Определите переменную (жесткий код) в yaml:

variables:
  WhetherToRunCmd:true

jobs:
- job: build
  pool:
    name: Default
  steps:
    - task: CmdLine@2
      inputs:
        script: 'echo This is first build task'
      condition: ne(variables.WhetherToRunCmd,false)
    - task: CmdLine@2
      inputs:
        script: 'echo This is second build task'

Тогда первая задача cmd будет запущена по умолчанию, и она перестанет запускаться, когда мы изменим WhetherToRunCmd:true на WhetherToRunCmd:false.

2. Используйте переменная времени очереди, не нужно определять переменную в файле yml:

Отредактируйте конвейер yaml и выберите Variables:

введите описание изображения здесь

Определите переменную WhetherToRunJob и активируйте настраиваемую во время очереди:

введите описание изображения здесь

Затем используйте что-то вроде этого в yml:

- job: test
  condition: ne(variables.WhetherToRunJob,false)

Затем это задание будет запускаться по умолчанию и пропустить его, когда мы изменим значение на false с помощью Queue with parameters option:

введите описание изображения здесь

Я думаю, что variables+condition также может удовлетворить ваши потребности, связанные с условным выполнением шагов / заданий. Также вы можете изменить условия, если хотите, например и (success (), eq (...) ...) или что-то еще.

person LoLance    schedule 19.06.2020