🔥

Cloudflare Workers + hono をGitHub ActionsでCI/CD

2023/10/06に公開

前例の記事が見当たらなさすぎて沼ったのでメモ。
自分用の備忘録のため、説明は不親切です。

前準備

ソースコード

honoのチュートリアルの通りに書いて、GitHubリポジトリにpushするだけ。
https://hono.dev/getting-started/cloudflare-workers

注意点

honoのデフォルトだと.gitignoreでwrangler.tomlが指定されているが、GitHub Actionsでのデプロイには必要なので入れておく。
もちろん、wrangler.tomlに、APIキーなど重要な情報は直接記入しないようにする。必要なら環境変数などを使うこと。

.gitignore
node_modules
dist
.wrangler
.dev.vars

# Change them to your taste:
- wrangler.toml
package-lock.json
yarn.lock
pnpm-lock.yaml

Cloudflare APIトークン取得

とりあえずCloudflare Workersのテンプレートそのままで取得する。
APIトークンは忘れずにコピーしておく。
https://developers.cloudflare.com/fundamentals/api/get-started/create-token/

GitHub シークレットにAPIトークンを格納

CF_API_TOKENという名前で、前項のAPIトークンを格納する。
https://docs.github.com/ja/actions/security-guides/using-secrets-in-github-actions

GitHub Actions yaml作成

今回はdevブランチへのpushをトリガーにしている。

.github/workflows/deploy.yaml
name: Deploy

# devブランチがpushされるたびに起動
on:
  push:
    branches:
      - dev

jobs:
  deploy:
    runs-on: ubuntu-latest

    name: Deploy

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 20

      # pnpmで管理しているので、pnpmをセットアップしている。パッケージマネージャによって変えること。
      - name: Setup pnpm
        uses: pnpm/action-setup@v2.2.2
        with:
          version: 8
      - run: pnpm install

   # honoのデプロイコマンドに、CloudflareのAPIトークンを環境変数として渡してRUNする。
      - name: Deploy
        run: pnpm run deploy
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}

Discussion