2017-02-15 21 views
0

только недавно начали использовать Travis CI для тестирования сборки. Прошли долгий путь всего за несколько дней, и с ним было очень весело.Получение Travis для пропуска нажатия тега, если он существует

Have строит проходит успешно, но теперь работают мои испытания в нескольких результатах PHP сред только первый тест проходит по нажатию тега/номер сборки на репо и последующие испытания неудовлетворительных с

! [rejected] v2.2017.22 -> v2.2017.22 (already exists)

Моим Башем код, где он делает пуш выглядит следующим образом:

before_deploy: - git config --global user.email "${GIT_EMAIL}" - git config --global user.name "${GIT_NAME}" - export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER - git tag $GIT_TAG -a -m "Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" - git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags

то, что я хотел бы сделать (как можно более простым) заключается в следующем, экс cuse самая хромая формулировка того, чего я хочу достичь здесь :) надеюсь, что кто-то может помочь мне с очень простой линией bash, чтобы достичь этого.

before_deploy: - git config --global user.email "${GIT_EMAIL}" - git config --global user.name "${GIT_NAME}" - export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER - git tag $GIT_TAG -a -m "Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" - git fetch --tags - #if tag $TRAVIS_BUILD_NUMBER already exists then - #don't push and exit with 0 - #else - git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags

ответ

1

Вы можете просто проверить, если git tag удается локально, прежде чем пытаться протолкнуть его (команда if подавляет код возврата ошибки):

... 
export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER 
git fetch --tags 
msg="Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" 
if git tag $GIT_TAG -a -m "$msg" 2>/dev/null; then 
    git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags 
else 
    echo Tag already exists! 
fi 

(Тэг после сборки заканчивается, не раньше; таким образом, вы можете пропустить ошибки и пометить только фактические сборки)

На стороне примечания, я был бы обеспокоен, если тег сборки уже существует, это означает, что у вас не будет надежного способа воспроизведения c в будущем.

+0

Большое вам спасибо, это работает как абсолютное удовольствие. Вместо этого я перевел все мои одиночные строки в before_deploy: в bash-скрипт под названием deploy.sh и теперь имеет только одну строку в before_deploy: которая читает 'travis/deploy.sh ', этот ваш код отлично определяет тег, толкает один раз только и проскакивает нажатием на остальные тесты сборки :) Я должен вам шесть пакетов для этого. – MitchellK

+1

Рад, что это сработало! :) –

+0

У меня есть проблема с нажатием тега, но теперь застрял в том, что мой сценарий записывается в простой .txt-файл и добавляет его в commit. Должен ли я начать новый вопрос по этому вопросу и опубликовать свой код или добавить к этому вопросу? @ sir-athos – MitchellK

 Смежные вопросы

  • Нет связанных вопросов^_^