Timeweb.cloud и золотая классика Java-разработки
Рассказываю как развернуть классическую связку для современной команды разработки на Java: Jenkins + Gitlab + Sonar + Artifactory. В качестве тестового приложения — стек JHipster (Spring Boot + PostgreSQL + Angular).
Мотивация
Рассказать красивую и полезную историю по теме развертывания и настройки инфраструктуры для команды разработки на Java, в облаке Timeweb.cloud и на ее ресурсах.
Создать своего рода «туториал» для пошагового исполнения руками менее подготовленных исполнителей, причем крепко завязанный на инфраструктуру Timeweb — чем больше будет таких связей, тем выше шанс что исполнитель не станет заморачиваться и пойдет именно к вам за серверами.
ЦА: начинающие тимлиды, сеньоры, DevOps, админы — все, кого могут озадачить развернуть рабочее окружение для разработки с нуля.
Требования
Нужен тестовый VDS (в идеале два), доступ в панель, возможность делать тестовый домен с LetsEncrypt сертификатами, доступ к сервису для отправки почты/СМС/push-уведомлений в мессенджеры — для демонстрации интеграции.
Сертификат и домен придется покупать отдельно под эту задачу.
Референсы
В качестве референсов предлагаемой статьи, ниже несколько хороших примеров статей про продукты и сервисы IBM и Oracle из корпоративных блогов этих компаний.
Install IBM Cloud Pak for Data 5.3 on Red Hat OpenShift Container Platform 4.20 on IBM Power Virtual Server :
https://developer.ibm.com/tutorials/install-cpd-4-on-ocp-48-on-powervs/
Deploying apps to IBM Code Engine from GitHub or local sources:
https://developer.ibm.com/tutorials/awb-deploy-apps-ibm-code-engine-github-local-sources/
How to modify constraints in Oracle Database:
https://blogs.oracle.com/sql/how-to-modify-constraints-in-oracle-database
Золотая классика
Несмотря на засилье ИИ и роботов, современная командная разработка на Java требует примерно такого же окружения что и 10 лет назад:
- Jeninks CI — для автоматической сборки и выкладывания релизов
- Gitlab — в качестве репозитория Git и багтрекера
- SonarCube — для контроля качества кода
- Artifactory — для кеширования загружаемых пакетов.
Все это надо уметь настроить и что (куда важнее) связать воедино в работающую систему:
сборка должна запускаться автоматически по коммитам в Git-репозиторий, анализатор кода должен запускаться перед сборкой и вся эта «шайтан-арба» обязательно должна использовать Artifactory, чтобы не скачивать на каждый билд по несколько гигабайт из сети.
И все для того, чтобы 6-10 человек в команде программистов могли эффективно работать вместе над одним проектом.
Поскольку сам автор неоднократно и лично все это настраивал для реальных коммерческих проектов — ему точно есть что сказать по теме.
Все описываемые решения являются открытыми, с большим коммьюнити и историей.
Jenkins
Рассказываю как развернуть этот знаменитый CI-сервер с абсолютного нуля, как связать его с Gitlab (см ниже) и подключить автосборку.
Расскажу про особенности эксплуатации и вопросы безопасности — с какими рисками и вариантами атак придется столкнуться при обслуживании такой системы.
Gitlab
Рассказываю как развернуть Gitlab в standalone-режиме — на своем собственном сервере, как провести базовую настройку, как заводить репозитории, как связать с системой сборки.
Также кратко расскажу про git flow и логику создания релизных веток.
Со стороны интеграции, расскажу о механизме «commit hook» — как запускать определенные действия по коммиту в репозиторий.
Sonar
Рассказываю про метрики качества исходного кода, как работает статистический анализатор (кратко) и почему все это очень важно, если вы действительно собираетесь обслуживать миллионы клиентов.
В плане интеграции, расскажу как связать систему сборки и Sonar, чтобы анализ кода запускался автоматически при пересборке проекта, как настроить сигнализацию о проблемах с помощью сервиса уведомлений и отправки email/sms/push.
Artifactory
Рассказываю зачем вообще нужен отдельный сервер с артефактами в современной разработке, как его настроить и использовать для типового проекта и на CI-сервере.
Также расскажу как происходит обновление артефактов с upstream и как можно обновлять артефакты полностью вручную.
В сборе
Показываю всю работающую цепочку в сборе: тестовое приложение, выкладку в репозиторий, автоматическую сборку и анализ исходного кода.
По ролям — от лица тимлида, QA, обычного разработчика и DevOps.