Получите последние теги git на конвейере Gitlab CI / CD - PullRequest
0 голосов
/ 28 января 2020

Я хочу настроить конвейеры CI / CD в Gitlab, которые могут читать последний тег и получать этот последний тег для увеличения моего приложения следующей версии. Я пришел с этой конфигурацией:

stages:
  - version

calculate_version:
  image:
    name: alpine/git:latest
    entrypoint: [""]
  stage: version
  script:
    - VERSION=$(git tag);test -z "$VERSION" && echo "no version tag found" && exit 1
    - CMDLINE="$VERSION";
    - echo $VERSION
    - echo $CMDLINE > cmdline
  artifacts:
    paths:
      - cmdline

Но у меня нет тегов, перечисленных там на $ VERSION. Похоже, Gitlab не передает теги в хранилище. Однако, если я создаю и пу sh новый тег, он показывает только этот новый тег, а не весь список тегов, который я ожидал.

Это поведение GitLab ci / cd? Если да, как я могу получить все теги в моем репо внутри конвейера?

1 Ответ

1 голос
/ 28 января 2020

Вы можете получить теги, используя Gitlab API

По умолчанию результаты упорядочены по последним обновленным тегам, поэтому, если вы хотите получить последний, вы можете изменить свой блок скрипта. как это:

  script:
    - VERSION=$(curl -Ss --request GET --header "PRIVATE-TOKEN: <REPLACE_BY_A_VARIABLE>" "https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/repository/tags" | jq -r '.[0] | .name')
    - test -z "$VERSION" && echo "no version tag found" && exit 1
...