Введение
GitHub Actions предлагает возможности, позволяющие управлять развертываниями. Вы можете:
- Активировать рабочие процессы с различными событиями.
- Настроить среды для задания правил, прежде чем задание сможет продолжить работу, и ограничить доступ к секретам.
- Использовать параллелизм для управления количеством развертываний, выполняемых за раз.
Дополнительные сведения о непрерывном развертывании см. в разделе "Сведения о непрерывном развертывании с помощью GitHub Actions".
Необходимые компоненты
Требуются знания синтаксиса для GitHub Actions. Дополнительные сведения см. в разделе «Написание рабочих процессов».
Активация развертывания
Для активации рабочего процесса развертывания можно использовать различные события. Некоторые из наиболее распространенных вариантов: pull_request
, push
и workflow_dispatch
.
Например, рабочий процесс со следующими триггерами выполняется каждый раз, когда:
- Есть отправка в ветвь
main
. - Запрос на вытягивание, предназначенный для ветви
main
, открывается, синхронизируется или открывается повторно. - Кто-то активирует его вручную.
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
Дополнительные сведения см. в разделе «События, инициирующие рабочие процессы».
Использование сред
Среды используются для описания общего целевого объекта развертывания, такого как production
, staging
или development
. Когда рабочий процесс GitHub Actions выполняет развертывание в среде, эта среда отображается на главной странице репозитория. Вы можете использовать среды, чтобы требовать утверждения для продолжения задания, ограничить, какие ветви могут активировать рабочий процесс, шлюзовые развертывания с настраиваемыми правилами защиты развертывания, или ограничить доступ к секретам. Дополнительные сведения о создании сред см. в разделе "Управление средами для развертывания".
Использование параллелизма
Параллелизм обеспечивает одновременное выполнение только одного задания или процесса с использованием одной группы параллелизма. Параллелизм нужен для того, чтобы в среде одновременно выполнялось не более одного развертывания и было не более одного ожидающего развертывания. Дополнительные сведения о параллелизме см. в разделе "Управление параллелизмом рабочих процессов и заданий".
Note
concurrency
и environment
не подключены. Значением параллелизма может быть любая строка. Это не обязательно должно быть имя среды. Кроме того, если та же среда используется для другого рабочего процесса, но не указывается параллелизм, этот рабочий процесс не будет подчиняться правилам параллелизма.
Например, если выполняется следующий рабочий процесс, он будет приостановлен с состоянием pending
, в случае выполнения задания или рабочего процесса, использующего группу параллелизма production
. Кроме этого, будет отменено любое задание или рабочий процесс, использующий группу параллелизма production
и имеющий состояние pending
. Это означает, что в нем будет не более одного запущенного и одного ожидающего задания или рабочего процесса, в котором используется группа параллелизма production
.
name: Deployment
concurrency: production
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Вы также можете указать параллелизм на уровне задания. Это позволит продолжить выполнение других заданий в рабочем процессе, даже если этим параллельным заданием является pending
.
name: Deployment
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
concurrency: production
steps:
- name: deploy
# ...deployment-specific steps
Вы также можете использовать cancel-in-progress
, чтобы отменить задание или рабочий процесс, которые сейчас выполняются в той же группе параллелизма.
name: Deployment
concurrency:
group: production
cancel-in-progress: true
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Руководство по написанию действий по развертыванию см. в статье Поиск примеров развертывания.
Просмотр журнала развертывания
Когда рабочий процесс GitHub Actions выполняет развертывание в среде, эта среда отображается на главной странице репозитория. Дополнительные сведения о просмотре развертываний в средах см. в разделе "Просмотр журнала развертывания".
Мониторинг выполнения рабочего процесса
Во время каждого выполнения рабочего процесса создается граф в режиме реального времени, иллюстрирующий ход выполнения. Этот граф можно использовать для мониторинга и отладки развертываний. Дополнительные сведения см. в разделе "Использование графа визуализации".
Кроме этого, вы можете просматривать журналы каждого выполнения рабочего процесса, а также журнал запусков рабочего процесса. Дополнительные сведения см. в разделе «Просмотр журнала выполнения рабочего процесса».
Отслеживание развертываний с помощью приложений
Если ваша личная учетная запись или организация на GitHub интегрирована с Microsoft Teams или Slack, можно отслеживать развертывания, использующие среды с помощью Microsoft Teams или Slack. Например, вы можете через приложение получать уведомления, когда развертывание ожидает утверждения, развертывание утверждено или когда изменяется состояние развертывания. Дополнительные сведения об интеграции Microsoft Teams или Slack см. в разделе "Рекомендуемые интеграции GitHub".
Вы также можете создать приложение, использующее веб-перехватчики развертываний и их состояния для отслеживания развертываний. При выполнении задания рабочего процесса, ссылающегося на среду, создается объект развертывания со свойством environment
с названием вашей среды. По мере выполнения рабочего процесса создаются объекты состояния развертывания со свойством environment
— имя вашей среды, свойством environment_url
— URL-адрес среды (если указано в рабочем процессе), и свойством state
— состояние задания. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Документация по приложениям GitHub](/webhooks-and-events/webhooks/webhook-events-and-payloads#deployment)".
Выбор средства выполнения тестов
Вы можете выполнять рабочий процесс развертывания в средствах выполнения тестов, размещенных в GitHub или в локальных средствах выполнения. Трафик от средств выполнения тестов, размещенных в GitHub, может поступать из широкого диапазона сетевых адресов. Если вы выполняете развертывание во внутренней среде, а ваша компания ограничивает внешний трафик частными сетями, рабочие процессы GitHub Actions, выполняемые в средствах выполнения тестов, размещенных в GitHub, могут не иметь возможности взаимодействовать с внутренними службами или ресурсами. Чтобы решить эту проблему, вы можете разместить собственные средства выполнения тестов. Дополнительные сведения см. в разделе "[AUTOTITLE" и "О самостоятельно размещенных средствах выполнения](/actions/using-github-hosted-runners/about-github-hosted-runners)".
Отображение эмблемы состояния
Для отображения состояния рабочего процесса развертывания можно использовать эмблему состояния. Индикатор состояния показывает, что в данный момент рабочий процесс завершается сбоем или передачей. Обычное индикатор состояния добавляется в файл README.md
репозитория, но может быть добавлен на любую веб-страницу по вашему желанию. По умолчанию индикаторы показывают состояние ветви по умолчанию. Если в ветвь по умолчанию не выполняется рабочий процесс, отобразится состояние последнего запуска во всех ветвях. Состояние рабочего процесса можно отобразить для определенной ветви или события с помощью branch
event
параметров запроса в URL-адресе.
Дополнительные сведения см. в разделе «Добавление эмблемы состояния рабочего процесса».
Поиск примеров развертывания
В этой статье продемонстрированы возможности GitHub Actions, которые можно добавить в рабочие процессы развертывания.
GitHub Enterprise Cloud предлагает шаблоны рабочих процессов развертывания для нескольких популярных служб, таких как веб-приложение Azure. Сведения о начале работы с шаблоном рабочего процесса см. в разделе "Использование шаблонов рабочих процессов" или полный список шаблонов рабочих процессов развертывания. Вы также можете ознакомиться с более подробными руководствами по конкретным рабочим процессам развертывания, таким какРазвертывание Node.js в Службе приложений Azure.
Многие поставщики служб также предлагают действия на GitHub Marketplace для развертывания в своей службе. Полный список см. в разделе GitHub Marketplace.