Флаг: English English

CI/CD: от «у меня на компе работало» до автоматического деплоя

Опубликовано 14.11.2025

Простой гид для новичков: Jenkins → GitLab → GitHub → GitOps


Привет!
Ты только начинаешь путь в DevOps или уже устал слышать «а у нас CI/CD» на собеседованиях? Хочешь наконец понять, почему код, который работает у тебя на ноутбуке, падает на сервере?

Эта статья — твой первый шаг к автоматизации. И он действительно будет лёгким.
Разберём всё по полочкам, без перегруженных терминов и с примерами.


Что такое CI/CD (очень просто)

CI/CD — это когда ты нажимаешь git push, а всё остальное происходит автоматически.

Разберём по частям:

АббревиатураЧто значитЗачем нужно
CI (Continuous Integration)Непрерывная интеграцияЧтобы код разных разработчиков не ломал друг друга
CD (Continuous Delivery / Deployment)Непрерывная доставкаЧтобы обновления можно было выкатывать одной кнопкой — или вовсе без кнопки

Пример из жизни

Ты с другом пишете сайт.

  • Без CI: в пятницу пытаетесь слить код → сотни ошибок → минус выходные.
  • С CI: каждый git push триггерит тесты → ошибки видны сразу.

Инструменты: от «дедушки» до «модных»

Jenkins — «дедушка CI/CD»

Jenkins — как старый, но мощный промышленный станок. Можно сделать вообще всё, но придётся научиться с ним жить.

Как работает

  • Устанавливаешь Jenkins на сервер
  • Пишешь инструкции в Jenkinsfile
  • Jenkins следит за Git и выполняет пайплайны

Плюсы

  • Максимальная гибкость
  • Тысячи плагинов

Минусы

  • Поддержка, обновления и обслуживание — на тебе
  • Интерфейс не менялся много лет

Для кого
Большие компании или проекты с историческим багажом.


GitLab CI/CD — «всё в одном»

GitLab — это не просто GitHub-замена. Это целый DevOps-комбайн: CI/CD, Registry, мониторинг, безопасность.

Как начать за 5 минут

  1. Создай репозиторий
  2. Добавь файл .gitlab-ci.yml:
stages:
  - test
  - build

test:
  stage: test
  script:
    - echo "Запускаю тесты..."

build:
  stage: build
  script:
    - echo "Собираю Docker-образ..."
  1. Сделай git push — и пайплайн запустится автоматически.

Плюсы

  • Ничего не нужно разворачивать
  • Всё в одной панели: код → сборка → контейнер → деплой
  • Щедрые бесплатные минуты CI

Минусы

  • Если команда уже на GitHub, будет сложно мигрировать

Для кого Команды, которым нужно всё из коробки.


GitHub Actions — CI/CD прямо в GitHub

У тебя код в GitHub? Значит CI/CD уже ждет тебя.

Создай папку .github/workflows/.

Пример: запуск тестов при каждом push

name: Тесты

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - name: Запуск тестов
        run: echo "Тут мог бы быть pytest"

Плюсы

  • Marketplace с огромным количеством готовых действий
  • Бесплатно для публичных репозиториев
  • Простая интеграция с облаками и сервисами

Минусы

  • Ограничения минут для приватных репозиториев

Для кого Для всех, кто уже использует GitHub. Стандарт де-факто.


Runner — кто выполняет задачи

Пайплайн — это рецепт. Runner — это повар, который готовит по рецепту.

ПлатформаТипы Runner’ов
GitLabShared (общие) и Self-hosted
GitHubHosted (виртуалки GitHub) и Self-hosted

GitOps — уровень «Профи»

GitOps — подход, в котором Git является единственным источником правды.

Простой принцип

  • Меняешь YAML в Git → кластер обновляется автоматически
  • Ручной kubectl apply → считается плохой практикой

Почему это мощно

  • Конфигурации воспроизводимы
  • Логи и история изменений есть всегда
  • Сервер всегда представляет собой “состояние из Git”

Инструменты GitOps

ИнструментОписание
Argo CDКрасивый дашборд. Видно Desired и Actual состояние.
Flux CDМинимализм. Всё управляется через Git, почти без UI.

Какой инструмент выбрать

СитуацияВыбор
Хранишь код на GitHubGitHub Actions
Хочешь всё в одномGitLab CI
Сложная историческая инфраструктураJenkins
Kubernetes + автоматизацияGitHub/GitLab + Argo/Flux

Настрой свой первый пайплайн (5 минут)

  1. Создай приватный репозиторий в GitHub
  2. Добавь файл .github/workflows/ci.yml:
name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "Привет, CI/CD! 👋"
      - run: echo "Тесты пройдены ✅"
  1. Сделай git push и открой вкладку Actions

Готово — твой первый CI/CD работает.


Полезные советы

  1. Начинай с простого: build → test.
  2. Не храни пароли в репозитории — используй Secrets.
  3. Деплой запускай только из ветки main.
  4. Пайплайны должны быть короткими и понятными.

Заключение

Ты уже сделал первый шаг. Сегодня — простой CI. Через неделю — запуск тестов. Через месяц — сборка Docker-образов. Через полгода — GitOps и автоматические деплои.

CI/CD — это не магия. Это просто автоматизация твоих обычных шагов разработки. И ты точно справишься.

Отзывы по теме

Очень доволен работой с Михаилом. Любая, даже на первый взгляд, трудная задача - становится благодаря ему качественно реализованной! Спасибо вам)

Dr-zelenin · Настройка vps, настройка сервера

11.11.2025 · ⭐ 5/5

Очень доволен работой с Михаилом. Любая, даже на первый взгляд, трудная задача - становится благодаря ему качественно реализованной! Спасибо вам)

Михаил очень оперативно помог настроить работу сайта. Сам бы я точно провозился весь день. Приятно, когда профессионал помогает экономить твое время и делает работу на высоком уровне. Рекомендую!

N_Konstantin · Настройка vps, настройка сервера

Освоившийся покупатель

21.10.2025 · ⭐ 5/5

Михаил очень оперативно помог настроить работу сайта. Сам бы я точно провозился весь день. Приятно, когда профессионал помогает экономить твое время и делает работу на высоком уровне. Рекомендую!

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Похожие посты