Azure конвейерный интерфейс для принятия параметров (например, Jenkins) - PullRequest
0 голосов
/ 27 апреля 2020

В Jenkins есть концепция пользовательского интерфейса с выпадающими списками и т. Д. c. чтобы позволить пользователям указывать переменные во время выполнения. Это оказалось необходимым в наших сборках для принятия решений в конвейере (ie. На каком агенте работать, какую базу кода выбрать и т. Д. c). Разрешая параметры, мы можем иметь один конвейер / определение для одной и той же задачи для многих клиентов / выпусков / сред.

Я наблюдал, как много людей за последний год просили об этом - чтобы исключить количество почти идентичные определения сборки - есть ли лучший способ справиться с этим? Было бы неплохо иметь одно определение сборки для конкретной задачи c, которая может быть достаточно умной для обработки параметров.

Редактировать: пример возможного псевдокода для построения по предложению levi-lu@MSFT.

parameters:
- name: ClientName
  displayName: Pool Image
  default: Select client
  values: powershell
  valuesScript : [
      assemble curl request to http://myUrl.com/Clients/GetAll
  ]

- name: TargetEnvironment
  displayName: Client Environment
  type: string
  values: powershell
  valuesScript: [
      assemble curl request using above parameter value to 
        https://myUrl.com/Clients/$(ClientName)/GetEnvironments
  ]


trigger: none

jobs:
- job: build
  displayName: Run pipeline job
  pool: 
    vmImage: windows-latest
  parameters:
    ClientName : $(ClientName)
    TargetEnvironment : $(TargetEnvironment)
  steps:
  - script: echo building $(Build.BuildNumber)

1 Ответ

0 голосов
/ 28 апреля 2020

Параметры времени выполнения теперь доступны. Теперь вы можете установить параметры времени выполнения в начале конвейерного YAML, используя parameters. Для приведенного ниже примера:

parameters:
- name: image
  displayName: Pool Image
  default: ubuntu-latest
  values:
  - windows-latest
  - vs2017-win2016
  - ubuntu-latest
  - ubuntu-16.04
  - macOS-latest
  - macOS-10.14
- name: test
  displayName: Run Tests?
  type: boolean
  default: false

trigger: none

jobs:
- job: build
  displayName: Build and Test
  pool: 
    vmImage: ${{ parameters.image }}
  steps:
  - script: echo building $(Build.BuildNumber)
  - ${{ if eq(parameters.test, true) }}:
    - script: echo "Running all the tests"

Приведенный выше пример взят из официального документа Microsoft. Нажмите здесь , чтобы узнать больше о параметрах времени выполнения.

Когда вы будете работать над конвейером Yaml, вы сможете выбрать значение параметра из выпадающего списка. См. Скриншот ниже.

enter image description here

Обновление: для динамической установки переменных во время выполнения.

Вы можете использовать команду ведения журнала task.setvariable для динамически устанавливать переменные в сценариях.

Для приведенного ниже примера: $ resultValue - это значение из вызова остальных API. И его значение присваивается переменной VariableName

- powershell: |
    $resultValue = call from Rest API
    echo "##vso[task.setvariable variable=VariableName]$resultValue"

Проверьте документ здесь для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...