Библиотека Java разработчика
10.5K subscribers
1.17K photos
594 videos
58 files
1.52K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
🚀 CI/CD: Роботы делают рутину за вас

Аббревиатура состоит из двух частей, и они решают разные проблемы.

🛠 1. CI (Continuous Integration / Непрерывная интеграция)

Суть: Разработчики постоянно (несколько раз в день) сливают свой код в общую ветку (например, main или develop).
Каждый раз, когда вы делаете git push, специальный сервер (GitLab CI, GitHub Actions, Jenkins) автоматически:

1. Скачивает ваш свежий код.
2. Собирает проект (mvn clean compile).
3. Запускает все Unit и Integration тесты.

Если хоть один тест упал - сборка помечается красным крестиком (Build Failed). Код не пройдет дальше.
Итог: Ваша главная ветка в Git всегда находится в рабочем состоянии.

📦 2. CD (Continuous Delivery & Deployment)

Здесь две буквы "D", и они немного отличаются:

🔴Continuous Delivery (Доставка): Код автоматически собирается в готовый артефакт (например, Docker-образ) и кладется в хранилище. Нажать кнопку "Опубликовать на Production" должен человек (например, тимлид).

🔴Continuous Deployment (Развертывание): Полная автоматизация. Прошли тесты? Собрался образ? Он сразу же автоматически загружается на боевой сервер и заменяет старую версию. (Так делает Amazon, выкатывая обновления тысячи раз в день).

⚙️ Анатомия Пайплайна (Pipeline)

Пайплайн - это скрипт, состоящий из шагов (Stages), которые выполняются строго друг за другом. Упал предыдущий - следующий не запустится.

Типичный пайплайн для Spring Boot + Docker:

1. Lint (Проверка стиля кода, нет ли неиспользуемых импортов).
2. Test (Запуск JUnit тестов).
3. Build (Сборка `app.jar`).
4. Dockerize (Сборка Docker-образа и отправка его в Docker Registry).
5. Deploy (Команда серверу: "Скачай новый образ и перезапустись").

💻 Как это выглядит в коде? (GitHub Actions)

Вам не нужно кликать мышкой в интерфейсах. Пайплайн описывается кодом (YAML) и лежит прямо в вашем репозитории (подход Infrastructure as Code).

Вот пример простого .github/workflows/build.yml для Java-проекта:


name: Spring Boot CI/CD

on:
push:
branches: [ "main" ] # Запускать только при пуше в main

jobs:
build-and-test:
runs-on: ubuntu-latest # Выделяем виртуальную машину Linux

steps:
- uses: actions/checkout@v3 # 1. Скачиваем код из Git

- name: Установка Java 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Сборка и Тесты (Maven) # 2. Запускаем тесты и сборку
run: ./mvnw clean package

# Дальше могут быть шаги для сборки Docker и деплоя...



Стоит вам сделать git push, и GitHub сам поднимет сервер, выполнит эти команды и пришлет вам письмо, если что-то сломалось.

🆚 Что выбрать?

🔴Jenkins: "Дед" в мире CI/CD. Мощный, гибкий, но сложный в настройке (нужно поднимать свой сервер). Написан на Java.

🔴GitLab CI: Стандарт индустрии корпоративного сектора. Очень удобен, так как встроен прямо в репозиторий кода.

🔴GitHub Actions: Современный, быстрый, идеален для Open Source и проектов, уже живущих в GitHub.

🔥 Итог

CI/CD убивает фактор "человеческой ошибки". Вы перестаете бояться релизов. Деплой новой фичи превращается из стрессового события в пятницу вечером в скучную рутину: сделал пуш подождал 5 минут фича на проде.

#DevOps #CICD #Java #SpringBoot #GitHubActions

📲 Мы в MAX

👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6