name: Check Erlang.mk on: push: branches: - master pull_request: schedule: ## Every Monday at 4am. - cron: 0 4 * * 1 concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: check: strategy: fail-fast: false matrix: erlang: - '27' os: # - macos-latest - ubuntu-latest # - windows-latest suite: - core-app - core-apps - core-autopatch - core-compat # Trick GH runners into picking this slower job early. - ACME=1 c=core-deps - core-makedep - core-misc - core-plugins - core-query - core-upgrade - asciidoc - bootstrap - concuerror - cover - c-src - ct - dialyzer SET=1 - dialyzer SET=2 - dialyzer SET=3 - dialyzer SET=4 - edoc - erlydtl - escript - eunit - hex - proper - protobuffs # Trick GH runners into picking this slower job early. - ACME=1 c=relx - shell - sphinx - triq - xref extra: ['', 'LEGACY=1'] exclude: # We disable proper/triq tests until ubuntu-latest includes GNU Make 4.4 or later. - os: ubuntu-latest suite: proper - os: ubuntu-latest suite: triq # We disable Concuerror as it doesn't seem to compile on Windows. - os: windows-latest suite: concuerror runs-on: ${{ matrix.os }} 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 (Windows) if: matrix.os == 'windows-latest' uses: msys2/setup-msys2@v2 with: msystem: mingw64 release: false update: true install: >- git make mingw-w64-x86_64-gcc gnu-netcat diffutils - name: Run tests (Linux) if: matrix.os == 'ubuntu-latest' run: make check c=${{ matrix.suite }} -j4 -k ${{ matrix.extra }} - name: Run tests (Windows) if: matrix.os == 'windows-latest' shell: msys2 {0} run: PATH=$INSTALL_DIR_FOR_OTP/bin:$PATH make check c=${{ matrix.suite }} -j4 -k ${{ matrix.extra }} - name: Upload artifacts if: failure() uses: actions/upload-artifact@v4 with: name: ${{ matrix.os }} OTP-${{ matrix.erlang }} ${{ matrix.suite }} ${{ matrix.extra }} path: | test/test_*/ packages: strategy: fail-fast: false matrix: erlang: - '27' os: # - macos-latest - ubuntu-latest # - windows-latest extra: ['', 'LEGACY=1'] runs-on: ${{ matrix.os }} 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 (Windows) if: matrix.os == 'windows-latest' uses: msys2/setup-msys2@v2 with: msystem: mingw64 release: false update: true install: >- git make mingw-w64-x86_64-gcc gnu-netcat diffutils - name: Run tests (Linux) if: matrix.os == 'ubuntu-latest' run: make packages -k ${{ matrix.extra }} - name: Run tests (Windows) if: matrix.os == 'windows-latest' shell: msys2 {0} run: PATH=$INSTALL_DIR_FOR_OTP/bin:$PATH make packages -j4 -k ${{ matrix.extra }} - name: Upload artifacts if: failure() uses: actions/upload-artifact@v4 with: name: ${{ matrix.os }} OTP-${{ matrix.erlang }} packages ${{ matrix.extra }} path: | test/packages/