Github ActionsでGolangプロジェクトをHerokuに自動デプロイしてみた

前々回、前回の記事でHerokuでGolangプロジェクトを動かすのと、Heroku Container RegistoryにDockerイメージをPushし、web dynoにリリースするというのをやりました。

今回は、Github Actionsを使ってHerokuに自動デプロイしてみます。

simple-minds-think-alike.hatenablog.com

simple-minds-think-alike.hatenablog.com

.githubディレクトリを追加

自動デプロイというと大げさに聞こえますが、前回まででHerokuのgitリポジトリにpushすれば自動的にweb dynoにデプロイするようになっているので、PRがmasterブランチにマージされた際に自動的にgit pushするようにするだけです。

プロジェクトにファイル.github/workflows/heroku-push.ymlを追加し、 akhileshns/heroku-deploy を使ってHerokuのgitリポジトリへの自動pushが実行されるようにします。

name: Heroku push
on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: akhileshns/heroku-deploy@v3.7.8
        with:
          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
          heroku_app_name: "golang-sample-202005"
          heroku_email: ${{secrets.HEROKU_EMAIL}}

Secretsの設定

GithubのSetting/Secretsに、環境変数 HEROKU_API_KEY, HEROKU_EMAIL を登録しておきます。

f:id:moritamorie:20201219173529p:plain

masterにPRをマージしてみる

PRをマージすると、Actionsでworkflowが動き始め、以下のようなログが表示されます。

f:id:moritamorie:20201219175415p:plain

Heroku上で

  • Dockerfileのビルド
  • Heroku Container Registoryへの登録
  • web dynoへの反映

が自動的に行われます。

参考情報