aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci.yaml')
-rw-r--r--.github/workflows/ci.yaml141
1 files changed, 141 insertions, 0 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000..b70f507
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,141 @@
+## @todo Describe.
+
+name: Check a ci.erlang.mk project
+
+on:
+ workflow_call:
+
+env:
+ CI_ERLANG_MK: 1
+ AUTO_CI_MASTER: weekly
+
+jobs:
+
+ prepare-unix:
+ name: Prepare Unix
+ runs-on: ubuntu-latest
+ outputs:
+ erlang: ${{ steps.versions.outputs.erlang }}
+ latest: ${{ steps.latest_version.outputs.latest }}
+ steps:
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Checkout ci.erlang.mk repository
+ uses: actions/checkout@v4
+ with:
+ repository: ninenines/ci.erlang.mk
+ path: deps/ci.erlang.mk
+
+ - name: Output Erlang/OTP versions
+ id: versions
+ run: |
+ {
+ echo "erlang<<EOF"
+ make ci-list | jq -Rn '[inputs]'
+ echo EOF
+ } >> "$GITHUB_OUTPUT"
+
+ - name: Output latest Erlang/OTP version
+ id: latest_version
+ run: |
+ {
+ echo "latest<<EOF"
+ make ci-list | grep -v rc | grep -v master | tail -n1
+ echo EOF
+ } >> "$GITHUB_OUTPUT"
+
+ check:
+ name: Unix
+ needs: prepare-unix
+ strategy:
+ fail-fast: false
+ matrix:
+ erlang: ${{ fromJson(needs.prepare-unix.outputs.erlang) }}
+ os: [ubuntu-latest, macos-latest]
+ uses: ./.github/workflows/unix-ci.yaml
+ with:
+ latest: ${{ needs.prepare-unix.outputs.latest }}
+ erlang: ${{ matrix.erlang }}
+ os: ${{ matrix.os }}
+
+ prepare-windows:
+ name: Prepare Windows
+ runs-on: windows-latest
+ outputs:
+ erlang: ${{ steps.versions.outputs.erlang }}
+ steps:
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Checkout ci.erlang.mk repository
+ uses: actions/checkout@v4
+ with:
+ repository: ninenines/ci.erlang.mk
+ path: deps/ci.erlang.mk
+
+ - name: Setup MSYS2
+ uses: msys2/setup-msys2@v2
+ with:
+ msystem: mingw64
+ update: true
+ install: >-
+ git
+ make
+ mingw-w64-x86_64-jq
+
+ - name: Output Erlang/OTP versions
+ id: versions
+ shell: msys2 {0}
+ run: |
+ {
+ echo "erlang<<EOF"
+ make ci-windows-list | jq -Rn '[inputs]'
+ echo EOF
+ } >> "$GITHUB_OUTPUT"
+
+ test-windows:
+ name: Windows
+ needs: prepare-windows
+ strategy:
+ fail-fast: false
+ matrix:
+ erlang: ${{ fromJson(needs.prepare-windows.outputs.erlang) }}
+ runs-on: windows-latest
+ env:
+ COWBOY_QUICER: 0
+ GUN_QUICER: 0
+ steps:
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Install Erlang/OTP
+ uses: erlef/setup-beam@v1
+ with:
+ otp-version: '${{ matrix.erlang }}'
+ version-type: loose
+
+ - name: Setup MSYS2
+ uses: msys2/setup-msys2@v2
+ with:
+ msystem: mingw64
+ update: true
+ install: >-
+ git
+ make
+
+ - name: Run tests
+ shell: msys2 {0}
+ run: PATH=$INSTALL_DIR_FOR_OTP/bin:$PATH make -k ci-windows-${{ matrix.erlang }}
+
+ - name: Upload logs
+ uses: actions/upload-artifact@v4
+ if: always()
+ with:
+ name: Common Test logs (${{ matrix.erlang }} ${{ runner.os }})
+ path: |
+ logs/
+ !logs/**/log_private