🐱

GitHub Actions で Heroku に自動デプロイ

2021/01/23に公開

はじめに

筆者は、アルバイトでシステム開発を行っている九州大学の大学院生です。
本格的に開発を行っているのは1年ほどです。
記事作成経験が少ないため、主に初学者向けの記事をたくさん書いてみてます!

今回は
GitHub Actions を用いて Heroku へ自動デプロイ」 を行ってみようと思います
Heroku では GUIから自動デプロイを設定できますが、
GitHub Actions を使ったほうができることも多いので、紹介していきます

Heroku でアプリケーションを作成していることを前提としています
LINEBOT作成方法 で Herokuについて紹介しているのでわからない方は参考にしてみてください

  1. GitHub Actions とは?
  2. Heroku へ自動デプロイ

1. GitHub Actions とは?

公式がいちばんわかりやすいです... 参考

ここでは簡単に。
GitHub Actions では、ワークフローを定義することによって、
GitHub でプロジェクトのビルド・テスト・パッケージ・リリース・デプロイなどが可能になります.
実行するタイミングについても、プルルクエストをだしたとき、特定のブランチにマージされたときなど自由に設定できます

action 作成方法

Git を用いているプロジェクトで .github/workflows ディレクトリを作成し、
その中で sample.yml のようなYAMLファイルを作成します。(ファイル名は自由)

公式ドキュメント(ここ)で例があったため同様の内容を紹介します
例では、GitHub に push された時に以下のコマンドを実行します

npm install -g bats
bats -v
  • 作成する YAMLファイル
sample.yml
name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
      - run: npm install -g bats
      - run: bats -v
  • 説明

2. Heroku へ自動デプロイ

今回は 「master に プッシュされたら デプロイ」 という設定を行います
GitHub を利用したプロジェクトで .github/workflows/deploy-to-heroku.yml を作成します
以下のリンク先に README があるので参考にしながら作成してみてください
https://github.com/AkhileshNS/heroku-deploy

deploy-to-heroku.yml
name: Deploy to heroku

on:
  push:
    branches:
      - master

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

環境変数

with で記載しているように Herokuにデプロイするには、GitHub上に環境変数として
HEROKU_API_KEYHEROKU_EMAILが必要になります。
→ application-name を直接書きたくない場合も同様に環境変数にセットしてください

Github Actionsを設定したいリポジトリの Settings > Secretsにアクセスします
New repository secret から HEROKU_API_KEYHEROKU_EMAILを設定してください

※ Heroku API Key は こちら から取得

以上で設定は完了です。
GitHub に push すれば、Actions から動作を確認できます

おわりに

今回は GitHub Actions を用いたデプロイを紹介してみました!
GitHub Actions ではできることが多く、テストやデプロイを自動化することで
開発スピードをあげることができます。
今後、Github Actions でできることについて、さらに紹介していきたいと思います。
ありがとうございました!

Kaze Shindo
iQLab Engineer

Discussion