Skip to main content

Создание пользовательских правил защиты развертывания

Используйте GitHub Apps для автоматизации защиты развертываний с помощью сторонних систем.

Кто может использовать эту функцию?

Пользовательские правила защиты развертывания доступны в общедоступных репозиториях для всех планов. Для доступа к пользовательским правилам защиты развертывания в частных или внутренних репозиториях необходимо использовать GitHub Enterprise. Дополнительные сведения см. в разделе Планы GitHub.

Необходимые компоненты

Примечание.

Пользовательские правила защиты развертывания в настоящее время находятся в public preview и подвергаются изменению.

Общие сведения о правилах защиты развертывания см. в разделе Развертывание с помощью GitHub Actions.

Создание настраиваемого правила защиты развертывания с помощью GitHub Apps

  1. Создайте GitHub App. Дополнительные сведения см. в разделе Регистрация приложения GitHub. Настройте GitHub App следующим образом.

    1. При необходимости в текстовом поле URL-адреса обратного вызова в разделе "Идентификация и авторизация пользователей" введите URL-адрес обратного вызова. Дополнительные сведения см. в разделе Сведения о URL-адресе обратного вызова авторизации пользователя.

    2. В разделе "Разрешения" выберите разрешения репозитория.

    3. Справа от пункта "Действия", щелкните раскрывающееся меню и выберите Access: Только для чтения.

          ![Скриншот раздела «Разрешения репозитория» для нового приложения GitHub. Разрешение "Действия" показывает "Только для чтения" и описывается оранжевым цветом.](/assets/images/help/actions/actions-repo-permissions-read-only.png)
      
    4. Справа от пункта "Развертывания", щелкните раскрывающееся меню и выберите Access: Чтение и запись.

          ![Скриншот раздела «Разрешения репозитория» для нового приложения GitHub. Разрешение "Развертывания" показывает "Чтение и запись" и описывается оранжевым цветом.](/assets/images/help/actions/actions-deployments-repo-permissions-read-and-write.png)
      
    5. В разделе "Подписка на события" выберите правило защиты развертывания.

          ![Скриншот раздела «Подписка на события» для нового приложения GitHub. Флажок для правила защиты развертывания описан оранжевым цветом.](/assets/images/help/actions/actions-subscribe-to-events-deployment-protection-rules.png)
      
  2. Установите настраиваемое правило защиты развертывания в репозиториях и включите его для использования. Дополнительные сведения см. в разделе Настройка пользовательских правил защиты развертывания.

Утверждение или отклонение развертываний

Когда рабочий процесс достигнет задания, ссылающегося на среду с включенным пользовательским правилом защиты развертывания, GitHub отправляет POST запрос на URL-адрес, который настроен, содержащий deployment_protection_rule полезные данные. Вы можете написать правило защиты развертывания, чтобы автоматически отправлять запросы REST API, утверждающие или отклоняющие развертывание на основе полезных deployment_protection_rule данных. Настройте запросы REST API следующим образом.

  1. Проверьте входящий POST запрос. Дополнительные сведения см. в разделе Проверка доставки веб-перехватчика.

  2. Используйте веб-маркер JSON для проверки подлинности в виде GitHub App. Дополнительные сведения см. в разделе Аутентификация как приложение GitHub.

  3. Используя идентификатор установки из полезных deployment_protection_rule данных веб-перехватчика, создайте маркер установки. Дополнительные сведения см. в разделе Об аутентификации с помощью приложения GitHub.

    curl --request POST \
    --url "https://api.github.com/app/installations/INSTALLATION_ID/ACCESS_TOKENS" \
    --header "Accept: application/vnd.github+json" \
    --header "Authorization: Bearer {jwt}" \
    --header "Content-Type: application/json" \
    --data \
    '{ \
       "repository_ids": [321], \
       "permissions": { \
          "deployments": "write" \
       } \
    }'
    
  4. При необходимости, чтобы добавить отчет о состоянии, не выполняя никаких других действий в GitHub, отправьте POST запрос /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_ruleв . В тексте запроса опустите stateэлемент . Дополнительные сведения см. в разделе Конечные точки REST API для выполнения рабочих процессов. Отчет о состоянии можно опубликовать в одном развертывании до 10 раз. Отчеты о состоянии поддерживают форматирование Markdown и могут содержать до 1024 символов.

  5. Чтобы утвердить или отклонить запрос, отправьте POST запрос /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_ruleв . В тексте запроса задайте state для свойства значение approved или rejected. Дополнительные сведения см. в разделе Конечные точки REST API для выполнения рабочих процессов.

  6. При необходимости запросите состояние утверждения рабочего процесса, отправив GET запрос /repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvalsв . Дополнительные сведения см. в разделе Конечные точки REST API для выполнения рабочих процессов.

  7. При необходимости просмотрите развертывание на GitHub. Дополнительные сведения см. в разделе Проверка развертываний.

Публикация правил защиты пользовательского развертывания в GitHub Marketplace

Вы можете опубликовать GitHub App в GitHub Marketplace, чтобы разработчики могли обнаруживать подходящие правила защиты и устанавливать их в репозиториях GitHub . Вы также можете просмотреть существующие правила защиты развертывания в соответствии с вашими потребностями. Дополнительные сведения см. в разделе [AUTOTITLE и О GitHub Marketplace для приложений](/apps/publishing-apps-to-github-marketplace/listing-an-app-on-github-marketplace).