▶️
dockerコンテナをGitHub ActionsでHerokuに自動デプロイ
はじめに
GitHub Actionsを用いたHerokuへの自動デプロイについて、情報が少なかったので記事にしていきます
今回はRailsを用いたwebアプリをdocker上で構築し、Herokuにデプロイします
Heroku CLIを用いた手動のデプロイは成功している前提です
結論
リポジトリ直下に.github/workflows/workflow.yml
を作成します。ディレクトリ名はこの通りにして下さい
下記をworkflow.ymlにコピペすればOKです。
workflow.yml
name: Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install Heroku CLI
run: |
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh
heroku container:login
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
- name: Checkout
uses: actions/checkout@v3
- name: Build
uses: gonuit/heroku-docker-deploy@v1.3.3
with:
email: ${{ secrets.HEROKU_EMAIL }}
heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
heroku_app_name: ${{ secrets.HEROKU_APP_NAME }}
dockerfile_directory: ./ # Dockerfileが存在するディレクトリ
dockerfile_name: Dockerfile
docker_options: "--no-cache"
process_type: web
ポイント
steps
にCheckout
, Build
のみを記述している例が多いですが、自分の環境ではそのままだと
といった、Heroku CLIが見つからない旨のエラーが出ました。そこで、冒頭にInstall Heroku CLI
としてHeroku CLIのインストールを手動で行うことで、エラーが解消されました。
設定手順
- 冒頭に示したymlファイルを作成します。
- GitHubのリポジトリを開いて、
Settings
->Secrets and variables
->Actions
からNew repository secretで以下の環境変数を設定します。変数名 内容 HEROKU_EMAIL Herokuに登録したメールアドレス HEROKU_API_KEY HerokuのAPIキー HEROKU_APP_NAME デプロイするアプリの名前 - mainブランチにpushすると、自動でデプロイが開始されます。
参考
Discussion