Я использую Azure DevOps в течение долгого времени, и я всегда использую GUI при создании конвейера сборки, хотя я знал, что Azure DevOps поддерживает YAML и его преимущества.
Итак, на этот раз я попробовал Yaml вместо GUI, и я узнал много вещей. В этой статье я говорю о «переменных».
Давайте начнем с графического интерфейса. Существует место для хранения переменных для прицела трубопровода.
И глобальный объем.
Используйте формат $ (xxx), чтобы ссылаться на него.
Прежде всего, я могу ссылаться на переменную, так же, как GUI. Кроме того, я могу напрямую написать параметр в YAML.
variables: myval: 1
Я также могу использовать все переменные вне коробки, а также мои собственные определенные группы переменных.
Поскольку Yaml — это просто текстовый файл, я не должен хранить секрет. Я могу использовать функцию «переменная» YAML Editor для хранения как небезопасных, так и безопасных переменных.
Нажмите «Переменные».
Нажмите «Новая переменная».
Введите информацию. Проверьте «сохранить это значение в секрете», если это секрет:)
Продолжайте добавлять по мере необходимости.
Но где хранятся эти переменные?
Перейдите к триггерам первым.
Затем вы видите вкладку переменных, например, GUI Pipeline.
Его легко хранить, но мне нужно было знать, какую трюк его используют, так как я не мог просто ссылаться на него. Было очевидно, если я внимательно прочитал документ, но я этого не сделал: D. По сути, мне нужно сопоставить переменную с переменной среды, чтобы ссылаться на нее.
steps: - powershell: | # Using an input-macro: Write-Host "This works: $(mySecret)" # Using the env var directly: Write-Host "This does not work: $env:MYSECRET" # Using the mapped env var: Write-Host "This works: $env:MY_MAPPED_ENV_VAR" # Recommended env: MY_MAPPED_ENV_VAR: $(mySecret)
Причина, по которой я использую группы переменных, заключается в группировке переменных. Затем я понял, что YAML также имеет аналогичную функцию, называемую шаблоном переменной.
Типы шаблонов и использование
Мне просто нужно создать файл YAML, содержит переменные, которые я хочу группировать.
# File: vars.yml variables: favoriteVeggie: 'brussels sprouts'
Затем ссылайся на это в другом ямле.
variables: - template: vars.yml # Template reference steps: - script: echo My favorite vegetable is ${{ variables.favoriteVeggie }}.
Шаблоны предназначены не только для переменных, но и для более мощных вещей. Я найду некоторое время позже, чтобы поговорить о том, что я нашел в шаблоне, если смогу.
Одной из переменной, которую я не смог выяснить сначала, было обслуживание. Я попытался построить и подтолкнуть контейнер Docker в реестр контейнеров Azure и обратиться к документации ниже.
Построить и подталкивать в реестр контейнеров Azure
Внутри статьи есть пример YAML.
- stage: Build displayName: Build and push stage jobs: - job: Build displayName: Build job pool: vmImage: $(vmImageName) steps: - task: Docker@2 displayName: Build and push an image to container registry inputs: command: buildAndPush repository: $(imageRepository) dockerfile: $(dockerfilePath) containerRegistry: $(dockerRegistryServiceConnection) tags: | $(tag)
Я не мог найти, где это DockerRegistryServiceConnection Входит переменная, и позже я понял, что просто передаю имя подключения службы в качестве параметра.
Когда я использую шаблон, он дал мне GUID Но я на самом деле могу просто использовать название строки служб подключения. В примере ниже я установил переменную в YAML и использую ее.
trigger: - master pool: vmImage: 'ubuntu-latest' variables: acrConnection: 'MyAcrServiceConnection' imageName: 'sample-image' steps: - task: Docker@2 displayName: BuildAndPushImageToACR inputs: repository: $(imageName) command: 'buildAndPush' containerRegistry: $(acrConnection) Dockerfile: '**/Dockerfile' tags: $(Build.BuildId)
В этой статье я говорю о переменных в YAML. Я рад обнаружить, что он может использовать все переменные из библиотечных и трубопроводов, как это делает GUI. Кроме того, я могу написать это в YAML, чтобы легко перейти в другие среды DevOps.
Оригинал: «https://dev.to/kenakamu/azure-devops-yaml-build-pipeline-how-to-use-variables-h8i»