Имя тега Git в конвейере Azure Devops YAML - PullRequest
0 голосов
/ 13 июня 2019

Резюме

Как получить имя текущего тега git в YAML-файле Azure Devops Pipeline?

Что я пытаюсь сделать?

Я настраиваю конвейер сборки в Azure Devops. Конвейер запускается при создании нового тега git. Затем я хочу создать образ докера и пометить его именем тега git.

Мой конвейер YAML выглядит примерно так:

# Trigger on new tags.
trigger:
  tags:
    include:
    - '*'

stages:
- stage: Build
  jobs:
  - job: Build
    pool:
      vmImage: 'ubuntu-latest'

    steps:
    - script: export VERSION_TAG={{ SOMEHOW GET THE VERSION TAG HERE?? }}
      displayName: Set the git tag name as environment variable

    - script: docker-compose -f k8s/docker-compose.yml build
      displayName: 'Build docker containers'

    - script: docker-compose -f k8s/docker-compose.yml push
      displayName: 'Push docker containers'

И файл docker-compose, на который я ссылаюсь, примерно такой:

version: '3'
services:
  service1:
    image: my.privaterepo.example/app/service1:${VERSION_TAG}
    build:
      [ ... REDACTED ]
  service2:
    image: my.privaterepo.example/app/service2:${VERSION_TAG}
    build:
      [ ... REDACTED ]

Как видите, имя тега в файле docker-compose берется из переменной окружения VERSION_TAG. В конвейере YAML я пытаюсь установить переменную окружения VERSION_TAG на основе текущего тега GIT. Итак ... как мне получить имя тега?

1 Ответ

0 голосов
/ 13 июня 2019

Хорошо, это было немного сложнее, чем я ожидал. Вот шаг, необходимый для установки переменной:

steps:
    - script: VERSION_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=VERSION_TAG]$VERSION_TAG"
      displayName: Set the tag name as an environment variable

Этот скрипт устанавливает переменную VERSION_TAG в качестве имени последнего тега git. Это делается в три этапа:

1: git describe --tags

Печатает название текущего / последнего тега

2: VERSION_TAG=`...`

Устанавливает вывод шага 1 в локальную переменную

3: echo "##vso[task.setvariable variable=VERSION_TAG]$VERSION_TAG"

Распечатывает команду, которая устанавливает переменную в Azure Devops. Локальная переменная, заданная на шаге 2, используется в качестве значения.

...