この記事は、「fukuoka.ex Elixir/Phoenix Advent Calendar 2019」19日目の記事です。
きのうは @im_miolab さんの「プログラミング言語Elixirの北九州コミュニティ「kokura.ex」についてお話します!」でした。
はじめに
皆さん, Elixir開発でCIやってますか?
弊社では, TravisCIやCircleCIを使ってるプロジェクトもあります。
普段はGitHub使ってるのに, 他のサービスと連携する寂しさを感じていました。
GitHubActionsがベータ版で使えると知り, 魂が震えました。
そう・・・使ってみよう!! と思ったわけです。
補足
GitHubActionsは以前ベータ版でしたが, 2019年11月14日に正式版になりました。
色々できそうなんですが, 今回はCIのことだけやろうと思います!!
ではやりましょー
環境
諸事情により, Elixirのバージョンは古めです。
・elixir 1.6.6
・erlang 21.3.8.5
適当にElixir/Phoenixプロジェクト作成して, 起動します
mix phx.new actions --no-brunch --no-ecto
mix phx.server
下準備は完了です!!
ワークフローを書く前に・・・
そのまえに, 今のディレクトリ直下は以下の状態です。
※検証のためにフォーマッター入れました。
./ .formatter.exs .gitignore README.md config/ lib/ mix.lock test/
../ .git/ .idea/ _build/ deps/ mix.exs priv/
せっかくなので, GitHubに上げときます。
ワークフローを書こう!!
以下のファイルを作成します。
今回は, プルリクが上がったら, テストを実行してフォーマットチェックをする内容です。
.github/workflows/elixir.yml
name: Elixir CI
on: pull_request
jobs:
test:
name: Build & Test & FormatCheck
runs-on: ubuntu-latest
container:
image: elixir:1.6-otp-21
env:
MIX_ENV: test
steps:
- uses: actions/checkout@v1.0.0
- name: Install Dependencies
run: |
mix local.rebar --force
mix local.hex --force
mix deps.get
- name: Run Test
run: |
mix test
- name: Format Checks
run: |
mix format --check-formatted
これを作成後, プルリクを作成するとCIが動きます。
※少しタイムラグがあるので, ちょっと待たないといけません・・・。
ちゃんと動いてますね!!
CI結果を見てみる
フォーマットチェックしてますが, 私は mix format
していません。
絶対エラーになっているはずなので, 見てみます。
怒られてますね。 うん, 知ってた。
詳細をみると, フォーマットチェックでエラーになってることがわかります。
グリーンにしたい・・・
フォーマットしてないことが原因なので, フォーマットします
mix format
フォーマット完了後にPushすると, またCIが動き出します。 ドキドキ
イェ━━━━━ヽ( ゚Д゚)人(゚Д゚ )ノ━━━━━━イ!! グリーンになりました!!!
これで 「普段はGitHub使ってるのに, 他のサービスと連携する寂しさ」 から開放です!!
まとめ
GitHubActionsも正式版になりましたし,
気がついたらアーティファクトが使えるようになっていました。(気づいていないだけかも)
GitHubだけでできるようになったので, 機会があればこれからも色々触ってみたいと思います☆
明日の「fukuoka.ex Elixir/Phoenix Advent Calendar 2019」20日目の記事は、@gkumi5638 さんですー