はじめに
HCP Terraform の VCS Provider: GitHub.com (Custom) を使用する際、GitHub リポジトリとの連携において Webhook と OAuth 認証がどのように機能するのかを検証しました。
本記事では、正常動作時の挙動と、OAuth トークンが無効化された場合の動作について解説します。
環境
- HCP Terraform
- GitHub リポジトリ
VCS Provider: GitHub.com (Custom) と Webhook の設定
設定で GitHub.com (Custom) の VCS Provider を作成し、Workspace に接続すると、GitHub リポジトリの Webhooks に自動的に設定が追加されます。
この Webhook により、GitHub 上のイベント(PR 作成など)が HCP Terraform に通知される仕組みになっています。
正常動作時の挙動
PR を作成すると、以下の流れで処理が実行されます。
1. Webhook による通知
GitHub の Webhook 設定画面の「Recent Deliveries」を確認すると、HCP Terraform への通信記録が記録されています。
上記の例では、10/21 21:43:11 に HCP Terraform に対して通知が送信されました。
2. HCP Terraform での Plan 実行
HCP Terraform 側の Run 履歴を確認すると、Webhook 通知を受けた直後に Plan が実行されていることが分かります。
この例では、10/21 21:43:17(通知の約6秒後)に Plan が実行されました。
VCS Provider 設定の OAuth トークン無効化時の動作検証
VCS Provider の設定に使用した OAuth 認証が無効化された場合にどのような動作になるか検証しました。
実験内容
- VCS Provider:
GitHub.com (Custom)用の OAuth App の Client Secret を再作成 - 「Revoke all user tokens」を実行してトークンを無効化
- PR を作成して動作を確認
結果
PR 作成後、以下の現象が確認されました。
- GitHub の「Recent Deliveries」には通信履歴が記録される(Webhook 自体は成功)
- HCP Terraform 上では Run が実行されない
原因の考察
この動作から、以下の処理フローが推測されます。
- GitHub → HCP Terraform: Webhook による通知は成功
- HCP Terraform → GitHub: コードの取得時に認証エラーが発生
つまり、HCP Terraform が Webhook 通知を受け取ることには成功しているものの、その後 GitHub からコードを取得する際に OAuth トークンが無効であるため、認証に失敗して Run が実行されないという動作になっていると考えられます。
まとめ
- VCS Provider:
GitHub.com (Custom)では Webhook と OAuth 認証の両方が正常に機能している必要がある - Webhook の通信が成功していても、OAuth トークンが無効だとコードの取得に失敗する
- OAuth App の設定変更時は、HCP Terraform 側の VCS Provider 設定も更新が必要




