Развёртывание в рабочей среде с этапами утверждения
Узнайте, как безопасно продвигать сборки из тестовой среды в рабочую с помощью правил защиты окружений GitHub Actions, ручных подтверждений и этапов контроля развёртывания
«Развёртывание в рабочей среде с этапами утверждения» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем рабочей среде нужны контрольные точки
Непрерывная доставка автоматически отправляет код, но непосредственная отправка в рабочую среду без какой-либо контрольной точки опасна. Неудачный выпуск может мгновенно затронуть каждого пользователя.
Этап согласования — это осознанная пауза, во время которой человек или автоматическая проверка подтверждает, что развёртывание следует продолжить.
- Уменьшает масштаб последствий ошибок
- Создаёт проверяемый журнал того, кто и что подтвердил
- Позволяет разделить уровни уверенности для
stagingиproduction
Окружения GitHub
В GitHub Actions есть функция под названием Окружения. Окружение, например production, может хранить собственные секреты, переменные и правила защиты.
Вы указываете окружение для задания с помощью ключа environment. Это основа для добавления этапов согласования.
jobs:
deploy:
runs-on: ubuntu-latest
environment: production
steps:
- run: echo 'Deploying to production'Обязательные проверяющие
В настройках репозитория в разделе Настройки > Окружения > рабочая среда можно включить параметр Обязательные проверяющие.
Когда задание направлено в это окружение, запуск рабочего процесса приостанавливается и ожидает, пока один из указанных проверяющих не нажмёт Approve.
- Можно настроить до 6 проверяющих
- По умолчанию для разблокировки задания достаточно одного подтверждения
- В зависимости от настроек подтверждающим не может быть человек, запустивший выполнение
Полный рабочий процесс с контрольными точками
Здесь задание build выполняется первым, а затем задание deploy зависит от него через needs и направляется в защищённое окружение production.
Развёртывание не начнётся, пока обязательный проверяющий не подтвердит его в пользовательском интерфейсе Actions.
name: Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo 'build artifact'
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: production
url: https://myapp.example.com
steps:
- run: echo 'deploy to prod'Таймеры ожидания
Помимо проверяющих, окружения поддерживают таймер ожидания. Он принудительно добавляет задержку до 30 дней перед продолжением развёртывания.
Короткий таймер ожидания полезен как период для безопасной отмены: он даёт команде время отменить запуск до того, как он достигнет рабочей среды.
Ограничения веток для развёртывания
Окружения могут ограничивать список веток, из которых разрешено выполнять развёртывание. Для production обычно разрешают только main или теги выпусков.
Это предотвращает случайное развёртывание в рабочую среду из функциональной ветки.
- Защищённые ветки — только ветки с правилами защиты
- Выбранные ветки — явно заданный список разрешённых веток или шаблон тегов
Секреты с областью действия окружения
У каждого окружения есть собственные секреты. В рабочем окружении можно хранить PROD_DB_URL, а в тестовом — STAGING_DB_URL.
Секреты, определённые для окружения, доступны только заданиям, направленным в это окружение, что добавляет ещё один уровень изоляции.
steps:
- name: Deploy
env:
DB_URL: ${{ secrets.PROD_DB_URL }}
run: ./deploy.shОтслеживание статуса развёртывания
Если задать для окружения url, в пользовательском интерфейсе GitHub появится ссылка, по которой можно перейти к развёртыванию, а через API развёртываний будет записан объект развёртывания.
Это обеспечивает наглядную историю: какой коммит отправлен в рабочую среду, когда и кем.
environment:
name: production
url: https://myapp.example.comСогласование ожидающего запуска
Когда задание с контрольной точкой ожидает решения, на странице запуска рабочего процесса появится жёлтая панель Проверка развёртываний.
- Откройте запуск на вкладке Действия
- Нажмите
Review deployments - Выберите окружение и нажмите
Approve and deployилиReject
Вы также можете оставить комментарий с объяснением решения.
Объединение нескольких контрольных точек
Самая надёжная контрольная точка для рабочей среды объединяет несколько правил:
- Обязательные проверяющие (подтверждение человеком)
- Таймер ожидания (период для безопасной отмены)
- Ограничения веток (только
main) - Секреты окружения (изоляция)
Такое сочетание создаёт надёжный процесс продвижения из тестовой среды в рабочую.
Безопасный обход контрольных точек
Иногда требуется срочное исправление. Вместо удаления правил защиты рассмотрите отдельный, узко ограниченный рабочий процесс для срочного исправления со своими журналами и более строгими проверяющими.
Никогда не отключайте контрольные точки навсегда ради удобства — это лишает смысла механизм безопасности.
Проверка понимания
Проверьте, насколько хорошо Вы поняли этапы согласования развёртывания в рабочую среду.
Итоги
Вы узнали, как добавлять этапы согласования для развёртывания в рабочую среду с помощью окружений GitHub.
- Используйте ключ
environment, чтобы выбрать защищённое окружение - Обязательные проверяющие добавляют подтверждение человеком
- Таймеры ожидания добавляют период для безопасной отмены
- Ограничения веток и секреты окружения обеспечивают изоляцию
Вместе эти контрольные точки делают продвижение из тестовой среды в рабочую безопасным и проверяемым.
Часто задаваемые вопросы
Урок «Развёртывание в рабочей среде с этапами утверждения» бесплатный?
Да — полный текст урока «Развёртывание в рабочей среде с этапами утверждения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Развёртывание в рабочей среде с этапами утверждения»?
Узнайте, как безопасно продвигать сборки из тестовой среды в рабочую с помощью правил защиты окружений GitHub Actions, ручных подтверждений и этапов контроля развёртывания Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Развёртывание в рабочей среде с этапами утверждения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в непрерывное развёртывание
- Развёртывание в тестовой среде
- Переменные среды и секреты
- Развёртывание в рабочей среде с этапами утверждения