Skip to main content

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

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

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

Custom deployment protection rules are available in public repositories for all plans. For access to custom deployment protection rules in private or internal repositories, you must use GitHub Enterprise.

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

Примечание.

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

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

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

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

    1. При необходимости в текстовом поле URL-адреса обратного вызова в разделе "Идентификация и авторизация пользователей" введите URL-адрес обратного вызова. Дополнительные сведения см. в разделе Сведения о URL-адресе обратного вызова авторизации пользователя.
    2. В разделе "Разрешения" выберите разрешения репозитория.
    3. Справа от пункта "Действия", щелкните раскрывающееся меню и выберите Access: Только для чтения.
      Снимок экрана: раздел "Разрешения репозитория" для нового приложения GitHub. Разрешение "Действия" показывает "Только для чтения" и описывается оранжевым цветом.
    4. Справа от пункта "Развертывания", щелкните раскрывающееся меню и выберите Access: Чтение и запись.
      Снимок экрана: раздел "Разрешения репозитория" для нового приложения GitHub. Разрешение "Развертывания" показывает "Чтение и запись" и описывается оранжевым цветом.
    5. В разделе "Подписка на события" выберите правило защиты развертывания.
      Снимок экрана: раздел "Подписка на события" для нового приложения GitHub. Флажок для правила защиты развертывания описан оранжевым цветом.
  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 "http(s)://HOSTNAME/api/v3/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. Дополнительные сведения см. в разделе Проверка развертываний.