name: Elixir package CI on: push: branches: - main - develop pull_request: types: - opened - reopened - synchronize schedule: - cron: 0 0 * * 1-5 jobs: lint_git: runs-on: ubuntu-latest if: ${{ github.event_name != 'schedule' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: lintje/action@v0.11 lint_format: runs-on: ubuntu-latest steps: - name: Set up Erlang and Elixir uses: erlef/setup-beam@v1 with: otp-version: "28" elixir-version: "1.19" - name: Checkout code uses: actions/checkout@v4 - name: Check code formatting run: mix format --check-formatted lint_credo: runs-on: ubuntu-latest steps: - name: Set up Erlang and Elixir uses: erlef/setup-beam@v1 with: otp-version: "28" elixir-version: "1.19" - name: Checkout code uses: actions/checkout@v4 - name: Get dependencies run: mix deps.get - name: Analyze code with Credo run: mix credo --strict lint_compile: runs-on: ubuntu-latest steps: - name: Set up Erlang and Elixir uses: erlef/setup-beam@v1 with: otp-version: "28" elixir-version: "1.19" - name: Checkout code uses: actions/checkout@v4 - name: Get dependencies run: mix deps.get - name: Check for compilation errors run: mix compile --warnings-as-errors lint_dialyzer: runs-on: ubuntu-latest steps: - name: Set up Erlang and Elixir uses: erlef/setup-beam@v1 with: otp-version: "28" elixir-version: "1.19" - name: PLT cache uses: actions/cache@v4 id: plt_cache with: key: plt path: priv/plts - name: Checkout code uses: actions/checkout@v4 - name: Get dependencies run: mix deps.get - name: Compile run: mix compile - name: Analyze code with Dialyzer run: mix dialyzer --format github test_diagnose: runs-on: ubuntu-latest steps: - name: Set up Erlang and Elixir uses: erlef/setup-beam@v1 with: otp-version: "28" elixir-version: "1.19" - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: "3.3.3" - name: Checkout code uses: actions/checkout@v4 with: submodules: true - name: Get dependencies run: mix deps.get - name: Run tests run: LANGUAGE=elixir test/integration/diagnose/bin/test test_no_nif: runs-on: ubuntu-latest steps: - name: Set up Erlang and Elixir uses: erlef/setup-beam@v1 with: otp-version: "28" elixir-version: "1.19" - name: Checkout code uses: actions/checkout@v4 - name: Get dependencies run: mix deps.get - name: Run tests run: MIX_ENV=test_no_nif mix test test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: elixir: - "1.19.5" otp: - "28" - "27" - "26" include: - elixir: "main" otp: "28" - elixir: "latest" otp: "28" - elixir: "1.18" otp: "27" - elixir: "1.17" otp: "27" - elixir: "1.16" otp: "26" - elixir: "1.15" otp: "26" - elixir: "1.14" otp: "25" - elixir: "1.13" otp: "24" - elixir: "1.12" otp: "24" - elixir: "1.11" otp: "24" steps: - name: Set up Erlang and Elixir uses: erlef/setup-beam@v1 with: otp-version: ${{matrix.otp}} elixir-version: ${{matrix.elixir}} - name: Checkout code uses: actions/checkout@v4 - name: Get dependencies run: mix deps.get - name: Run tests run: mix test