diff options
author | Loïc Hoguin <[email protected]> | 2023-11-30 14:45:03 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2023-11-30 14:45:03 +0100 |
commit | b65a1e77508f6a855a60e6fd200f9f863f010e8d (patch) | |
tree | 754f39d8b7585367f9c88556972939877ea8c3c4 /.github/workflows/unix-ci.yaml | |
parent | 8bf2f7580419b91d482dcc03e9f9055805f6f725 (diff) | |
download | ci.erlang.mk-b65a1e77508f6a855a60e6fd200f9f863f010e8d.tar.gz ci.erlang.mk-b65a1e77508f6a855a60e6fd200f9f863f010e8d.tar.bz2 ci.erlang.mk-b65a1e77508f6a855a60e6fd200f9f863f010e8d.zip |
Add reusable workflows for ci.erlang.mk projects
Diffstat (limited to '.github/workflows/unix-ci.yaml')
-rw-r--r-- | .github/workflows/unix-ci.yaml | 102 |
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 |