В скрипте bash я жду, когда будет выпущен определенный удаленный тег git, прежде чем использовать его в своем скрипте.
Как проверить в интервальном цикле наличие тегов перед выполнением команды git checkout $tag
?
Пример:
while sleep 3; do git fetch && git rev-parse --verify <tag> && break; done
Редактировать
Я создал следующие функции bash:
function wait_for_tag() {
tag=v${1#v}
interval=${2:-20}
while :; do
echo "Waiting for tag ${tag}..."
git remote update > /dev/null 2>&1
git rev-parse --verify --quiet "${tag}" && break
sleep ${interval}
done
}
function git_checkout() {
tag=v${1#v}
is_release && wait_for_tag "${tag}"
git checkout ${tag} || echo "testing"
npm install
}
Я ожидаю, когда я выполню git_checkout v2.0.13-bs-redux-saga-router-dom-intl
, чтобы извлечь тег, если он уже существует, в противном случае, получить новые теги и повторить попыткупозже.
Кажется, это хорошо работает в локальной среде, но когда я делаю это в Gitlab-CI, параллельные конвейеры никогда не видят новый тег, даже если они помечены и существуют в пользовательском интерфейсе Gitlab.
Как я могу убедиться, что функция wait_for_tag
действительно извлекает теги и почему git remote update
не может это сделать?