CI/CD with GitHub Actions & DevOps Pipelines · Урок

Канареечные выпуски с Actions

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

Урок 2 из 411 шагов

«Канареечные выпуски с Actions» — бесплатный урок CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CI/CD with GitHub Actions & DevOps Pipelines, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.

Введение в канареечные выпуски

Представьте, что вы запускаете новую функцию или обновление. Что, если в нём окажется ошибка, затрагивающая всех пользователей? Страшно, правда?

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

Преимущества канареечных выпусков

Канареечные выпуски дают несколько важных преимуществ:

  • Снижение рисков: Воздействие проблем ограничивается небольшой группой пользователей.
  • Обратная связь в реальных условиях: Вы получаете производственные данные о производительности и стабильности.
  • Быстрый откат: При возникновении проблем можно быстро вернуть только небольшую канареечную группу или весь сервис.
  • Контролируемое расширение: По мере роста уверенности постепенно увеличивается число пользователей, получающих новую версию.

Канареечный выпуск и Blue/Green

Возможно, вы помните развёртывания Blue/Green, при которых трафик мгновенно переключается между двумя одинаковыми окружениями.

Канареечные выпуски работают иначе. Вместо мгновенного переключения они предполагают постепенное перераспределение трафика. Новая версия работает параллельно со старой, и изначально новую версию видит лишь небольшой процент пользователей. Это позволяет подробно отслеживать работу системы до полного выпуска.

Как работают канареечные выпуски

Основной процесс канареечного выпуска выглядит так:

  1. Развёртывание новой версии: Новая версия приложения развёртывается на небольшом наборе серверов или экземпляров параллельно с существующей стабильной версией.
  2. Направление небольшой доли трафика: Балансировщик нагрузки или сервисная сеть настраивается на отправку небольшой доли (например, 5–10%) пользовательского трафика на новую версию.
  3. Мониторинг: Для канареечной группы внимательно отслеживаются производительность, частота ошибок и отзывы пользователей.
  4. Продвижение или откат: Если всё работает хорошо, доля трафика постепенно увеличивается или новая версия продвигается до 100%. При возникновении проблем канареечная версия откатывается, а трафик возвращается к стабильной версии.

Оркестрация с помощью GitHub Actions

GitHub Actions может оркестрировать весь процесс канареечного выпуска. Он не управляет трафиком напрямую — это задача вашей инфраструктуры, — но запускает следующие шаги:

  • Сборка и тестирование приложения.
  • Развертывание новой версии в канареечной среде.
  • Инициация переключения трафика с помощью вызовов API балансировщика нагрузки или сервисной сетки.
  • Ожидание результатов мониторинга или ручного подтверждения.
  • Продвижение канареечной версии или запуск отката.

План канареечного рабочего процесса

Типичный рабочий процесс GitHub Actions для канареечного выпуска может выглядеть так:

name: Canary Deployment

on: push

jobs:
  build:
    # ... build and test steps ...

  deploy-canary:
    needs: build
    steps:
      - name: Deploy to Canary Group
        # ... call script/tool to deploy and shift 10% traffic ...

  monitor-canary:
    needs: deploy-canary
    # ... wait for monitoring/approval ...

  promote-or-rollback:
    needs: monitor-canary
    # ... conditionally promote to 100% or rollback ...

Каждый шаг взаимодействует с вашими инструментами развертывания.

Моделирование логики канареечного развертывания

GitHub Actions выполняет оркестрацию, а фактическое принятие решений и команды развертывания часто реализуются в скриптах. Вот пример на Python, моделирующий логику канареечного развертывания. Представьте, что действие запускает этот скрипт:

def deploy_version(version, traffic_percent):
    print(f"Deploying {version} to {traffic_percent}% traffic.")
    if traffic_percent == 100:
        print("Full rollout complete!")
    elif traffic_percent > 0:
        print("Canary deployed. Monitoring for stability...")
    else:
        print("Version removed (rollback).")

if __name__ == "__main__":
    print("--- Starting Canary Workflow ---")
    new_app_version = "v2.1-canary"
    stable_app_version = "v2.0"

    # Step 1: Deploy new version to 10% traffic
    deploy_version(new_app_version, 10)

    # Step 2: Simulate monitoring (e.g., waiting for metrics)
    print("Monitoring canary performance...")
    import random
    canary_successful = random.choice([True, True, True, False]) # 75% chance of success

    if canary_successful:
        print("Canary looks good! Proceeding to full rollout.")
        # Step 3a: Promote new version to 100%
        deploy_version(new_app_version, 100)
    else:
        print("Canary issues detected! Rolling back.")
        # Step 3b: Rollback to stable version
        deploy_version(stable_app_version, 100)
    print("--- Canary Workflow Finished ---")

Мониторинг канареечной версии

Эффективный мониторинг имеет решающее значение. Ваш рабочий процесс GitHub Actions может интегрироваться с системами мониторинга несколькими способами:

  • Вызовы API: Запрос ключевых метрик в инструментах мониторинга, например Datadog и Prometheus.
  • Проверки работоспособности: Опрос конечных точек работоспособности приложения.
  • Ручные контрольные точки: Приостановка рабочего процесса для проверки и подтверждения человеком.
  • Ожидание по времени: Ожидание заданного периода, чтобы метрики стабилизировались.

Затем рабочий процесс использует эти сигналы, чтобы решить, продвигать ли версию или выполнить откат.

Условное продвижение или откат

После этапа мониторинга GitHub Actions использует условную логику, чтобы определить следующий шаг. В определениях задания или шага можно использовать операторы if.

  promote-or-rollback:
    needs: monitor-canary
    if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
    steps:
      - name: Promote Full Rollout
        # ... command to shift 100% traffic to new version ...

  rollback:
    needs: monitor-canary
    if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
    steps:
      - name: Rollback to Stable
        # ... command to shift 100% traffic to old version ...

Это обеспечивает автоматическую реакцию на показатели канареечной версии.

Проверка канареечного выпуска

Вы узнали о преимуществах и механике канареечных выпусков. Давайте проверим, насколько хорошо Вы усвоили материал.

Итоги: канареечные выпуски с Actions

В этом уроке Вы узнали о канареечных выпусках — эффективной стратегии развертывания, которая позволяет постепенно предоставлять новые версии программного обеспечения части пользователей.

  • Канареечные выпуски снижают риск и обеспечивают обратную связь в реальных условиях.
  • GitHub Actions оркестрирует сборку, развертывание в канареечной среде, мониторинг и условные шаги продвижения или отката.
  • Эффективный мониторинг и условная логика — ключевые составляющие успешных канареечных рабочих процессов.

Используя канареечные выпуски, Вы сможете развертывать приложения с большей уверенностью и контролем!

Можно начать бесплатно

Изучай CI/CD with GitHub Actions & DevOps Pipelines с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

Часто задаваемые вопросы

Урок «Канареечные выпуски с Actions» бесплатный?

Да — полный текст урока «Канареечные выпуски с Actions» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CI/CD with GitHub Actions & DevOps Pipelines, подпишись на CoddyKit PRO. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.

Чему я научусь в уроке «Канареечные выпуски с Actions»?

Реализуйте шаблоны канареечных выпусков для постепенного предоставления новых функций части пользователей с мониторингом производительности и стабильности. Ты практикуешь CI/CD with GitHub Actions & DevOps Pipelines с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CI/CD with GitHub Actions & DevOps Pipelines?

Предыдущий опыт не требуется. CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Канареечные выпуски с Actions»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CI/CD with GitHub Actions & DevOps Pipelines?

Да. Каждый урок CI/CD with GitHub Actions & DevOps Pipelines включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Сине-зелёные развёртывания
  2. Канареечные выпуски с Actions
  3. Откаты и аварийное восстановление
  4. Флаги функций и постепенные развёртывания
← Назад к CI/CD with GitHub Actions & DevOps Pipelines