monolithic kernel

ブログのデプロイ先を Cloudflare Workers に切り替えた

もともと Cloudflare Pages を使っていたのだけど、今後は Cloudflare Workers がよいそうなので乗り換えてみた。といっても、Astro で生成している静的な Web サイトだし、Functions とかを使う必要性もないので特に何か恩恵があったりはしない。

そして、すんなり移行できたかというとそういうわけではなくて、Pages ではビルド時に Puppeteer を使えていたのが Workers では使えなくなってしまった。Bun 1.2 のサポートでも bun.lock を認識してくれない問題があったし (こちらは軽微)、今後も Cloudflare のビルド環境で悩まされるリスクを感じて、GitHub Actions 上でビルドしたものをデプロイするだけにした。

こちらは特に困らなかったが、公式の wrangler-action を使ったとしても. deprecated な wrangler が入る (?) っぽく、結局自前で npm の wrangler を使うことになった。

name: deploy
on:
push:
branches:
- main
jobs:
deploy:
# https://github.com/puppeteer/puppeteer/issues/12818
runs-on: ubuntu-22.04
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: jdx/mise-action@5083fe46898c414b2475087cc79da59e7da859e8 # v2.1.11
- uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: |
.astro
node_modules
key: ${{ runner.os }}-astro-${{ hashFiles('**/.tool-versions', '**/bun.lock') }}
restore-keys: |
${{ runner.os }}-astro-
- run: |
bun install --frozen-lockfile
- run: |
bunx puppeteer browsers install chrome
- run: |
bun run build # astro build
- run: |
bun run deploy # wrangler deploy
env:
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

とはいえ無料で使えて設定 UI はわかりやすくパフォーマンスも良好と魅力の多いサービスなので、これからも使っていきたい。


Related articles