Автор оригинала: Chainarong Tangsurakit (Por).
Оригинал из https://product.hotelquickly.com/connecting-jenkins-ci-to-vm-based-Application-587213D98C86.
У HotelSicly мы обнимаем архитектуру микросервисов. Многие приложения являются небольшими, легкими весами и контейнером. Давайте назовем это современной системой. Эти приложения в данный момент работают в Google Containter Engine (кластер Kubernetes).
К сожалению, есть некоторые из старых приложений, которые не основаны на контейнере. Это монолитное применение, написанное Nette PHP Framework. Он был разработан для работы на виртуальных машинах AutoShale Group за балансом нагрузки. Давайте назовем это наследие-систему.
Эта статья будет в основном сосредоточена на расходе и потоке развертывания на легационном потоке.
Предыдущий расход разработки
Ранее, когда разработчик заканчивает свою кодирующую часть, как и любая другая организация, Developer, затем толкает их коммит к удаленной ветви. В нашем случае мы используем GitHub в качестве нашего удаленного репозитория кода. Этот коммит толкает, затем вызвать Jenkins CI, чтобы построить работу. Мы используем трубопровод Jenkins (Jenkinsfile) для того, чтобы рассказать Дженкинс, что делать дальше. Главным образом, он будет запустить тест и отправить статус сборки обратно в GitHub, поэтому разработчик может заметить, проходит ли тест или нет. Это был наш поток во время этапа развития.
Предыдущий поток развертывания
Когда все идет хорошо, затем разработчик переходит в канал # развертывание в Slash, который имеет интегрированное HUBOT с именем @ Wall-e. И Developer может отправить команду @ Wall-e, поэтому он может развернуть код до производства через Ansible-PlayBook для производственных узлов. Это был наш поток во время этапа развертывания.
Так в чем проблема ?
С предыдущим потоком он создает пару проблем, таких как следующие …
- Не стандартный, в HQ мы принимаем стандарт.
- Разработчик может продвигать тест не удалось добычу.
- Не может легко откатиться.
- Время раскрутки масштабирования узла заняла довольно долго (потому что он требует обеспечения на основе на основе на основе
Мы обратились к этой проблеме, и мы решили починить его единым потоком развертывания с Дженкинсом СИ
Как и в приведенной выше диаграмме, мы делаем себя Дженкинсом сделать развертывание от имени разработчика. Трубопровод Jenkins затем проверяет тестовый случай, может ли это проходить или нет. ТОЛЬКО ПОЛУЧИТЬ ТОЛЬКО ПРОДАТЬ ПРАЧАТЕЛЬНЫЙ ПРОИЗВОДСТВО, продолжат поток развертывания. Что затем запустится Packer, чтобы построить изображение, которое обеспечивает Ansible-Playbook.
После успешного изображения создания изображений он расскажет группу экземпляра GCP путем обновления обновления до последнего изображения через GCloud SDK CLI. (Это бета-функция, см. Также здесь )
Задача решена
Эти поток решили всю проблему, которую мы говорим ранее. Это более стандартный. Разработчик не может развернуть тест неудачный коммит к производству. Откат можно сделать легко, потому что у нас есть последнее изображение версии приложения. И время раскручивания действительно быстро, потому что никакое предоставление не требуется, когда AutoShale расширяет узел, просто потяните изображение.
Кормить вперед
Сразу после того, как я закончил этот блог, есть несколько комментарий и попросите меня проверить Spinnaker.io. Это продукт Google, и это Opensource! Как это круто! Я сделал быстрый взгляд и понимаю, что это инструмент, который фокусирует часть CD (непрерывное развертывание). Они предлагают синие/зеленые развертывания и откатки, вне коробки! … Проверьте этот подкаст от сопровождающих этого крутого продукта здесь Отказ
Лично я никогда не проверю это. Но я верю, что это действительно круто один. Если кто-то проверит его, пожалуйста, не забудьте поделиться этим. Я хотел бы услышать от вас. Кроме того, для части CI, пожалуйста, проверьте реестр контейнера. Я слышал, что некоторые компании используют это как замену Дженкинса.
Оригинал: «https://www.codementor.io/@chaintng/connecting-jenkins-ci-to-vm-based-application-brjvcp5x9»