🚀 CI/CD: Роботы делают рутину за вас
Аббревиатура состоит из двух частей, и они решают разные проблемы.
🛠 1. CI (Continuous Integration / Непрерывная интеграция)
Суть: Разработчики постоянно (несколько раз в день) сливают свой код в общую ветку (например,
Каждый раз, когда вы делаете
1. Скачивает ваш свежий код.
2. Собирает проект (
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.
2.
3.
4.
5.
💻 Как это выглядит в коде? (GitHub Actions)
Вам не нужно кликать мышкой в интерфейсах. Пайплайн описывается кодом (YAML) и лежит прямо в вашем репозитории (подход Infrastructure as Code).
Вот пример простого
Стоит вам сделать
🆚 Что выбрать?
🔴 Jenkins: "Дед" в мире CI/CD. Мощный, гибкий, но сложный в настройке (нужно поднимать свой сервер). Написан на Java.
🔴 GitLab CI: Стандарт индустрии корпоративного сектора. Очень удобен, так как встроен прямо в репозиторий кода.
🔴 GitHub Actions: Современный, быстрый, идеален для Open Source и проектов, уже живущих в GitHub.
🔥 Итог
CI/CD убивает фактор "человеческой ошибки". Вы перестаете бояться релизов. Деплой новой фичи превращается из стрессового события в пятницу вечером в скучную рутину: сделал пуш подождал 5 минут фича на проде.
#DevOps #CICD #Java #SpringBoot #GitHubActions
📲 Мы в MAX
👉@BookJava
Аббревиатура состоит из двух частей, и они решают разные проблемы.
🛠 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", и они немного отличаются:
⚙️ Анатомия Пайплайна (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 сам поднимет сервер, выполнит эти команды и пришлет вам письмо, если что-то сломалось.🆚 Что выбрать?
🔥 Итог
CI/CD убивает фактор "человеческой ошибки". Вы перестаете бояться релизов. Деплой новой фичи превращается из стрессового события в пятницу вечером в скучную рутину: сделал пуш подождал 5 минут фича на проде.
#DevOps #CICD #Java #SpringBoot #GitHubActions
📲 Мы в MAX
👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6