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.yaml102
1 files changed, 102 insertions, 0 deletions
diff --git a/.github/workflows/unix-ci.yaml b/.github/workflows/unix-ci.yaml
new file mode 100644
index 0000000..896685e
--- /dev/null
+++ b/.github/workflows/unix-ci.yaml
@@ -0,0 +1,102 @@
+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
+
+jobs:
+
+ build-erlang:
+ name: Build Erlang
+ runs-on: ${{ inputs.os }}
+ steps:
+
+ - name: Checkout repository
+ uses: actions/[email protected]
+
+ - name: Manage CI cache
+ id: cache
+ uses: actions/[email protected]
+ with:
+ path: |
+ ~/erlang/
+ ~/.kerl/
+ key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.erlang }}
+
+ - name: Run ci-prepare
+ if: steps.cache.outputs.cache-hit != 'true' || inputs.erlang == 'master'
+ run: make -k ci-prepare CI_OTP=${{ inputs.erlang }}
+
+ test:
+ name: Run tests
+ needs: build-erlang
+ runs-on: ${{ inputs.os }}
+ steps:
+
+ - name: Checkout repository
+ uses: actions/[email protected]
+
+ - name: Restore CI cache
+ uses: actions/cache/[email protected]
+ with:
+ path: |
+ ~/erlang/
+ ~/.kerl/
+ key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.erlang }}
+
+ - name: Install required software
+ if: runner.os == 'macOS'
+ run: brew install coreutils
+
+ - name: Run tests
+ run: make -k ci-${{ inputs.erlang }}
+
+ - name: Upload logs
+ uses: actions/[email protected]
+ if: always()
+ with:
+ name: Common Test logs (${{ inputs.erlang }} ${{ runner.os }})
+ path: |
+ logs/
+ !logs/**/log_private
+
+ dialyze:
+ name: Run Dialyzer
+ 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/[email protected]
+
+ - name: Restore CI cache
+ uses: actions/cache/[email protected]
+ with:
+ path: |
+ ~/erlang/
+ ~/.kerl/
+ key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.latest }}
+
+ - name: Run Dialyzer
+ run: make dialyze LATEST_ERLANG_OTP=1