microCMSで記事を作成したり、編集・削除等更新した際にそのままサイトに反映されるようにWebhookでGitHub Actionsを実行するようにしたのでそのメモです。

microCMS側の設定

microCMSにログインして、コンテンツを選択し、
API設定 > Webhook
に移動します。

すると、下記の画面になりましますので、「+ 追加」をクリック。

下記の「サービスの選択」画面が開くので、「GitHub Actions」をクリック。

下記の画面の各項目を入力します。

  • Webhookの名称・・・任意の分かりやすい名称を入れます(日本語もOK)
  • GitHubトークン・・・GitHubトークンを入れます。GitHubにアクセスし作成します(下に説明あり)
  • ユーザー名・・・リポジトリのユーザー名を入れます
  • リポジトリ名・・・これはそのままリポジトリ名を入れます
  • トリガーイベント名・・・任意の名称で入れます。後ほどyamlファイルでも使用します(例 : posts_update等)

「通知タイミングの設定」はGitHub Actionsを実行したいタイミングのみにチェックボックスを入れます。

ここまでできたら「設定する」をクリックして保存します。

GitHubトークンの作成方法

GitHubトークンはGitHubにログインして、
右上のプロフィールアイコンから、「Settings」に入り、
Developer Settings > Personal access tokens > Generate new token
ここから作成します。

GitHub Actionsの設定

まず、ワークフローの該当するyamlファイルを編集します。(ない場合は作成します)

.github/workflow/deploy.yml

name: Deploy website on push
on:
  push:
    branches: [main]
  repository_dispatch:
    types: [posts_update]

jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest

    steps:
      - name: Get latest code
        uses: actions/checkout@v3

      - name: Use Node.js 21
        uses: actions/setup-node@v3
        with:
          node-version: "21"

      - name: Build Project
        run: |
          npm install
          npm run build
        env:
          MICROCMS_SERVICE_DOMAIN: ${{ secrets.MICROCMS_SERVICE_DOMAIN }}
          MICROCMS_API_KEY: ${{ secrets.MICROCMS_API_KEY }}

node.jsのバージョン等はそれぞれの環境に合わせて変更してください。

4行目の「posts_update」の部分は、

types: [posts_update]

microCMS側で設定した、「トリガーイベント名」を入れてください。

最後の、

env:
  MICROCMS_SERVICE_DOMAIN: ${{ secrets.MICROCMS_SERVICE_DOMAIN }}
  MICROCMS_API_KEY: ${{ secrets.MICROCMS_API_KEY }}

この部分のsecretsの値の設定をGitHub側で設定します。

Actions secretsの設定

GitHubの該当のリポジトリにアクセスし、
Settings > Secrets and variables > Actions
から設定します。

「New repository secret」をクリックして、

ここに、
MICROCMS_SERVICE_DOMAIN と MICROCMS_API_KEY の値をそれぞれ登録します。

Name : MICROCMS_SERVICE_DOMAIN
Secret : ◯◯◯◯.microcms.ioの◯◯◯◯の部分

Name : MICROCMS_API_KEY
Secret : MicroCMSの画面からAPIプレビューで確認できます

ここまでできたら、編集・作成したyamlファイルをプッシュしておきます。

microCMSから記事を更新して、GitHub Actionsが実行されれば完了です。