Cloudflare Workersでサーバレス開発 part2 GitHub ActionsによるCI/CD

前回のエントリー Cloudflare Workersでサーバレス開発 ではCloudflare Workersの入門的な使い方について紹介しました。今回はGitHub ActionsとWranglerによるCI/CD対応についてデプロイ周りの補足説明をします。

Wrangler GitHub Action

WranglerによるGitHub Action用のDockerコンテナアクションがCloudflareより提供されていますので是非活用しましょう。

GitHub Actionsの設定ファイルはこんな感じで。Publish Worker以下が wrangler-action によるデプロイの設定になります(ここではGitHub Actions自体の説明は省略します)。
* .github/workflows/deploy.yml

name: Deploy to Cloudflare Workers
on:
  push:
    branches:
        - master
  pull_request:
  repository_dispatch:
jobs:
  deploy:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Publish Worker
        uses: cloudflare/[email protected]
        with:
          workingDirectory: hello
          apiToken: ${{ secrets.CF_API_TOKEN }}
        env:
          CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}

Workerを1レポジトリ内に複数作ってそれぞれビルド/デプロイするパイプラインを作るケースもあると思うので、その場合はwith句の workingDirectory で wrangler-action を実行するディレクトリを指定することができます。また、デプロイに必要な環境変数(クレデンシャル)として CF_API_TOKENCF_ACCOUNT_ID を指定します。GitHub上の [Settings] > [Secrets]からこの2つの値を設定しておきます。APIトークンとアカウントIDの確認方法は前回のエントリーを参考にしてください。

その他のCloudflare Workers設定

直接wranglerによる手動デプロイをする際に wrangler.toml ファイルを別途用意していましたが、GitHub Actionsでデプロイする際にも必要です。wrangler-action では現在対応していない設定に関しては wrangler.toml ファイルで設定しておきます。

* wrangler.toml (JavaScriptのWorkerをdevドメインにデプロイする例)

name = "hello"
type = "javascript"
account_id = ""
workers_dev = true
route = ""
zone_id = ""

アカウントIDはGitHub Actionsのクレデンシャルで設定するので中身は空にしてレポジトリにアップロードしてOKです。上記例だとdevドメインにデプロイする際には wrangler.toml で指定する必要がありました。いずれは wrangler-action 上でルーティングやゾーン等の設定もできるといいなと思います。

Deploy Button

Cloudflareは以下のようなCloudflare Workersのデプロイボタンも用意してくれています。

以下のようにGitHubレポジトリ上に設置することができて、押すと予め設定した内容でCloudflare Workersがデプロイされます。

GitHub Actionsのワークフロー設定では前述のように repository_dispatch を指定しておきましょう。あとは以下のスニペットを任意の場所に置くだけでOKです。

[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/{ユーザー名}/{レポジトリ名})

ボタン押下後、リクエストに成功すると以下のような画面に変わります。お疲れ様でした。

おわりに

前回のエントリーを書いた時点ではCloudflare Workersの不備というか機能不足の点を指摘しました。その後、今回紹介した wrangler-action のように周辺環境の機能拡張が行われ、他のFaaSプロダクトの品質に少しずつですが近づいてきた印象があります。CloudflareのCDNに乗っかっているユーザーはせっかくなのでWorkersの活用も検討しておいて良い時期になってきたのではないでしょうか。リージョンに縛られないグローバルな環境は魅力的なので今後の成長を期待したいプロダクトですね。

あわせて読む:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です