This page looks best with JavaScript enabled

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

 ·   ·  ☕ 2 min read  ·  ✍️ さんぽし

こんばんは、みなさんGitHub Action使ってますか?

この記事はElixir/PhoenixのリポジトリにGitHub Actionを利用して自動でlintとtestが回るように設定したい際のメモになります
例の如くElixirに関する記事が少ないため自分用のメモがてら残しておきます

実行したいmixタスク

mix test
mix format --check-formatted

見ての通りですが、上からtestをするコマンド、formatがかかってるか確認するコマンドになります

Elixirは公式のformatがあるのはすごく良いですよね

このタスク達をPRの作成時、更新時に実行してちゃんとtestが通るかformatがかかってるかを確認することにします

workflowファイル

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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

Share on

さんぽし
WRITTEN BY
さんぽし
Web Developer /w Elixir, Go