В разделе cirrus-ci git describe --tags - всегда возвращает sha1 вместо tag

Я пытаюсь получить информацию git на основе последнего тега с помощью команды git describe --tags --always.
Это хорошо работает на моем компьютере от circle-ci, travis-ci, но не с использованием cirrus-ci.

С тем же Dockerfile, который запускает

 echo "GIT:$(git describe --tags --always --dirty)"

От circle-ci я получаю, как и ожидалось, журнал:

GIT:v0.0-6-ge75d196

Но из журнала cirrus-ci

GIT:e75d196

Я установил для переменной окружения CIRRUS_CLONE_DEPTH значение 0, но это похоже на ссылку на историю текущей ветки и не включает теги.

Есть ли способ попросить cirrus-ci получить теги?

1 ответ

Решение

Использование пользовательского скрипта для клонирования вместо реализации go-git по умолчанию, как описано в советах и уловках

  clone_script: |
    if [ -z "$CIRRUS_PR" ]; then
      git clone --recursive --branch=$CIRRUS_BRANCH https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
      git reset --hard $CIRRUS_CHANGE_IN_REPO
    else
      git clone --recursive https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
      git fetch origin pull/$CIRRUS_PR/head:pull/$CIRRUS_PR
      git reset --hard $CIRRUS_CHANGE_IN_REPO
    fi  

Дайте ожидаемое поведение.

Другие вопросы по тегам