Как исправить «тег уже существует», даже если git ls-remote не дал результата, тег не найден - PullRequest
0 голосов
/ 29 октября 2019

Я сейчас работаю над трубопроводом Дженкинса. Я использую Gitlab в качестве репозитория и Groovy для сценария конвейера. Рабочий процесс выглядит следующим образом:

  1. git init <FOLDER>
  2. git fetch --tags --progress <REPO> +refs/heads/*:refs/remotes/origin/*
  3. git config remote.origin.url <REPO>
  4. git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
  5. git config remote.origin.url <REPO>
  6. git checkout -f <LONGCOMMITHASH>
  7. git branch -a -v --no-abbrev
  8. git checkout -b <BRANCH> <LONGCOMMITHASH>

Это выполняется автоматически с помощью команды Groovy git. Вот вручную написанные шаги для пометки:

  1. git ls-remote --exit-code --tags origin <TAG> || echo 'not found'
  2. git tag <TAG>
  3. git push origin --tags

git ls-remote отвечает 'not found', но git tag говорит: 'fatal: tag' TAG 'уже существует'

Если я запускаю конвейер во второй раз, он работаетпотому что git ls-remote говорит, что тег существует, поэтому не запускается триггер git . Но ничего между двумя запусками не изменилось.

Я уже проверил, правильно ли настроен весь конфиг и он установлен. Также я не смог воспроизвести проблему, и она возникает случайно случайно.

С моим пониманием git ls-remote в первом запуске правильно ответил "не найден" и должен был пометитьЭто. Несмотря на то, что пометка произошла с фатальной ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...