В разделе 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
Дайте ожидаемое поведение.