Поток развертывания конвейера CI / CD для среды тестирования и разработки - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь реализовать конвейер CI / CD для создания своего развертывания микросервиса в Spring Boot.Я пытаюсь использовать свой репозиторий SVN, Kubernetes и Jenkins для реализации конвейера.Когда я изучал развертывание с использованием Kubernetes и Jenkins, я нашел учебники и множество видео для развертывания в среде тестирования и разработки путем создания и определения в Jenkinsfile.А также добавление сценария оболочки в конфигурации Jenkins.

Путаница

Здесь я почувствовал сомнение в том, что, когда мы внедряем в тестовую среду, как мы можем развернуть ее в среде prod после завершения надлежащего тестирования?Нужно ли добавлять отдельный скрипт для prod?Или мы развертываем последовательно, используя один сценарий как для теста, так и для продукта?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Мы работаем над проектом с открытым исходным кодом под названием Jenkins X , который является предлагаемым подпроектом фонда Jenkins, направленным на автоматизацию CI / CD на Kubernetes с использованием Jenkins и GitOps для продвижения.

Когда вы объединяете изменения в основную ветку, Jenkins X создает новый семантически версионный дистрибутив вашего приложения (pom.xml, jar, изображение докера, диаграмма руля).Затем конвейер автоматизирует генерацию запросов на извлечение для продвижения вашего приложения во всех средах через GitOps.

Вот демонстрация того, как автоматизировать CI / CD с несколькими средами в Kubernetes с помощью GitOps для продвижения между средами и Preview Environments по запросу Pull - с использованием приложений Spring Boot и nodejs (но мы поддерживаем много языков + фреймворки).

0 голосов
/ 21 мая 2018

Это зависит только от вас, как вы хотите это сделать.В общем, мы создаем отдельные кластеры k8s для работы и постановки (и т. Д.).И ваш Jenkins должен быть развернут в другом кластере в зависимости от вашего конвейера.Если вам нужен настоящий CI / CD, тогда достаточно одного конвейера, который будет развернут в обоих кластерах (или средах).

В большинстве случаев предприятия не хотят, чтобы CI работала (по очевидным причинам).,Им требуется ручное тестирование в средах контроля качества перед его развертыванием в prod.

Поскольку k8s основан на контейнерах, развертывание одного и того же образа в разных средах действительно очень просто.Вы просто создаете свое приложение для весенней загрузки один раз, а затем при необходимости развертываете его в разных средах.

Простой конвейер:

  1. Код нажал и сборка запущена.
  2. Сборка с модульными тестами.
  3. Создайте образ докера и отправьте его в реестр.
  4. Запустите kubectl / helm / etc, чтобы развернуть новый образ сборки в STAGING
  5. Проверьте, еслиРазвертывание прошло успешно

Если вы хотите развернуть то же самое в prod, продолжите конвейер с помощью (здесь вы также можете остановиться для QA https://jenkins.io/doc/pipeline/steps/pipeline-input-step/):

Запустите kubectl / helm / etc, чтобы развернуть образ новой сборки в PRODUCTION Проверьте, было ли развертывание успешным

Если вашему QA требуется больше времени, тогда вы также можетесоздайте другое задание Jenkins и запустите его вручную (даже с помощью QA могут это вызвать)

Если вы QA и PM - технари, то они также могут объединять ветви или закрывать PR, что может автоматически запускать jenkins и запускать prodразвертывания.

РЕДАКТИРОВАТЬ (ответ на комментарий): вы выполняете вызовы REST для API k8s.Даже kubectl apply -f foo.yaml сделает этот вызов покоя.Неважно, откуда вы делаете этот вызов - учитывая, что ваш kubectl настроен правильно и может общаться с сервером k8s.Вы можете настроить несколько кластеров для kubectl и использовать kubectl --context <staging-cluster> apply -f foo.yaml.Вы можете выбрать имя контекста из переменной enen jenkins или другого механизма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...