導入:なぜPR画面でのステータス表示が重要なのか
現代のDevOps環境において、CI/CDパイプラインの構築は必須ですが、意外と見落とされがちなのが「デプロイ後の可視化」です。Slackへの通知も有効ですが、レビュアーがGitHubのプルリクエスト(PR)画面から離れずに「今、どの環境に、何がデプロイされているのか」を確認できる状態を作ることは、レビューのリードタイム短縮に直結します。本記事では、GitHub Deployment Status APIを活用し、PR画面に環境へのリンクを表示させる実装方法を解説します。
基礎知識:GitHub Deploymentとは
GitHub Deployment APIは、コードのデプロイ状態をGitHub上で追跡するための仕組みです。単なるステータス通知ではなく、APIを通じて「デプロイ先URL」「環境名(staging, productionなど)」を紐づけることで、GitHubが自動的にPRのタイムラインやUI上に「View deployment」ボタンを生成してくれます。これにより、誰でも直感的に動作確認環境へ遷移できるようになります。
実装:GitHub Actionsでの連携手順
GitHub ActionsからこのAPIを叩くには、自前でcurlを投げる方法もありますが、既存のActionを利用するのが最も効率的で堅牢です。今回は「bobheadxi/deployments」という信頼性の高いActionを使用した例を紹介します。
サンプルプログラム:GitHub Actionsによるデプロイ連携
以下のコードを、お使いのGitHub Actionsワークフローファイルの末尾に追加してください。
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# 1. ここに実際のデプロイ処理(AWSへの転送やコンテナビルドなど)を記述
# 2. デプロイ完了後、GitHubにステータスを報告するステップ
- name: Create GitHub Deployment Status
uses: bobheadxi/deployments@v1
if: success()
with:
step: finish
token: ${{ secrets.GITHUB_TOKEN }}
status: ${{ job.status }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
env: staging # 環境名を指定
env_url: https://staging.example.com # 実際の確認先URLを指定
応用・注意点:現場で陥りやすい罠
実務で導入する際、以下のポイントに注意してください。
1. GITHUB_TOKENの権限設定
Actionsでステータスを更新するには、リポジトリに対する書き込み権限が必要です。Organizationsの設定やリポジトリのActions設定で、権限が適切に付与されているか確認してください。
2. deployment_idの管理
ステータスを更新(finish)するためには、開始時(start)に発行されるdeployment_idが必要です。もし複雑なパイプラインを組む場合は、このIDを環境変数や一時ファイルで引き回す設計が求められます。
3. 複数環境への対応
stagingだけでなく、review-app(PRごとに個別の環境を作成する場合)でもこの仕組みは非常に強力です。URLを動的に生成し、その変数をenv_urlに渡すように設計すれば、レビュアーは環境構築の手間なく即座に動作確認を行えるようになります。
開発体験(DX)の向上は、チームの生産性を底上げします。まずは小さな一歩として、staging環境へのデプロイからこのAPI連携を導入してみてください。

コメント