From 6c8b04f813c0b4ff2878ac24b0c09eef827cab20 Mon Sep 17 00:00:00 2001 From: teerawat1992 Date: Mon, 16 Mar 2020 15:42:31 +0700 Subject: [PATCH 1/5] Add code format and type checker to CI --- .github/workflows/elixir.yml | 11 +++++++++-- mix.exs | 5 ++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 180f6dc..bf45929 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -4,18 +4,25 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest container: - image: elixir:1.9.1-slim + image: elixir:1.10.2-slim steps: - uses: actions/checkout@v1 + - uses: actions/cache@v1 + with: + path: _build + key: build-${{ hashFiles('mix.lock') }} - name: Install Dependencies run: | mix local.rebar --force mix local.hex --force mix deps.get + - name: Format Files + run: mix format --check-formatted - name: Run Tests run: mix test + - name: Run Dialyzer + run: mix dialyzer diff --git a/mix.exs b/mix.exs index bca6860..6ba4425 100644 --- a/mix.exs +++ b/mix.exs @@ -8,7 +8,10 @@ defmodule Chopperbot.MixProject do elixir: "~> 1.8", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, - deps: deps() + deps: deps(), + dialyzer: [ + plt_core_path: "_build/#{Mix.env()}" + ] ] end From 00025de4e71ea0657b6ad106a4015698b191f918 Mon Sep 17 00:00:00 2001 From: teerawat1992 Date: Thu, 26 Mar 2020 21:38:24 +0700 Subject: [PATCH 2/5] Update dialyxir to the latest version --- mix.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.lock b/mix.lock index 54195d2..e0ac635 100644 --- a/mix.lock +++ b/mix.lock @@ -5,8 +5,8 @@ "cowboy": {:hex, :cowboy, "2.7.0", "91ed100138a764355f43316b1d23d7ff6bdb0de4ea618cb5d8677c93a7a2f115", [:rebar3], [{:cowlib, "~> 2.8.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "04fd8c6a39edc6aaa9c26123009200fc61f92a3a94f3178c527b70b767c6e605"}, "cowlib": {:hex, :cowlib, "2.8.0", "fd0ff1787db84ac415b8211573e9a30a3ebe71b5cbff7f720089972b2319c8a4", [:rebar3], [], "hexpm", "79f954a7021b302186a950a32869dbc185523d99d3e44ce430cd1f3289f41ed4"}, "decorator": {:hex, :decorator, "1.3.2", "63b8ac9e23b28053390abdda33bb9e1f3dd9e8f9a981f47a06fc2f2fe2e2f772", [:mix], [], "hexpm", "b80bd089e3c8579e6d9ea84eed307b1597a0d94af25331e424a209477ad1a7fc"}, - "dialyxir": {:hex, :dialyxir, "1.0.0-rc.7", "6287f8f2cb45df8584317a4be1075b8c9b8a69de8eeb82b4d9e6c761cf2664cd", [:mix], [{:erlex, ">= 0.2.5", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "506294d6c543e4e5282d4852aead19ace8a35bedeb043f9256a06a6336827122"}, - "erlex": {:hex, :erlex, "0.2.5", "e51132f2f472e13d606d808f0574508eeea2030d487fc002b46ad97e738b0510", [:mix], [], "hexpm", "756d3e19b056339af674b715fdd752c5dac468cf9d0e2d1a03abf4574e99fbf8"}, + "dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"}, + "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "file_system": {:hex, :file_system, "0.2.8", "f632bd287927a1eed2b718f22af727c5aeaccc9a98d8c2bd7bff709e851dc986", [:mix], [], "hexpm", "97a3b6f8d63ef53bd0113070102db2ce05352ecf0d25390eb8d747c2bde98bca"}, "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, From 82e6e9061a4e115c8de36f3160aa79ef51a1fc2c Mon Sep 17 00:00:00 2001 From: teerawat1992 Date: Thu, 26 Mar 2020 22:02:15 +0700 Subject: [PATCH 3/5] Edit elixir.yml to use elixir and erlang version for cache key --- .github/workflows/elixir.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index bf45929..9dc3bd8 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -6,15 +6,21 @@ jobs: build: runs-on: ubuntu-latest - container: - image: elixir:1.10.2-slim + strategy: + matrix: + otp: [22.2] + elixir: [1.10.2] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 + - uses: actions/setup-elixir@v1 + with: + otp-version: ${{ matrix.otp }} + elixir-version: ${{ matrix.elixir }} - uses: actions/cache@v1 with: path: _build - key: build-${{ hashFiles('mix.lock') }} + key: build-erlang-${{ matrix.otp }}-elixir-${{ matrix.elixir }} - name: Install Dependencies run: | mix local.rebar --force From 66dd437588023e15dcb1eb325eeadf7f7d7fad0f Mon Sep 17 00:00:00 2001 From: teerawat1992 Date: Thu, 26 Mar 2020 22:07:00 +0700 Subject: [PATCH 4/5] Name build job to Erlang xxx / Elixir xxx --- .github/workflows/elixir.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 9dc3bd8..5af528d 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -6,6 +6,8 @@ jobs: build: runs-on: ubuntu-latest + name: Erlang ${{ matrix.otp }} / Elixir ${{ matrix.elixir }} + strategy: matrix: otp: [22.2] From 156137055a8d0631528b08d1be0644d445dcb829 Mon Sep 17 00:00:00 2001 From: teerawat1992 Date: Thu, 26 Mar 2020 22:21:00 +0700 Subject: [PATCH 5/5] Update jason to the latest version --- .github/workflows/elixir.yml | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 5af528d..5828b30 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -6,7 +6,7 @@ jobs: build: runs-on: ubuntu-latest - name: Erlang ${{ matrix.otp }} / Elixir ${{ matrix.elixir }} + name: build strategy: matrix: diff --git a/mix.lock b/mix.lock index e0ac635..eb2e7c3 100644 --- a/mix.lock +++ b/mix.lock @@ -11,7 +11,7 @@ "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, - "jason": {:hex, :jason, "1.1.2", "b03dedea67a99223a2eaf9f1264ce37154564de899fd3d8b9a21b1a6fd64afe7", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fdf843bca858203ae1de16da2ee206f53416bbda5dc8c9e78f43243de4bc3afe"}, + "jason": {:hex, :jason, "1.2.0", "10043418c42d2493d0ee212d3fddd25d7ffe484380afad769a0a38795938e448", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "116747dbe057794c3a3e4e143b7c8390b29f634e16c78a7f59ba75bfa6852e7f"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, "mime": {:hex, :mime, "1.3.1", "30ce04ab3175b6ad0bdce0035cba77bba68b813d523d1aac73d9781b4d193cf8", [:mix], [], "hexpm", "6cbe761d6a0ca5a31a0931bf4c63204bceb64538e664a8ecf784a9a6f3b875f1"}, "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},