June 15

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.

И все это в облаке Timeweb.