PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • AI для кодаНовое
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    CI/CD: что это такое и как настроить пайплайн с нуля

    CI/CD: что это такое и как настроить пайплайн с нуля

    Аватар автора CI/CD: что это такое и как настроить пайплайн с нуля

    Антон Ларичев

    Иконка календаря21 августа 2026
    CI/CDDevOpsGitHub ActionsGitLab CIDockermiddleИконка уровня middle
    Картинка поста CI/CD: что это такое и как настроить пайплайн с нуля

    Введение

    CI/CD (Continuous Integration / Continuous Delivery или Deployment) — это набор практик и инструментов для автоматизации сборки, тестирования и доставки кода в продакшн. Вместо того чтобы вручную собирать проект, гонять тесты и заливать файлы на сервер, эти процессы запускает система при каждом пуше в репозиторий.

    Continuous Integration (непрерывная интеграция) — это про то, что каждый коммит автоматически собирается и проверяется тестами, чтобы ошибки находились сразу, а не через неделю. Continuous Delivery (непрерывная доставка) добавляет к этому автоматическую подготовку релиза, готового к выкладке одной кнопкой. Continuous Deployment (непрерывное развёртывание) идёт ещё дальше и выкатывает изменения в продакшн без участия человека, если все проверки прошли.

    Зачем это нужно

    Без CI/CD разработчики тратят время на рутину: ручную сборку, ручной прогон тестов, ручной деплой по инструкции из десяти шагов. Это медленно и подвержено человеческим ошибкам. CI/CD решает три задачи:

    • быстрая обратная связь — баг находится за минуты, а не после релиза
    • одинаковый процесс для всех — исключается "у меня на компьютере работало"
    • ускорение релизов — можно деплоить несколько раз в день без страха

    Из чего состоит пайплайн

    Типичный CI/CD-пайплайн состоит из последовательных этапов (stages):

    1. Установка зависимостей
    2. Линтинг и статический анализ
    3. Сборка (build)
    4. Тесты (unit, integration, e2e)
    5. Публикация артефакта (Docker-образ, архив, npm-пакет)
    6. Деплой на staging
    7. Деплой на продакшн (часто вручную подтверждается)

    Каждый этап должен быть быстрым и завершаться однозначным статусом success/fail — это ключевое правило: если хоть один шаг падает, пайплайн останавливается и код не попадает дальше.

    Настройка CI/CD на примере GitHub Actions

    GitHub Actions — один из самых популярных инструментов, потому что не требует отдельного сервера и настраивается прямо в репозитории через YAML-файлы в директории .github/workflows.

    Создадим простой пайплайн для Node.js проекта.

    name: CI
    
    on:
      push:
        branches: [main]
      pull_request:
        branches: [main]
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - name: Скачиваем код
            uses: actions/checkout@v4
    
          - name: Устанавливаем Node.js
            uses: actions/setup-node@v4
            with:
              node-version: 20
              cache: npm
    
          - name: Устанавливаем зависимости
            run: npm ci
    
          - name: Линтинг
            run: npm run lint
    
          - name: Тесты
            run: npm test
    

    Этот файл описывает job test, который запускается на каждый пуш и pull request в main. Триггер on определяет события, jobs — список задач, steps — последовательные шаги внутри задачи.

    Добавляем сборку и деплой

    После того как тесты проходят, можно добавить job для сборки Docker-образа и деплоя.

      deploy:
        needs: test
        runs-on: ubuntu-latest
        if: github.ref == 'refs/heads/main'
        steps:
          - name: Скачиваем код
            uses: actions/checkout@v4
    
          - name: Логинимся в Docker Hub
            uses: docker/login-action@v3
            with:
              username: ${{ secrets.DOCKER_USERNAME }}
              password: ${{ secrets.DOCKER_PASSWORD }}
    
          - name: Собираем и пушим образ
            run: |
              docker build -t myapp:${{ github.sha }} .
              docker push myapp:${{ github.sha }}
    
          - name: Деплоим на сервер
            uses: appleboy/ssh-action@v1
            with:
              host: ${{ secrets.SERVER_HOST }}
              username: ${{ secrets.SERVER_USER }}
              key: ${{ secrets.SERVER_SSH_KEY }}
              script: |
                docker pull myapp:${{ github.sha }}
                docker stop myapp || true
                docker run -d --name myapp -p 3000:3000 myapp:${{ github.sha }}
    

    Ключевые моменты здесь: needs: test означает, что деплой запустится только после успешного прохождения тестов. Условие if ограничивает деплой только веткой main. Все пароли и ключи хранятся в secrets репозитория, а не в коде.

    Пример для GitLab CI

    Если проект на GitLab, конфигурация задаётся файлом .gitlab-ci.yml.

    stages:
      - test
      - build
      - deploy
    
    test:
      stage: test
      image: node:20
      script:
        - npm ci
        - npm run lint
        - npm test
    
    build:
      stage: build
      image: docker:24
      services:
        - docker:24-dind
      script:
        - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
        - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    
    deploy:
      stage: deploy
      script:
        - ./deploy.sh $CI_COMMIT_SHA
      only:
        - main
    

    Принцип тот же: этапы идут последовательно, и каждый следующий запускается только если предыдущий завершился успешно.

    Частые ошибки

    Хранение секретов в коде. Пароли, токены и SSH-ключи нужно класть в secrets CI-системы, а не коммитить в репозиторий, даже во временный файл.

    Слишком долгий пайплайн. Если сборка и тесты занимают 30 минут, разработчики начинают игнорировать статус или пушить прямо в обход проверок. Нужно распараллеливать job'ы и кэшировать зависимости.

    Отсутствие кэширования зависимостей. Установка npm-пакетов или сборка Docker-слоёв с нуля на каждом запуске сильно замедляет пайплайн — используйте cache в actions/setup-node или кэш слоёв Docker.

    Деплой без отката. Если новая версия ломает продакшн, должен быть быстрый путь вернуться к предыдущей версии — через тег предыдущего образа или blue-green деплой.

    Игнорирование пайплайна при провале. Красный статус CI должен быть блокером для мержа, а не рекомендацией — настройте branch protection, требующее прохождения проверок.

    Тестирование только на staging вручную. Автоматические тесты в пайплайне должны покрывать основные сценарии, иначе staging превращается в ещё один ручной этап, который CI/CD должен был исключить.

    Заключение

    CI/CD — это не единственный инструмент, а практика, которая объединяет автоматическую сборку, тестирование и доставку кода. Начать можно с малого: настроить job, который гоняет тесты на каждый pull request. Дальше постепенно добавляются сборка Docker-образа, деплой на staging и продакшн, уведомления в Slack и метрики. Главное — держать пайплайн быстрым, безопасным и обязательным для всех изменений в коде.

    Иконка глаза593

    Комментарии

    0

    Постройте личный план изучения Angular до уровня Middle — бесплатно!

    Angular — часть карты развития Frontend

    • step100+ шагов развития
    • lessons30 бесплатных лекций
    • lessons300 бонусных рублей на счет

    Лучшие курсы по теме

    изображение курса

    Основы разработки

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга5.0
    бесплатно
    Подробнее
    изображение курса

    Основы Git

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.9
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    HTML и CSS

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.9
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Иконка аватараАнтон
    Иконка календаря01 октября 2026
    AI-инструментыDevOpsразработка+ 2middleИконка уровня middle

    Gemini CLI в России: как установить и настроить

    Установить Gemini CLI из России можно без VPN и без ухищрений — это обычный npm-пакет, он скачивается и запускается на любой машине. Упирается всё на следующем шаге: 18 июня 2026 года Google перестал обслуживать запросы Gemini CLI для бесплатных аккаунтов и подписчиков Google AI Pro и Ultra, а единственный оставшийся путь — вход по API-ключу — требует биллинга в регионе, где Россия не числится. Ниже разбираем, как агент ставится, как устроены три способа входа, почему ни один из них не доводи...

    Иконка чипа0
    Иконка глаза323
    Иконка комментариев0
    Иконка аватараАнтон
    Иконка календаря29 сентября 2026
    AI-инструментыClaude CodeDevOps+ 2middleИконка уровня middle

    Бесплатный аналог Cursor и Claude Code в России

    Короткий ответ: бесплатных аналогов много, и почти все они ставятся в России без ухищрений — Cline, Kilo Code, OpenCode, Qwen Code, Codex CLI распространяются с открытым исходным кодом, и за сам инструмент никто денег не берёт. Проблема в другом: своей модели у них нет. Платите вы не за агента, а за модель, к которой он ходит, и блокируется из России именно доступ к модели. Поэтому вопрос «чем заменить Cursor и Claude Code» почти всегда оказывается другим вопросом — где взять доступ к сильной модели без зарубежной карты. Ниже разберём, что из бесплатного реально работает, где оно упирается в потолок, и во сколько обходится не искать замену вообще. {{IMAGE_1}} alt: Схема: бесплатные клиенты-агенты Cline, Kilo Code, OpenCode, Qwen Code и платный доступ к модели за ними prompt: Flat vector diagram on dark background, two clearly separated zones. Left zone labeled "free" contains five small rounded cards representing code editor agents with terminal and sidebar icons. Right zone labeled "paid" contains a single large cloud icon representing an AI model, with a lock badge. Arrows go from all five cards to the single cloud. Purple and violet accent colors, thin white lines, no text labels, clean minimal tech illustration, 16:9

    Иконка чипа0
    Иконка глаза565
    Иконка комментариев1
    Иконка аватараАнтон
    Иконка календаря28 сентября 2026
    Claude CodeAI-инструментыDevOps+ 2middleИконка уровня middle

    Cline в VS Code: как подключить Claude из России

    Короткий ответ: расширение ставится из Marketplace как любое другое, а всё, что блокируется из России, лечится на одном экране настроек. Нужно выбрать провайдера Anthropic, вставить свой API-ключ и подменить адрес API на прокси, который работает без VPN и принимает оплату в рублях. Три поля — и агент отвечает. Ниже разберём каждый шаг и ошибки, на которых обычно застревают.

    Иконка чипа0
    Иконка глаза438
    Иконка комментариев0
    Иконка чипа0