diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1499668..1865d1d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,12 @@ -name: Build & Publish +name: Build & Test on: pull_request: push: branches: - "*" + branches-ignore: + - "main" # by default, permissions are read-only, read + write is required for git pushes permissions: @@ -80,12 +82,3 @@ jobs: if: matrix.check_formatted - run: mix test --include integration - - - name: Build & Publish - run: | - mix hex.build - mix hex.publish --yes - if: matrix.check_formatted - env: - MIX_ENV: dev - HEX_API_KEY: ${{ secrets.HEX_ORGANIZATION_WRITE_KEY }} diff --git a/.github/workflows/ci_main.yml b/.github/workflows/ci_main.yml new file mode 100644 index 0000000..cccc1eb --- /dev/null +++ b/.github/workflows/ci_main.yml @@ -0,0 +1,70 @@ +name: Build & Publish + +on: + pull_request: + push: + branches: + - "main" + +# by default, permissions are read-only, read + write is required for git pushes +permissions: + contents: write + +env: + MIX_ENV: test + +jobs: + test: + runs-on: "ubuntu-latest" + + name: Test Elixir ${{ matrix.elixir }}, OTP ${{ matrix.otp }} + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + elixir: ["1.16"] + otp: ["26"] + include: + - elixir: "1.16" + otp: "26" + check_formatted: true + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - uses: erlef/setup-beam@v1 + id: setup-elixir + with: + otp-version: ${{matrix.otp}} + elixir-version: ${{matrix.elixir}} + + - name: Restore Dependency Cache + uses: actions/cache@v3 + id: cache-deps + with: + path: | + deps + _build + key: | + mix-${{ runner.os }}-${{matrix.elixir}}-${{matrix.otp}}-${{ hashFiles('**/mix.lock') }} + restore-keys: | + mix-${{ runner.os }}-${{matrix.elixir}}-${{matrix.otp}}- + + - name: Install Mix Dependencies + if: steps.mix-cache.outputs.cache-hit != 'true' + run: | + mix local.rebar --force + mix local.hex --force + mix deps.get + - run: mix deps.compile --warnings-as-errors + if: steps.cache-deps.outputs.cache-hit != 'true' + + - name: Build & Publish + run: | + mix hex.build + mix hex.publish --yes + if: matrix.check_formatted + env: + MIX_ENV: dev + HEX_API_KEY: ${{ secrets.HEX_ORGANIZATION_WRITE_KEY }}