aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/unix-ci.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/unix-ci.yaml')
-rw-r--r--.github/workflows/unix-ci.yaml104
1 files changed, 104 insertions, 0 deletions
diff --git a/.github/workflows/unix-ci.yaml b/.github/workflows/unix-ci.yaml
new file mode 100644
index 0000000..6a4d92f
--- /dev/null
+++ b/.github/workflows/unix-ci.yaml
@@ -0,0 +1,104 @@
+name: Reusable Unix jobs
+
+## @todo Self-hosted runners for
+## - archlinux
+## - alpine
+## - debian
+## - freebsd
+
+on:
+ workflow_call:
+ inputs:
+ latest:
+ required: true
+ type: string
+ erlang:
+ required: true
+ type: string
+ os:
+ required: true
+ type: string
+
+env:
+ CI_ERLANG_MK: 1
+ AUTO_CI_MASTER: weekly
+ COWBOY_QUICER: ${{ vars.COWBOY_QUICER || 0 }}
+ GUN_QUICER: ${{ vars.GUN_QUICER || 0 }}
+
+jobs:
+
+ build-erlang:
+ name: Build Erlang ${{ inputs.erlang }} on ${{ inputs.os }}
+ runs-on: ${{ inputs.os }}
+ steps:
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Manage CI cache
+ id: cache
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/erlang/
+ key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.erlang }}
+
+ - name: Run ci-prepare
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: make -k ci-prepare CI_OTP=${{ inputs.erlang }}
+
+ test:
+ name: Run tests using ${{ inputs.erlang }} on ${{ inputs.os }}
+ needs: build-erlang
+ runs-on: ${{ inputs.os }}
+ steps:
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Restore CI cache
+ uses: actions/cache/restore@v4
+ with:
+ path: |
+ ~/erlang/
+ key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.erlang }}
+
+ - name: Run tests (macOS)
+ if: runner.os == 'macOS'
+ run: >
+ brew install coreutils make &&
+ gmake -k ci-${{ inputs.erlang }}
+
+ - name: Run tests (Unix)
+ if: runner.os != 'macOS'
+ run: make -k ci-${{ inputs.erlang }}
+
+ - name: Upload logs
+ uses: actions/upload-artifact@v4
+ if: always()
+ with:
+ name: Common Test logs (${{ inputs.erlang }} ${{ runner.os }})
+ path: |
+ logs/
+ !logs/**/log_private
+
+ dialyze:
+ name: Run Dialyzer using ${{ inputs.erlang }}
+ needs: build-erlang
+ runs-on: ${{ inputs.os }}
+ if: inputs.erlang == inputs.latest && inputs.os == 'ubuntu-latest'
+ continue-on-error: true
+ steps:
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Restore CI cache
+ uses: actions/cache/restore@v4
+ with:
+ path: |
+ ~/erlang/
+ key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.latest }}
+
+ - name: Run Dialyzer
+ run: make dialyze LATEST_ERLANG_OTP=1