Git Flow и непрерывная интеграция / непрерывная доставка - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь понять, какие этапы используются для использования потока Git с конвейером CI / CD (доставка nb не развертывание)

Я подумал, что могу получить задание Jenkins, которое запускаетсяподталкивает к развитию ветки.И другой, который запускается, когда ветвь релиза объединяется с основной ветвью.Ниже приведен примерный набросок того, что я думаю.Это Java-проекты, использующие Gradle в качестве инструмента для сборки с несколькими подпроектами в составе репозитория.

разработчик вносит изменения в удаленную ветку dev подпроекта

конвейер ветки dev подпроекта Jenkins

  1. Подпроектное задание jenkins запущено
  2. запустить инкрементную сборку подпроекта
  3. , если передано, опубликовать jar снимков и исходные коды для репозитория артефактов снимков / еще отправить электронное письмо на адрес devs
  4. создать образ докерана основе снимка
  5. изображение push-докера
  6. запуск образа докера kubernetes на сервере dev
  7. запуск дополнительных тестов (например, не работает для производительности, сканирования veracode и т. д.)
  8. , если передана ветка разработки ветки в новую ветку выпуска для подпроекта (версия была определена во время создания) / иначе отправить электронное письмо на адрес devs
  9. удалить снимок из версии проекта, например.1.0-SNAPSHOT становится 1.0
  10. , объединяет изменения в мастер и помечает их версией и подпроектом, например.1.0-serviceX
  11. объединяет изменения в разработку и обновляет версию до нового снимка, например.1.1-SNAPSHOT

Главный ветвь ветки подпроекта Jenkins

  1. Запущено задание jenkins подпроекта
  2. запустить чистую сборку подпроекта
  3. , если прошло публикациювыпускать jar и исходники для релизов артефактного репозитория
  4. создавать образ докера на основе релиза
  5. образ push-докера
  6. иметь образ запуска докера kubernetes на сервере SIT
  7. запускать дополнительные тесты (например, не работает для производительности, сканировать veracode и т. д.)
  8. , если передано, есть образ запуска докера kubernetes на сервере UAT
  9. запускать дополнительные тесты (например, не работает для производительности,сканирование veracode и т. д.)
  10. Релиз готов для ручного развертывания в Prod

Таким образом, слияние с ведущим по конвейеру dev вызовет ведущий конвейер.У меня есть несколько вопросов.

  1. Я назвал это инкрементной сборкой для конвейера разработки, то есть не для очистки.Это хорошая идея для быстрой обратной связи?
  2. На аналогичной заметке для быстрой обратной связи следует пропустить интеграционные тесты?
  3. Если да, мне понадобится другой конвейер для ночной сборки ветки dev, котораявключает в себя интеграционные тесты.Или выполнение интеграционных тестов в основной ветке будет удовлетворительным?
  4. SNAPSHOTS!Я не уверен, как они вписываются в Gitflow?Они нужны мне?Если бы не на шаге 3 конвейера разработки, я бы вместо этого запустил ветку релиза, сделайте еще одну сборку с новой версией, опубликуйте ее в артефакте и т. Д. И т. Д.

Это пока подойдет!

...