Параметризованная сборка 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
  • отправить сообщение
  • совершить автора

webhook

Затем на вашем сервере непрерывной интеграции вы должны проанализировать этот 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. Это будет работать как чемпион. вот в параметрах поста и посмотри на это

Другие вопросы по тегам