#azure #azure-devops #environment-variables #azure-pipelines
#azure #azure-devops #среда-переменные #azure-конвейеры
Вопрос:
У меня есть несколько очень простых переменных, которые я хотел бы изменить в соответствии с окружающей средой.
Я написал приведенный ниже код очень разными способами (включая отступы), но ни один из них не был плодотворным. Альтернативы, которые я вижу, следующие
- Используйте группы переменных (стараясь избегать их слишком большого количества)
- Напишите скрипт bash, который обновляет переменные (будет работать, но я думаю, что это не очень аккуратное решение)
variables:
- group : secrets
- name: hello
value: world
${{ if eq(parameters.environment, 'dev') }}:
- name: RabbitMQ_replicaCount
value: 3
${{ if eq(parameters.environment, 'test') }}:
RabbitMQ_replicaCount: '1'
Любые другие идеи будут оценены 🙂
Ответ №1:
Я бы предпочел использовать сценарий PS / Bash для этой задачи. Почему? Логическая часть сборки, в которой требуются манипуляции, такие как установка или переопределение var на основе branch или env, может быть выполнена лучшим образом в скрипте, а не в самом сборке yaml. Также эта часть без необходимости удлиняет yaml.
Шаг 1. Определите переменную в конвейере сборки с именем env по умолчанию
и может быть другой переменной, значение которой вы хотите установить на основе условия
Шаг 2: добавьте файл yml (назовем его BuildEnv.yml
) в свой репозиторий, который фактически содержит ваш код PowerShell / Bash:
steps:
- powershell: |
if($BuildEnv -ne "Test"){
Write-Host "##vso[task.setvariable variable=BuildEnv]Dev"
Write-Host "##vso[task.setvariable variable=RabbitMQ_replicaCount]11"
}
displayName: 'Override Build Env'
# MORE CODE HERE
Шаг 3. подключите yml к конвейеру сборки в качестве шаблона-
trigger:
branches:
include:
- master
name: $(date:yyyy-MM-dd_HH.mm)_$(rev:.r)
stages:
- stage: Build_Stage
displayName: Build_Stage
jobs:
- job: Build_Job
pool:
name: ABC
steps:
- template: ..BuildEnv.yml
#REST CODE
Вот и все. Все готово.
Ссылка: использование шаблона в сборке Azure DevOps — https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops