こんばんは、みなさん GitHub Action 使ってますか?
この記事は Elixir/Phoenix のリポジトリに GitHub Action を利用して自動で lint と test が回るように設定したい際のメモになります 例の如く Elixir に関する記事が少ないため自分用のメモがてら残しておきます
実行したい mix タスク
mix test
mix format --check-formatted
見ての通りですが、上から test をするコマンド、format がかかってるか確認するコマンドになります
Elixir は公式の format があるのはすごく良いですよね
このタスク達を PR の作成時、更新時に実行してちゃんと test が通るか format がかかってるかを確認することにします
workflow ファイル
name: test_and_lint
on:
pull_request:
types: [opened, synchronize]
paths-ignore:
- "docs/**"
jobs:
test_and_lint:
name: Test-and-Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-elixir@v1
with:
otp-version: "23.1.1"
elixir-version: "1.11.1"
- uses: actions/cache@v1
with:
path: deps
key: ${{ runner.os }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
restore-keys: |
${{ runner.os }}-mix-
- name: set up mysql
run: |
make run-db-local
eval "$(cat env.local <(echo) <(declare -x))"
until mysql -u${DB_USER} -p${DB_PASSWORD} -h${DB_HOST} -P${DB_PORT} -e "SELECT 1"; do sleep 1; done
- run: mix deps.get
- run: mix test
- run: mix format --check-formatted
以下を用いて Elixir の環境を立ち上げています
他に特に特殊なことはしていません。基本的には公式の README と同じようなことをしています。 キャッシュを挟んで action の回る時間を短くしています
また、make run-db-local
は手元に開発用の mysql を立てるコマンドです
mysql を利用していたので開発用の make コマンドを再利用しましたが、postgresql の方は上記の公式の README をそのまま参考にすれば良いと思います
この GitHub Action を用いているリポジトリは以下なので詳しく見たい方は確認してみたください