前提条件
メモ
カスタム配置保護ルールは、現在 パブリック プレビュー 段階であり、変更される可能性があります。
デプロイ保護規則の一般的な情報については、「GitHub Actionsを使用したデプロイ」をご覧ください。
GitHub Apps
を使ったカスタム デプロイ保護規則の作成
-
GitHub App を作成します。 詳しくは、「GitHub アプリの登録」をご覧ください。 次のように GitHub App を構成します。
-
必要に応じて [ユーザーの識別と認可] の下にある [コールバック URL] テキスト フィールドにコールバック URL を入力します。 詳しくは、「ユーザー承認コールバック URL について」をご覧ください。
-
[アクセス許可] で [リポジトリのアクセス許可] を選びます。
-
[アクション] の右にあるドロップ ダウン メニューをクリックし、 [アクセス: 読み取り専用] を選びます。
![新しいGitHub アプリの [リポジトリのアクセス許可] セクションのスクリーンショット。 [Actions] のアクセス許可は [Read-only] と表示され、オレンジ色の枠線で囲まれています。](/assets/images/help/actions/actions-repo-permissions-read-only.png) -
[デプロイ] の右側にあるドロップ ダウン メニューをクリックし、 [アクセス: 読み取りと書き込み] を選びます。
![新しいGitHub アプリの [リポジトリのアクセス許可] セクションのスクリーンショット。 [Deployments] のアクセス許可は [Read and write] と表示され、オレンジ色の枠線で囲まれています。](/assets/images/help/actions/actions-deployments-repo-permissions-read-and-write.png) -
[イベントへのサブスクライブ] で [デプロイ保護規則] を選びます。
![新しいGitHub アプリの [Subscribe to events] セクションのスクリーンショット。 [Deployment protection rule] のチェックボックスが、オレンジ色の枠線で囲まれています。](/assets/images/help/actions/actions-subscribe-to-events-deployment-protection-rules.png)
-
-
カスタム デプロイ保護規則をリポジトリにインストールし、使用できるようにします。 詳しくは、「カスタム デプロイ保護規則の構成」をご覧ください。
デプロイの承認または拒否
カスタム デプロイ保護規則を有効にした環境を参照するジョブにワークフローが到達すると、構成した URL 宛てに、GitHub から POST ペイロードを含む deployment_protection_rule 要求が送信されます。
deployment_protection_rule ペイロードに基づいてデプロイを承認または拒否する REST API 要求を自動的に送信するように、デプロイ保護規則を記述することができます。 次のように REST API 要求を構成します。
-
受信
POST要求を検証します。 詳しくは、「Webhook 配信を検証する」をご覧ください。 -
JSON Web Token を使って GitHub App として認証を行います。 詳しくは、「GitHub アプリとしての認証」をご覧ください。
-
`deployment_protection_rule` Webhook ペイロードのインストール ID を使って、インストール トークンを生成します。 詳しくは、「[AUTOTITLE](/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-a-github-app)」をご覧ください。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 に対して他のアクションを行わずに状態レポートを追加するには、
POST要求を/repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_ruleに送信します。 要求本文内ではstateを省略します。 詳しくは、「ワークフロー実行の REST API エンドポイント」をご覧ください。 同じデプロイに関する状態レポートは、最大 10 回まで投稿できます。 状態レポートは Markdown 形式をサポートしており、最大 1,024 文字まで使用できます。 -
要求を承認または拒否するには、
POST要求を/repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_ruleに送信します。 要求本文で、stateプロパティをapprovedまたはrejectedに設定します。 詳しくは、「ワークフロー実行の REST API エンドポイント」をご覧ください。 -
必要に応じて、
GET要求を/repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvalsに送信して、ワークフロー実行の承認状態を要求します。 詳しくは、「ワークフロー実行の REST API エンドポイント」をご覧ください。 -
必要に応じて、GitHub 上のデプロイを確認します。 詳しくは、「デプロイメントのレビュー」をご覧ください。
GitHub Marketplace でのカスタム デプロイ保護規則の発行
開発者が適切な保護規則を見つけて自分の GitHub App リポジトリにインストールできるように、GitHub Marketplace に GitHub を発行することができます。 また、ニーズに合わせて既存のカスタム デプロイ保護規則を参照することもできます。 詳細については、「GitHub Marketplace for apps について」および「GitHub Marketplace にアプリを一覧表示する」を参照してください。