name: MinGW on: push: paths-ignore: - 'doc/**' - '**/man' - '**.md' - '**.rdoc' - '**/.document' - '.*.yml' - '.*.yml' pull_request: paths-ignore: - 'doc/**' - '**/man' - '**.md' - '**.rdoc' - '**/.document' - '.*.yml' - '.*.yml' merge_group: paths-ignore: - 'doc/**' - '**/man' - '**.md' - '**.rdoc' - '**/.document' - '.*.yml' - '.*.yml' concurrency: group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }} cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }} permissions: contents: read # Notes: # Actions console encoding causes issues, see test-all & test-spec steps # jobs: make: runs-on: windows-2022 name: ${{ github.workflow }} (${{ matrix.msystem }}) env: MSYSTEM: ${{ matrix.msystem }} MSYS2_ARCH: x86_64 CHOST: 'x86_64-w64-mingw32' CFLAGS: '-march=x86-64 -mtune=generic -O3 -pipe' CXXFLAGS: '-march=x86-64 -mtune=generic -O3 -pipe' CPPFLAGS: '-D_FORTIFY_SOURCE=2 -D__USE_MINGW_ANSI_STDIO=1 -DFD_SETSIZE=2048' LDFLAGS: '-pipe' GITPULLOPTIONS: --no-tags origin ${{ github.ref }} strategy: matrix: include: # To mitigate flakiness of MinGW CI, we test only one runtime that newer MSYS2 uses. - msystem: 'UCRT64' base_ruby: head test_task: 'check' test-all-opts: '--name=!/TestObjSpace#test_reachable_objects_during_iteration/' fail-fast: false if: >- ${{!(false || contains(github.event.head_commit.message, '[DOC]') || contains(github.event.pull_request.title, '[DOC]') || contains(github.event.pull_request.labels.*.name, 'Documentation') || (github.event_name == 'push' && github.actor == 'dependabot[bot]') )}} steps: - name: Set up Ruby & MSYS2 uses: ruby/setup-ruby@f41e084df884422b269f4c01c3748a9df4431a75 # v1.236.0 with: ruby-version: ${{ matrix.base_ruby }} - name: where check run: | # show where result=true for e in gcc.exe ragel.exe make.exe; do echo ::group::$'\033[93m'$e$'\033[m' where $e || result=false echo ::endgroup:: done $result working-directory: - name: version check run: | # show version result=true for e in gcc ragel make "openssl version"; do case "$e" in *" "*) ;; *) e="$e --version";; esac echo ::group::$'\033[93m'$e$'\033[m' $e || result=false echo ::endgroup:: done $result working-directory: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: sparse-checkout-cone-mode: false sparse-checkout: /.github - uses: ./.github/actions/setup/directories with: srcdir: src builddir: build makeup: true - name: configure run: > ../src/configure --disable-install-doc --prefix=/. --build=$CHOST --host=$CHOST --target=$CHOST - name: make all timeout-minutes: 30 run: make - name: make install run: make DESTDIR=../install install-nodoc - name: test timeout-minutes: 30 run: make test shell: cmd env: GNUMAKEFLAGS: '' RUBY_TESTOPTS: '-v --tty=no' if: ${{ matrix.test_task == 'check' || matrix.test_task == 'test' }} - name: test-all timeout-minutes: 45 shell: cmd run: | make ${{ StartsWith(matrix.test_task, 'test/') && matrix.test_task || 'test-all' }} env: RUBY_TESTOPTS: >- --retry --job-status=normal --show-skip --timeout-scale=1.5 ${{ matrix.test-all-opts }} BUNDLER_VERSION: if: ${{ matrix.test_task == 'check' || matrix.test_task == 'test-all' || StartsWith(matrix.test_task, 'test/') }} - name: test-spec timeout-minutes: 10 run: | make ${{ StartsWith(matrix.test_task, 'spec/') && matrix.test_task || 'test-spec' }} shell: cmd if: ${{ matrix.test_task == 'check' || matrix.test_task == 'test-spec' || StartsWith(matrix.test_task, 'spec/') }} - uses: ./src/.github/actions/slack with: label: ${{ matrix.msystem }} / ${{ matrix.test_task }} SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot if: ${{ failure() }} defaults: run: working-directory: build shell: sh