先决条件
注意
自定义部署保护规则目前为 公共预览版,可能随时更改。
有关部署保护规则的一般信息,请参阅 Deploying with GitHub Actions。
使用 GitHub Apps
创建自定义部署保护规则
-
创建 GitHub App。 有关详细信息,请参阅“注册 GitHub 应用”。 按如下所示配置 GitHub App。
- (可选)在“标识和授权用户”下的“回调 URL”文本字段中,输入回调 URL。 有关详细信息,请参阅“关于用户授权回调 URL”。
- 在“权限”下,选择“存储库权限”。
- 在“操作”右侧,单击下拉菜单,然后选择“访问: 只读”。
- 在“部署”右侧,单击下拉菜单,然后选择“访问: 读取和写入”。
- 在“订阅事件”下,选择“部署保护规则”。
-
在存储库中安装自定义部署保护规则并启用它以供使用。 有关详细信息,请参阅“配置自定义部署保护规则”。
批准或拒绝部署
工作流到达引用了已启用自定义部署保护规则的环境的作业后,GitHub 会将 POST
请求发送到配置的包含 deployment_protection_rule
有效负载的 URL。 可以编写部署保护规则,以自动发送基于 deployment_protection_rule
有效负载批准或拒绝部署的 REST API 请求。 按如下所示配置 REST API 请求。
-
验证传入的
POST
请求。 有关详细信息,请参阅“验证 Webhook 交付”。 -
使用 JSON Web 令牌以 GitHub App 形式进行身份验证。 有关详细信息,请参阅“验证为 GitHub 应用程序”。
-
使用
deployment_protection_rule
Webhook 有效负载中的安装 ID 生成安装令牌。 有关详细信息,请参阅“关于使用 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" \ } \ }'
-
(可选)若要在不对 GitHub 执行任何其他操作的情况下添加状态报告,请向
/repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule
发送POST
请求。 在请求正文中,省略state
。 有关详细信息,请参阅“工作流运行的 REST API 终结点”。 最多可以针对同一部署发布状态报告 10 次。 状态报告支持 Markdown 格式,长度最多为 1024 个字符。 -
若要批准或拒绝请求,请向
/repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule
发送POST
请求。 在请求正文中,将state
属性设置为approved
或rejected
。 有关详细信息,请参阅“工作流运行的 REST API 终结点”。 -
(可选)通过向
/repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvals
发送GET
请求来请求运行工作流的批准状态。 有关详细信息,请参阅“工作流运行的 REST API 终结点”。 -
(可选)查看 GitHub 上的部署。 有关详细信息,请参阅“审查部署”。
在 GitHub Marketplace 中发布自定义部署保护规则
可以将 GitHub App 发布到 GitHub Marketplace,使开发人员能够发现合适的保护规则并将其安装在他们的 GitHub 存储库中。 或者,可以浏览现有的自定义部署保护规则以满足需求。 有关详细信息,请参阅 关于面向应用的 GitHub Marketplace 和 在 GitHub Marketplace 中上架应用程序。