Я использую hudson для автоматического развертывания моего приложения Rails на heroku. В своей основной работе по сборке я беру из репозитория Git (размещенного с использованием gitosis на том же компьютере), главную ветку со следующим:
URL of repository: /home/git/repositories/my_app.git
Name of repository: origin
Refspec: +refs/heads/master:refs/remotes/origin/master
Branches to build: master
Затем, предполагая, что все тесты пройдены, я хочу начать новую сборку, которая является развертыванием в Heroku.
Однако я не могу понять, как получить эту развернутую сборку для проверки конкретной ревизии, которую эта сборка использовала. Я понимаю, что есть плагин параметризованного триггера, который позволил бы мне передать этот номер версии, но я не знаю, как я могу сказать Hudson, что нужно проверить эту конкретную версию в сборке развертывания.
Я почти уверен, что это связано с моими ограниченными знаниями git, но где в конфигурации hudson git есть возможность проверить конкретную ревизию?
В противном случае у меня могло бы произойти много коммитов, пока выполняется сборка, и когда она запускает сборку развертывания, эта сборка развертывания просто проверяет HEAD ветки, что может не совпадать с кодом, который был отправлен, который вызвал эта сборка.
Я не совсем понимаю, почему у меня есть refspec в Hudson, а затем также укажите ветку для сборки, я думал, что это то же самое. Может в refspec как-то указать номер ревизии? Как бы на это ссылаться, если бы он был передан с помощью плагина параметризованного триггера?
(Я никогда не использовал этот плагин, но кто-то рекомендовал его как способ передать вары в новую сборку, если есть другой способ, я все уши)
Видеть Вот для объяснения git.
Кстати, вы храните развертываемые артефакты в git или вы перестраиваете свое приложение перед развертыванием? В противном случае пусть ваше первое задание помещает артефакты в репозиторий (может отличаться от артефактов для исходного кода, у нас есть выделенное пространство в файловой системе), а второе задание извлекает его из репозитория и развертывает.
Я думаю, что вы можете сделать это проще, настроив шаги в hudson для запуска ваших тестов, а затем нажмите, если ваши тесты возвращают ненулевой выход при неудаче. Это работает, потому что я думаю, что hudson прекратит выполнение цепочки шагов сборки, как только произойдет сбой (ненулевой статус выхода).