Closed4
Cloudflare WorkersのPreview URLsをGitHub Actions経由でPR上に投稿してみる

表題の通りのことをやろうとしてみて試行錯誤してみたという感じです。
wrangler-actionsで該当のコマンドがまだ対応してなさそうなので、Claudeくんに相談しつつゴリゴリ作りました。
name: Cloudflare Workers
jobs:
deploy:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [latest]
permissions:
contents: read
deployments: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ matrix.node-version }}
- name: Build
run: |
npm ci
npm run build
- name: Deploy to Cloudflare Workers
id: deploy-workers
uses: cloudflare/wrangler-action@da0e0dfe58b7a431659754fdf3f186c529afbe65 # v3.14.1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: versions upload --message "Deployed pages by GitHub Actions branch ${{ github.ref_name }}"
- name: Extract Preview URL
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
run: |
# 最新のバージョンIDを取得
full_version_id=$(npx wrangler versions list --json | jq -r 'sort_by(.number) | reverse | .[0].id')
# ハイフンの前の部分だけを取得
version_id=$(echo "$full_version_id" | cut -d'-' -f1)
# Preview URLを構築
preview_url="https://${version_id}-birthday.yamanoku.workers.dev"
echo "preview_url=$preview_url" >> $GITHUB_OUTPUT
echo "Preview URL: $preview_url"
- name: Create comment file
run: |
cat << EOF > comment.md
## 🚀 Deployed to: ${{ steps.extract-url.outputs.preview_url }}
EOF
- name: Create PR comment
run: 'gh pr comment ${{ github.event.number }} --body-file comment.md'
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
Actionsが成功するとPR上に以下コメントが出るようになる。

Deploy to Cloudflare Workersまでは既存のやり方通りで以下がプレビューURLを取得する仕組み
-
wrangler versions list
で最新のデプロイバージョン一覧をリストで取得してくる - リストをJSON形式にする
- バージョンが一番大きいもののidを取得する
- idの形式がUUIDの
AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE
形式になり、最初のAAAAAAAA
を取得するようにする -
${AAAAAAAA}-{product_name}.{user-id}.workers.dev
の形式になるようにする(これが最新デプロイのプレビューURLとなる) - comment.mdにその内容を出力する
-
gh pr comment ${{ github.event.number }} --body-file comment.md
でPRにコメントするようにする- permissionsに
pull-requests: write
を追加しないといけない
- permissionsに

事前にPreview URLs設定をtrueにしておく必要はあるかもしれない
wrangler.jsonc
"preview_urls": true

現状はCloudflare WorkersのPreview URLsを取得するものがなさそう(2025-10-05時点)
このスクラップは9日前にクローズされました