diff options
Diffstat (limited to '.github/workflows/mingw.yml')
-rw-r--r-- | .github/workflows/mingw.yml | 156 |
1 files changed, 80 insertions, 76 deletions
diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml index b5be355371..20a07ca240 100644 --- a/.github/workflows/mingw.yml +++ b/.github/workflows/mingw.yml @@ -3,17 +3,20 @@ on: push: paths-ignore: - 'doc/**' - - '**/man' + - '**/man/*' - '**.md' - '**.rdoc' - '**/.document' + - '.*.yml' pull_request: paths-ignore: - 'doc/**' - - '**/man' + - '**/man/*' - '**.md' - '**.rdoc' - '**/.document' + - '.*.yml' + merge_group: concurrency: group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }} @@ -28,49 +31,44 @@ permissions: 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}} + 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/" + - msystem: 'UCRT64' + baseruby: '3.0' + test_task: 'check' + test-all-opts: '--name=!/TestObjSpace#test_reachable_objects_during_iteration/' fail-fast: false - if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }} + + if: >- + ${{!(false + || contains(github.event.head_commit.message, '[DOC]') + || contains(github.event.head_commit.message, 'Document') + || contains(github.event.pull_request.title, '[DOC]') + || contains(github.event.pull_request.title, 'Document') + || contains(github.event.pull_request.labels.*.name, 'Document') + || (github.event_name == 'push' && github.actor == 'dependabot[bot]') + )}} + steps: - - run: mkdir build - working-directory: - - name: git config - run: | - git config --global core.autocrlf false - git config --global core.eol lf - git config --global advice.detachedHead 0 - git config --global init.defaultBranch garbage - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0 - with: - path: src - - uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 - with: - path: src/.downloaded-cache - key: downloaded-cache - name: Set up Ruby & MSYS2 - uses: ruby/setup-ruby@09c10210cc6e998d842ce8433cd9d245933cd797 # v1.133.0 + uses: ruby/setup-ruby@3783f195e29b74ae398d7caca108814bbafde90e # v1.180.1 with: - ruby-version: ${{ matrix.base_ruby }} - - name: set env - run: | - echo "GNUMAKEFLAGS=-j$((2 * NUMBER_OF_PROCESSORS))" >> $GITHUB_ENV + ruby-version: ${{ matrix.baseruby }} - name: where check run: | @@ -78,92 +76,98 @@ jobs: mv /c/Windows/System32/libcrypto-1_1-x64.dll /c/Windows/System32/libcrypto-1_1-x64.dll_ mv /c/Windows/System32/libssl-1_1-x64.dll /c/Windows/System32/libssl-1_1-x64.dll_ result=true - for e in gcc.exe ragel.exe make.exe bison.exe libcrypto-1_1-x64.dll libssl-1_1-x64.dll; do - echo '##['group']'$'\033[93m'$e$'\033[m' + for e in gcc.exe ragel.exe make.exe libcrypto-1_1-x64.dll libssl-1_1-x64.dll; do + echo ::group::$'\033[93m'$e$'\033[m' where $e || result=false - echo '##['endgroup']' + echo ::endgroup:: done $result + working-directory: - name: version check run: | # show version result=true - for e in gcc ragel make bison "openssl version"; do + for e in gcc ragel make "openssl version"; do case "$e" in *" "*) ;; *) e="$e --version";; esac - echo '##['group']'$'\033[93m'$e$'\033[m' + echo ::group::$'\033[93m'$e$'\033[m' $e || result=false - echo '##['endgroup']' + echo ::endgroup:: done $result + working-directory: - - name: autogen - run: | - ./autogen.sh - working-directory: src + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + sparse-checkout-cone-mode: false + sparse-checkout: /.github + + - uses: ./.github/actions/setup/directories + with: + srcdir: src + builddir: build + makeup: true + # Set fetch-depth: 10 so that Launchable can receive commits information. + fetch-depth: 10 - name: configure run: > ../src/configure --disable-install-doc --prefix=/. --build=$CHOST --host=$CHOST --target=$CHOST - - name: update - run: | - make incs - - - name: download gems - run: | - make update-gems - - name: make all timeout-minutes: 30 - run: | - make - - - run: make leaked-globals + run: make - name: make install - run: | - make DESTDIR=../install install-nodoc + run: make DESTDIR=../install install-nodoc + + - name: Set up Launchable + uses: ./.github/actions/launchable/setup + with: + os: windows-2022 + # If we support new test task, we need to change this test-opts. + test-opts: --retry --job-status=normal --show-skip --timeout-scale=1.5 + ${{ matrix.test-all-opts }} + launchable-token: ${{ secrets.LAUNCHABLE_TOKEN }} + builddir: build + srcdir: src + continue-on-error: true - name: test - timeout-minutes: 5 - run: | - make test - if: ${{matrix.test_task == 'check' || matrix.test_task == '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: | - # Actions uses UTF8, causes test failures, similar to normal OS setup - chcp.com 437 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 }} + ${{ env.TESTS }} BUNDLER_VERSION: - if: ${{matrix.test_task == 'check' || matrix.test_task == 'test-all' || StartsWith(matrix.test_task, 'test/')}} + 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' }} - if: ${{matrix.test_task == 'check' || matrix.test_task == 'test-spec' || StartsWith(matrix.test_task, 'spec/')}} + shell: cmd + if: ${{ matrix.test_task == 'check' || matrix.test_task == 'test-spec' || StartsWith(matrix.test_task, 'spec/') }} - - uses: ruby/action-slack@b6882ea6ef8f556f9f9af9ec1220d3f1ced74acf # v3.0.0 + - uses: ./src/.github/actions/slack with: - payload: | - { - "ci": "GitHub Actions", - "env": "${{ github.workflow }} ${{ matrix.msystem }} / ${{ matrix.test_task }}", - "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}", - "commit": "${{ github.sha }}", - "branch": "${{ github.ref_name }}" - } - env: + label: ${{ matrix.msystem }} / ${{ matrix.test_task }} SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot - if: ${{ failure() && github.event_name == 'push' }} + if: ${{ failure() }} defaults: run: |