Я сейчас работаю над трубопроводом Дженкинса. Я использую Gitlab в качестве репозитория и Groovy для сценария конвейера. Рабочий процесс выглядит следующим образом:
git init <FOLDER>
git fetch --tags --progress <REPO> +refs/heads/*:refs/remotes/origin/*
git config remote.origin.url <REPO>
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git config remote.origin.url <REPO>
git checkout -f <LONGCOMMITHASH>
git branch -a -v --no-abbrev
git checkout -b <BRANCH> <LONGCOMMITHASH>
Это выполняется автоматически с помощью команды Groovy git. Вот вручную написанные шаги для пометки:
git ls-remote --exit-code --tags origin <TAG> || echo 'not found'
git tag <TAG>
git push origin --tags
git ls-remote отвечает 'not found', но git tag говорит: 'fatal: tag' TAG 'уже существует'
Если я запускаю конвейер во второй раз, он работаетпотому что git ls-remote говорит, что тег существует, поэтому не запускается триггер git . Но ничего между двумя запусками не изменилось.
Я уже проверил, правильно ли настроен весь конфиг и он установлен. Также я не смог воспроизвести проблему, и она возникает случайно случайно.
С моим пониманием git ls-remote в первом запуске правильно ответил "не найден" и должен был пометитьЭто. Несмотря на то, что пометка произошла с фатальной ошибкой.