Skip to main content

Развертывание с помощью GitHub Actions

Узнайте, как управлять развертываниями с помощью таких функций, как среды и параллелизм.

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Введение

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 выполняет развертывание в среде, эта среда отображается на главной странице репозитория. Дополнительные сведения о просмотре развертываний в средах см. в разделе "Просмотр журнала развертывания".

Мониторинг выполнения рабочего процесса

Во время каждого выполнения рабочего процесса создается граф в режиме реального времени, иллюстрирующий ход выполнения. Этот граф можно использовать для мониторинга и отладки развертываний. Дополнительные сведения см. в разделе "Использование графа визуализации".

Кроме этого, вы можете просматривать журналы каждого выполнения рабочего процесса, а также журнал запусков рабочего процесса. Дополнительные сведения см. в разделе Просмотр журнала выполнения рабочего процесса.

Отслеживание развертываний с помощью приложений

Вы также можете создать приложение, использующее веб-перехватчики развертываний и их состояния для отслеживания развертываний. При выполнении задания рабочего процесса, ссылающегося на среду, создается объект развертывания со свойством 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-адресе.

Снимок экрана: значок состояния рабочего процесса. Левая сторона содержит логотип octocat и "GitHub Actions Demo", имя рабочего процесса. Правая половина зелена с текстом "передача".

Дополнительные сведения см. в разделе Добавление эмблемы состояния рабочего процесса.

Поиск примеров развертывания

В этой статье продемонстрированы возможности GitHub Actions, которые можно добавить в рабочие процессы развертывания.

GitHub Enterprise Server предлагает шаблоны рабочих процессов развертывания для нескольких популярных служб, таких как веб-приложение Azure. Сведения о начале работы с шаблоном рабочего процесса см. в разделе "Использование шаблонов рабочих процессов" или полный список шаблонов рабочих процессов развертывания. Вы также можете ознакомиться с более подробными руководствами по конкретным рабочим процессам развертывания, таким какРазвертывание Node.js в Службе приложений Azure.

Многие поставщики служб также предлагают действия на GitHub Marketplace для развертывания в своей службе. Полный список см. в разделе GitHub Marketplace.