diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..01bb08d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,82 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +permissions: + contents: read + +jobs: + test: + name: Elixir ${{ matrix.elixir }} / OTP ${{ matrix.otp }} + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - elixir: "1.17" + otp: "26" + - elixir: "1.18" + otp: "27" + - elixir: "1.19" + otp: "28" + + env: + MIX_ENV: test + + steps: + - uses: actions/checkout@v4 + + - uses: erlef/setup-beam@v1 + with: + elixir-version: ${{ matrix.elixir }} + otp-version: ${{ matrix.otp }} + + - uses: actions/cache@v4 + with: + path: | + deps + _build + key: ${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}-${{ hashFiles('mix.lock') }} + restore-keys: | + ${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}- + + - run: mix deps.get + + - run: mix compile --warnings-as-errors + + - run: mix test + + lint: + name: Lint + runs-on: ubuntu-latest + + env: + MIX_ENV: dev + + steps: + - uses: actions/checkout@v4 + + - uses: erlef/setup-beam@v1 + with: + elixir-version: "1.19" + otp-version: "28" + + - uses: actions/cache@v4 + with: + path: | + deps + _build + key: ${{ runner.os }}-mix-lint-1.19-28-${{ hashFiles('mix.lock') }} + restore-keys: | + ${{ runner.os }}-mix-lint-1.19-28- + + - run: mix deps.get + + - run: mix format --check-formatted + + - run: mix credo --strict diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ebc101..1003929 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- Relaxed Elixir version constraint from `~> 1.19` to `~> 1.17` to support projects on Elixir 1.17 and 1.18 + +### Added +- GitHub Actions CI with matrix testing across Elixir 1.17/OTP 26, 1.18/OTP 27, and 1.19/OTP 28 + ## [0.1.0] - 2025-11-29 ### Added diff --git a/devenv.yaml b/devenv.yaml index 6bf1e6c..b311010 100644 --- a/devenv.yaml +++ b/devenv.yaml @@ -1,3 +1,8 @@ inputs: + git-hooks: + url: github:cachix/git-hooks.nix + inputs: + nixpkgs: + follows: nixpkgs nixpkgs: url: github:cachix/devenv-nixpkgs/rolling diff --git a/mix.exs b/mix.exs index 8e65f59..d8df602 100644 --- a/mix.exs +++ b/mix.exs @@ -8,7 +8,7 @@ defmodule Langfuse.MixProject do [ app: :langfuse, version: @version, - elixir: "~> 1.19", + elixir: "~> 1.17", start_permanent: Mix.env() == :prod, deps: deps(), elixirc_paths: elixirc_paths(Mix.env()),