Render.comへのデプロイを行うまともなGitHub Actionがなかったので一番シンプルで便利なやつを作った
作ったもの
GitHub Actionsのワークフローから Render.com へのデプロイを行うためのActionです。
動機
マーケットプレイスを検索 するといくつか先人たちが作ってくれたActionがあったのですが、なぜか普通に当たり前に欲しい機能を過不足なく満たしているものが1つもなかったので、自分で作りました。
機能紹介
name: Render Deploy
on:
push:
pull_request:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: ttskch/render-deploy@v1.0.0
with:
api-key: ${{ secrets.RENDER_API_KEY }}
service-id: ${{ secrets.RENDER_SERVICE_ID }}
interval: 20 # optional
timeout: 300 # optional
こんな感じで使います。
必須パラメータは
-
api-key
Render.comのAPIキー -
service-id
デプロイ対象のサービスのサービスID
の2つだけです。(これらは Render.comのAPI を叩くのに必須です)
APIキーはRender.comの
Account Settings > API Keys
で作れます。サービスIDはサービスのダッシュボードのURL
https://dashboard.render.com/web/srv-xxxxxxxxxxxxxxxxxxxx
のsrv-xxxxxxxxxxxxxxxxxxxx
の部分です。ダッシュボードのSettings
で見られるDeploy Hook
のURL
https://api.render.com/deploy/srv-xxxxxxxxxxxxxxxxxxxx?key=xxxxxxxxxxx
のsrv-xxxxxxxxxxxxxxxxxxxx
の部分も同じです。
オプション項目として
-
interval
デプロイの進捗状況をポーリングする間隔(秒)(デフォルトは10秒) -
timeout
デプロイの進捗状況のポーリングを最大どれだけの期間行うか(秒)(デフォルトは600秒=10分)
を設定できます。Render.comのAPIのRate Limit が気になる場合などに適切に変更してください。
実際に使用すると、以下のようにデプロイの状態をログ上で確認することができます。(APIのレスポンスをそのまま出力しているだけです)
finishedAt
が null
でなくなるまでポーリングし続け、null
でなくなったときの status
が live
以外(=エラー値)だった場合はActionが失敗します。
また、timeout
の秒数が経過してもデプロイの完了が確認できなかった場合も失敗します。
作り方
初めてGitHub Actionを作ったんですが、以下の公式ドキュメントのとおりに進めたらめっちゃ簡単に作れました。
ドキュメントの末尾にリンクがありますが、公式のテンプレートリポジトリも用意されていて、
このテンプレートからリポジトリを作って実処理の部分を修正する、みたいな流れで作業すればすぐ作れちゃうと思います。
僕は、テンプレートリポジトリが機能てんこ盛りすぎてちょっと邪魔だったので必要最低限のツールチェーンだけ入れて自分で構築しました。
おわりに
というわけで、Render.comへのデプロイを行うまともなGitHub Actionがなかったので一番シンプルで便利なやつを作った話でした。
Render.comユーザーの方はよかったら使ってみてください!
Discussion