diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9783241 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,74 @@ +name: CI + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + workflow_dispatch: + +env: + MIX_ENV: test + +jobs: + test_macos: + name: Elixir ${{ matrix.pair.elixir }} OTP ${{ matrix.pair.otp }} (macOS) + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + pair: + - elixir: "1.13" + otp: "24.3.4.10" + - elixir: "1.17" + otp: "27.0.1" + steps: + - uses: actions/checkout@v4 + - name: Generate .tool-versions file + run: | + echo "elixir ${{ matrix.pair.elixir }}" >> .tool-versions + echo "erlang ${{ matrix.pair.otp }}" >> .tool-versions + cat .tool-versions + - uses: asdf-vm/actions/install@v3 + - name: Install Hex package manager + run: mix local.hex --force + - name: Install dependencies + run: mix deps.get + - run: mix test + test_ubuntu: + name: Elixir ${{ matrix.pair.elixir }} OTP ${{ matrix.pair.otp }} (Ubuntu) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - pair: + elixir: "1.13" + otp: "24.3.4.10" + - pair: + elixir: "1.17" + otp: "27.0.1" + lint: lint + steps: + - uses: actions/checkout@v4 + - uses: erlef/setup-beam@main + with: + otp-version: ${{ matrix.pair.otp }} + elixir-version: ${{ matrix.pair.elixir }} + version-type: strict + - uses: actions/cache@v4 + with: + path: deps + key: mix-deps-${{ hashFiles('**/mix.lock') }} + - run: mix deps.get --check-locked + - run: mix format --check-formatted + if: ${{ matrix.lint }} + - run: mix deps.unlock --check-unused + if: ${{ matrix.lint }} + - run: mix deps.compile + - run: mix compile --warnings-as-errors + if: ${{ matrix.lint }} + - run: mix test + if: ${{ ! matrix.lint }} + - run: mix test --warnings-as-errors + if: ${{ matrix.lint }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 199a9c3..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: CI -on: - pull_request: - push: - branches: - - main -jobs: - test: - runs-on: ubuntu-20.04 - env: - MIX_ENV: test - strategy: - fail-fast: false - matrix: - include: - - pair: - elixir: "1.11" - otp: 22 - - pair: - elixir: "1.14" - otp: 25 - lint: lint - steps: - - uses: actions/checkout@v3 - - - uses: erlef/setup-beam@v1 - with: - otp-version: ${{matrix.pair.otp}} - elixir-version: ${{matrix.pair.elixir}} - - - uses: actions/cache@v3 - with: - path: deps - key: ${{ runner.os }}-mix-${{matrix.pair.elixir}}-${{matrix.pair.otp}}-${{ hashFiles('**/mix.lock') }}-v1 - - - run: mix deps.get - - - run: mix format --check-formatted - if: ${{ matrix.lint }} - - - run: mix deps.unlock --check-unused - if: ${{ matrix.lint }} - - - run: mix deps.compile - - - run: mix compile --warnings-as-errors - if: ${{ matrix.lint }} - - - run: mix test - if: ${{ ! matrix.lint }} - - - run: mix test --warnings-as-errors - if: ${{ matrix.lint }} diff --git a/README.md b/README.md index 824bf57..b123a8c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DartSass -[![CI](https://github.com/CargoSense/dart_sass/actions/workflows/main.yml/badge.svg)](https://github.com/CargoSense/dart_sass/actions/workflows/main.yml) +[![CI](https://github.com/CargoSense/dart_sass/actions/workflows/ci.yml/badge.svg)](https://github.com/CargoSense/dart_sass/actions/workflows/ci.yml) Mix tasks for installing and invoking [sass](https://github.com/sass/dart-sass/).