Contentful + Github Actions のトークン設定でハマった

📆October 18, 2020🔖 Github Actions

Contentful での更新をフックして、GitHub Actions のワークフローを実行するという仕組みを構築した際に、うまく動かなくて小一時間ハマったのでその覚書。

ハマったエラーについて

"status": "404 Not Found", でメチャメチャハマりました。URL の指定もちゃんと出来ているはずなのに何故…?と小一時間。

発生したエラーのレスポンスボディ
発生したエラーのレスポンスボディ

結論、Contentful の Webhook 設定のリクエストヘッダーに詰めていた値が誤っていました。本来、 Authorization というキーに対し、詰める値は token [取得したトークンの値] としなければならなかったところを、token という文字列を抜かしてしまっていました。GitHub の仕様っぽかったので、仕様書はちゃんと読みましょうって感じですね。(Contentful 側のドキュメントにはこの部分は書いてなかった……)

正しいトークンの設定
正しいトークンの設定

同じエラーが出た方がもしいれば参考になれば幸いです。(404 エラーだったので、最初もっと別のところを疑ってしまったというのもありました。認証エラー的なのが出てくれればもうちょっと早く気づけてた気がする……)

(おまけ)全体の流れの覚え書き

エラーだけだと少し寂しいので、Contentful + GitHub Actions の全体の流れについてもさらっと補足。

基本的には Contentful が提供してくれている公式ドキュメントがあるので、それ通りに設定していけば迷うことはないはずです。僕も上記のエラー以外はスラスラと設定できました。

https://www.contentful.com/blog/2020/06/01/running-static-site-builds-with-github-actions-and-contentful/

GitHub には repository_dispatch という機能があり(知らなかった)、Contentful の更新をフックして、Contentful 側から GitHub にイベントリクエストを送るという流れになります。誰でもリクエストできてはまずいので、認証が必要で、それが上記のトークンだったという感じですね。

以上、もし同じ構成で CI の構築をしたい方がいましたら、参考にしてみてください。