Рубрики
Uncategorized

Azure DevOps Yaml Build Pipeline: как использовать переменные?

Я использую Azure DevOps в течение долгого времени, и я всегда использую графический интерфейс, когда до сих пор создаю строительство конвейера, хотя я … Tagged с Azure, DevOps, Yaml.

Я использую Azure DevOps в течение долгого времени, и я всегда использую GUI при создании конвейера сборки, хотя я знал, что Azure DevOps поддерживает YAML и его преимущества.

Итак, на этот раз я попробовал Yaml вместо GUI, и я узнал много вещей. В этой статье я говорю о «переменных».

Давайте начнем с графического интерфейса. Существует место для хранения переменных для прицела трубопровода.

И глобальный объем.

Используйте формат $ (xxx), чтобы ссылаться на него.

Прежде всего, я могу ссылаться на переменную, так же, как GUI. Кроме того, я могу напрямую написать параметр в YAML.

variables:
  myval: 1

Я также могу использовать все переменные вне коробки, а также мои собственные определенные группы переменных.

Поскольку Yaml — это просто текстовый файл, я не должен хранить секрет. Я могу использовать функцию «переменная» YAML Editor для хранения как небезопасных, так и безопасных переменных.

  1. Нажмите «Переменные».

  2. Нажмите «Новая переменная».

  3. Введите информацию. Проверьте «сохранить это значение в секрете», если это секрет:)

  4. Продолжайте добавлять по мере необходимости.

Но где хранятся эти переменные?

  1. Перейдите к триггерам первым.

  2. Затем вы видите вкладку переменных, например, 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»