diff --git a/.circleci/config.yml b/.circleci/config.yml index c35f072..2c0276b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,98 +1,65 @@ version: 2.1 -install_hex_rebar: &install_hex_rebar - run: - name: Install hex and rebar - command: | - mix local.hex --force - mix local.rebar --force +latest: &latest + pattern: "^1.17.*-erlang-27.*$" -install_system_deps: &install_system_deps - run: - name: Install system dependencies - command: | - apk add build-base - -defaults: &defaults - working_directory: ~/repo +tags: &tags + [ + 1.17.3-erlang-27.1-alpine-3.20.3, + 1.16.3-erlang-26.2.5-alpine-3.19.1, + 1.15.7-erlang-26.2.4-alpine-3.18.6, + 1.14.5-erlang-25.3.2.11-alpine-3.17.7, + 1.13.4-erlang-24.3.4.17-alpine-3.16.9 + ] jobs: - build_elixir_1_17_otp_27: + build-test: + parameters: + tag: + type: string docker: - - image: hexpm/elixir:1.17.2-erlang-27.0.1-alpine-3.20.1 - <<: *defaults + - image: hexpm/elixir:<< parameters.tag >> + working_directory: ~/repo + environment: + LC_ALL: C.UTF-8 steps: - - <<: *install_system_deps + - run: + name: Install system dependencies + command: apk add --no-cache build-base - checkout - - <<: *install_hex_rebar + - run: + name: Install hex and rebar + command: | + mix local.hex --force + mix local.rebar --force - restore_cache: keys: - - v2-mix-cache-{{ checksum "mix.lock" }} + - v1-mix-cache-<< parameters.tag >>-{{ checksum "mix.lock" }} - run: mix deps.get - - run: mix deps.unlock --check-unused - - run: mix compile - - run: mix docs - - run: mix hex.build - - run: mix test - - run: mix format --check-formatted - - run: mix credo --ignore-checks "refactor" - - run: mix dialyzer + - run: mix compile --warnings-as-errors + - run: MIX_ENV=test mix compile --warnings-as-errors + - run: mix test || mix test + - when: + condition: + matches: { <<: *latest, value: << parameters.tag >> } + steps: + - run: mix format --check-formatted + - run: mix deps.unlock --check-unused + - run: mix docs + - run: mix hex.build + - run: mix credo -a --strict --ignore-checks "refactor" + - run: mix dialyzer - save_cache: - key: v2-mix-cache-{{ checksum "mix.lock" }} + key: v1-mix-cache-<< parameters.tag >>-{{ checksum "mix.lock" }} paths: - _build - deps - build_elixir_1_15_otp_26: - docker: - - image: hexpm/elixir:1.15.2-erlang-26.0.2-alpine-3.18.2 - <<: *defaults - steps: - - <<: *install_system_deps - - checkout - - <<: *install_hex_rebar - - run: mix deps.get - - run: mix compile - - run: mix test - - build_elixir_1_14_otp_25: - docker: - - image: hexpm/elixir:1.14.3-erlang-25.2.3-alpine-3.18.0 - <<: *defaults - steps: - - <<: *install_system_deps - - checkout - - <<: *install_hex_rebar - - run: mix deps.get - - run: mix compile - - run: mix test - - build_elixir_1_13_otp_25: - docker: - - image: hexpm/elixir:1.13.4-erlang-25.3.2-alpine-3.18.0 - steps: - - <<: *install_system_deps - - checkout - - <<: *install_hex_rebar - - run: mix deps.get - - run: mix compile - - run: mix test - - build_elixir_1_12_otp_24: - docker: - - image: hexpm/elixir:1.12.1-erlang-24.0.2-alpine-3.13.3 - steps: - - <<: *install_system_deps - - checkout - - <<: *install_hex_rebar - - run: mix deps.get - - run: mix compile - workflows: - build_test: + checks: jobs: - - build_elixir_1_17_otp_27 - - build_elixir_1_15_otp_26 - - build_elixir_1_14_otp_25 - - build_elixir_1_13_otp_25 - - build_elixir_1_12_otp_24 + - build-test: + name: << matrix.tag >> + matrix: + parameters: + tag: *tags diff --git a/mix.exs b/mix.exs index eba14e2..f7fa3cc 100644 --- a/mix.exs +++ b/mix.exs @@ -8,7 +8,7 @@ defmodule Jackalope.MixProject do [ app: :jackalope, version: @version, - elixir: "~> 1.12", + elixir: "~> 1.13", start_permanent: Mix.env() == :prod, deps: deps(), description: description(), diff --git a/mix.lock b/mix.lock index 307749f..c3597f0 100644 --- a/mix.lock +++ b/mix.lock @@ -5,13 +5,13 @@ "earmark_parser": {:hex, :earmark_parser, "1.4.41", "ab34711c9dc6212dda44fcd20ecb87ac3f3fce6f0ca2f28d4a00e4154f8cd599", [:mix], [], "hexpm", "a81a04c7e34b6617c2792e291b5a2e57ab316365c2644ddc553bb9ed863ebefa"}, "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"}, "ex_doc": {:hex, :ex_doc, "0.34.2", "13eedf3844ccdce25cfd837b99bea9ad92c4e511233199440488d217c92571e8", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "5ce5f16b41208a50106afed3de6a2ed34f4acfd65715b82a0b84b49d995f95c1"}, - "file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"}, + "file_system": {:hex, :file_system, "1.0.1", "79e8ceaddb0416f8b8cd02a0127bdbababe7bf4a23d2a395b983c1f8b3f73edd", [:mix], [], "hexpm", "4414d1f38863ddf9120720cd976fce5bdde8e91d8283353f0e31850fa89feb9e"}, "gen_state_machine": {:hex, :gen_state_machine, "3.0.0", "1e57f86a494e5c6b14137ebef26a7eb342b3b0070c7135f2d6768ed3f6b6cdff", [:mix], [], "hexpm", "0a59652574bebceb7309f6b749d2a41b45fdeda8dbb4da0791e355dd19f0ed15"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "makeup": {:hex, :makeup, "1.1.2", "9ba8837913bdf757787e71c1581c21f9d2455f4dd04cfca785c70bbfff1a76a3", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cce1566b81fbcbd21eca8ffe808f33b221f9eee2cbc7a1706fc3da9ff18e6cac"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"}, - "makeup_erlang": {:hex, :makeup_erlang, "1.0.0", "6f0eff9c9c489f26b69b61440bf1b238d95badae49adac77973cbacae87e3c2e", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "ea7a9307de9d1548d2a72d299058d1fd2339e3d398560a0e46c27dab4891e4d2"}, + "makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"}, "nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"}, - "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, + "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, "tortoise311": {:hex, :tortoise311, "0.12.0", "05c1f78da9aa3f7563ad66c71d2cb7904890797437078e86173d65d2a2d06f64", [:mix], [{:gen_state_machine, "~> 2.0 or ~> 3.0", [hex: :gen_state_machine, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b8bd5b1b603f75355d02c655e496a2cbb59c754e45014bcb86968899297197bb"}, }