GitHub ActionsでDeno Deployにデプロイする
Deno Deployは非常に便利です。GitHubのリポジトリと連携してpushすれば自動でデプロイまでやってくれます。
しかし、何故かここ数日それが自動で行われません。Deno Deployから再デプロイみたいなものはないし、リポジトリのUnlinkとLinkを使って数回しのぎましたが、一向に直る気配がありません。
そんな時、Link時にGitHub Actions経由でデプロイができそうだったので、再デプロイが簡単なこともありGitHub Actions経由に切り替えることにしました。今回はその連携に必要な作業をまとめようと思います。
Deno Deploy側の作業
DenoがDeno Deployと正式に連携するツールを公開しているので、これを使っていきます。
まずはDeno Deploy側で必要な作業を行っていきます。
プロジェクトの連携方法を変更
まずはプロジェクトの Settings
タブを開きます。Git Integration
の項目から連携方法を変更するため一度Unlinkで連携を解除後、再度Linkしましょう。
ブランチを選択した後どうやってデプロイするかの選択肢が現れるので、ここで Automatic
ではなく Github Actions
を選びます。
その後設定をしてくれと言われるのですが必要な情報があるのでそれを取得後にやっていきます。
プロジェクト名の取得
ついでにプロジェクト名も取得しておきます。
同じページの最上部に Project Name
があるのでそこの入力エリア内の名前をコピーしてください。
アクセストークンの発行
次にDeno Deploy側のアクセストークンを取得します。
Access Tokens
の一番下に + New Access Token
というボタンがあるのでクリックして、アクセストークンを作成します。とりあえずわかりやすく GitHub Actions
等の名前をつけると良いでしょう。
作成直後にアクセストークンが発行されるので消えないうちにコピーしましょう。
これでDeno Deploy側の作業は終了です。
GitHub側の作業
次にGitHub Actionsの設定になります。デプロイするためには先程のアクセストークンが必要なので、それを環境変数として参照できるようにします。
次にDeno Deployにデプロイする対象のリポジトリに入り、Settings
タブを開いてください。
左側のサイドメニューの下に Secrets and variables
があるのでクリックすると環境変数を設定可能な候補が出てくるので、今回は Actions
を選んでください。
ここで New repository secret
をクリックして、値を設定します。
Name
は DENO_DEPLOY_TOKEN
で Secret
には先程のアクセストークンを貼り付けてください。改行などが入ると良くないので気をつけてください。
GitHub Actionsの作成
では最後にGitHub Actionsを作成します。今回は再デプロイも簡単なように、main
ブランチへのpushとワークフローからの実行のタイミングで行います。
.github/workflows/
に deploy.yml
を作成します。
name: DenoDeploy
on:
push:
branches:
- 'main'
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Deploy to Deno Deploy
uses: denoland/deployctl@v1
with:
project: プロジェクト名
entrypoint: main.ts
エントリーポイントが異なる場合は main.ts
を書き換えてください。これでGitHub Actions経由でDeno Deployにデプロイが可能になりました。
まとめ
Denoが正式なツールを提供していてくれたので、スムーズに切り替え作業ができました。
必要な値もアクセストークンとプロジェクト名くらいなもので、さくっと作れるのは良いですね。
これで今回のような連携不具合?が発生しても任意のタイミングで再デプロイ可能になったので、しばらくはこれで運用していこうと思います。
Discussion