Параметризованная сборка jenkins с помощью github webhooks
Я сконфигурировал свое задание jenkins (freestyle) со средами dev / test / prod, используя параметр выбора с параметром "Этот проект параметризован" из конфигурации задания jenkins.
Я установил webhook в моем github, так как https://myjenkins/github-webhook/. когда я фиксирую изменения в github repo, он запускает сборку в jenkins всегда с опцией среды "dev". как заставить его выбрать любую другую среду, исходя из моих требований?
Я погуглил, но не нашел правильного ответа. Кто-нибудь может мне помочь?
2 ответа
Короткий ответ
Используйте некоторую отраслевую стратегию и в своей работе сделайте что-то вроде:
IF BRANCH == DEVELOPMENT
deploy to dev
IF BRANCH endsWith SNAPSHOT
deploy to dev
IF BRANCH == MASTER
deploy to production
ETC ...
Подробный ответ
Когда разработчик выполняет git push для Github, Bitbucket или Gitlab, эти платформы отправляют Json на ваш сервер непрерывной интеграции (jenkis, travis и т. Д.) С большим количеством информации, связанной с событием push. Наиболее важными являются:
- имя хранилища
- имя целевой ветви: ветвь, которая получает git push
- отправить сообщение
- совершить автора
Затем на вашем сервере непрерывной интеграции вы должны проанализировать этот Json, чтобы получить важные значения. В jenkis есть несколько плагинов, таких как: общий webhook, простой плагин webhook, плагин github и т. Д.
После извлечения значений вы можете применить простую или сложную валидацию, используя имя ветки, сообщение о коммите, автор коммита и т. Д. Например:
- только основная ветвь может быть развернута в производственной среде
- в среду разработки может быть развернута только ветвь, имя которой оканчивается на "снимок": fix-issue-snapshot, feature-abc-snapshot и т. д.
- если сообщение фиксации содержит "WIP", это будет означать, что оно все еще находится в стадии разработки или разработки, тогда развертывание не будет.
- будет задействован только толчок лидера команды
- если сборка, модульное тестирование и другие проверки пройдены в исходном коде ветки разработки Feature-100, будет создана новая ветка с именем Feature-100-Release, а затем эта ветка будет развернута в среде тестирования. Эта ветка * релиза является кандидатом для развертывания в рабочей среде, если группа Q&A не обнаружит никаких функциональных проблем.
- любой другой поток автоматизации от простого к сложному.
Ваше воображение - ваше единственное ограничение.
Полезные ссылки:
Я не знаю, опаздываю ли я, но это для тех, кто ищет ответ по дате. Ответ: просто назначьте то же имя вашей переменной параметра сборки в параметре содержимого сообщения или в любом другом разделе, таком как заголовки или запрос. Как если бы я установил имя ветки в переменной DEPLOY_TO и создал сборку в соответствии с этим именем. Но теперь мы хотим брать имя ветки из вебхука, а не выбирать вручную. Все, что нам нужно сделать, это установить переменную с таким же именем, как мы установим DEPLOY_TO со значением $.push.changes[0].new.name. Это будет работать как чемпион. вот в параметрах поста и посмотри на это