Elixir / PhoenixのリポジトリにGitHub Actiansを用いてlintとtestをかけたい

October 20, 2020

こんばんは、みなさん 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 の環境を立ち上げています

actions/setup-elixir - GitHub

他に特に特殊なことはしていません。基本的には公式の README と同じようなことをしています。 キャッシュを挟んで action の回る時間を短くしています

また、make run-db-localは手元に開発用の mysql を立てるコマンドです mysql を利用していたので開発用の make コマンドを再利用しましたが、postgresql の方は上記の公式の README をそのまま参考にすれば良いと思います

この GitHub Action を用いているリポジトリは以下なので詳しく見たい方は確認してみたください

sanposhiho/nippol-server - GitHub

このエントリーをはてなブックマークに追加