From a0b88267e4635dd3b1eb78653846931563cd257f Mon Sep 17 00:00:00 2001 From: Jason Garber Date: Mon, 5 Aug 2024 09:34:06 -0400 Subject: [PATCH] Break out macOS test into a separate job MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Turns out the underlying setup-beam workflow doesn't support macOS [1]. This change breaks out that OS into its own job whereby we ~~install Erlang and (some version of) Elixir using Homebrew~~ use ASDF to install the matrix'ed versions of Elixir and Erlang. I (originally) derived this solution from [2]. 🤞🏻 Let's see if it works! [1] https://github.com/erlef/setup-beam/issues/54 [2] https://github.com/rusterlium/rustler/blob/master/.github/workflows/main.yml Squashed WIP commits with the following commit messages: - 0a42b83 YAML 🥴 - 5b9a38a Fix runs-on values - 95f2fd8 Try using asdf reusable workflow to install Elixir and Erlang - 1785e90 Update macOS job name - 3277cef Install Hex - 5d1d30d Install dependencies in macOS jobs --- .github/workflows/ci.yml | 51 ++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e020d55..3101430 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,25 +7,46 @@ on: branches: ["main"] workflow_dispatch: +env: + MIX_ENV: test + jobs: - test: - name: Elixir ${{ matrix.pair.elixir }} OTP ${{ matrix.pair.otp }} (${{ matrix.os }}) - runs-on: ${{ matrix.os }} - env: - MIX_ENV: test + 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 format --check-formatted + - run: mix test + test_ubuntu: + name: Elixir ${{ matrix.pair.elixir }} OTP ${{ matrix.pair.otp }} (Ubuntu) + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - os: - - ubuntu-latest - - macos-latest - include: - - pair: - elixir: "1.13" - otp: "24.3.4.10" - - pair: - elixir: "1.17" - otp: "27.0.1" + pair: + - elixir: "1.13" + otp: "24.3.4.10" + - elixir: "1.17" + otp: "27.0.1" steps: - uses: actions/checkout@v4 - uses: CargoSense/setup-elixir-project@v1