name: Windows on: push: paths-ignore: - 'doc/**' - '**.md' - '**.rdoc' pull_request: paths-ignore: - 'doc/**' - '**.md' - '**.rdoc' concurrency: group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }} cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }} jobs: make: strategy: matrix: include: - vs: 2019 - vs: 2022 fail-fast: false runs-on: windows-${{ matrix.vs < 2022 && '2019' || matrix.vs }} if: ${{ !startsWith(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }} name: VisualStudio ${{ matrix.vs }} env: GITPULLOPTIONS: --no-tags origin ${{github.ref}} PATCH: C:\msys64\usr\bin\patch.exe OS_VER: windows-${{ matrix.vs < 2022 && '2019' || matrix.vs }} steps: - run: md build working-directory: - uses: msys2/setup-msys2@v2 id: setup-msys2 with: update: true install: >- patch if: ${{ env.OS_VER != 'windows-2019' }} - name: patch path shell: msys2 {0} run: echo PATCH=$(cygpath -wa $(command -v patch)) >> $GITHUB_ENV if: ${{ steps.setup-msys2.outcome == 'success' }} - uses: actions/cache@v3 with: path: C:\vcpkg\downloads key: ${{ runner.os }}-vcpkg-download-${{ env.OS_VER }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-vcpkg-download-${{ env.OS_VER }}- ${{ runner.os }}-vcpkg-download- - uses: actions/cache@v3 with: path: C:\vcpkg\installed key: ${{ runner.os }}-vcpkg-installed-${{ matrix.os }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-vcpkg-installed-${{ matrix.os }}- ${{ runner.os }}-vcpkg-installed- - name: Install libraries with vcpkg run: | vcpkg --triplet x64-windows install libffi libyaml openssl readline zlib - uses: actions/cache@v3 with: path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey key: ${{ runner.os }}-chocolatey-${{ env.OS_VER }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-chocolatey-${{ env.OS_VER }}- ${{ runner.os }}-chocolatey- - name: Install libraries with chocolatey run: | # Using Choco-Install for retries, but it doesn't detect failures properly # if you pass multiple package names in a single command. Choco-Install -PackageName winflexbison3 shell: pwsh - 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@v3 with: path: src - uses: actions/cache@v3 with: path: src/.downloaded-cache key: downloaded-cache - name: setup env # %TEMP% is inconsistent with %TMP% and test-all expects they are consistent. # https://github.com/actions/virtual-environments/issues/712#issuecomment-613004302 run: | set VS=${{ matrix.vs }} set VCVARS=${{ matrix.vcvars }} if not "%VCVARS%" == "" goto :vcset set VCVARS="C:\Program Files (x86)\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvars64.bat" if not exist %VCVARS% set VCVARS="C:\Program Files\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvars64.bat" :vcset set | C:\msys64\usr\bin\sort > old.env call %VCVARS% set TMP=%USERPROFILE%\AppData\Local\Temp set TEMP=%USERPROFILE%\AppData\Local\Temp set /a TEST_JOBS=(15 * %NUMBER_OF_PROCESSORS% / 10) > nul set | C:\msys64\usr\bin\sort > new.env C:\msys64\usr\bin\comm -13 old.env new.env >> %GITHUB_ENV% del *.env - name: link libraries run: | for %%I in (C:\vcpkg\installed\x64-windows\bin\*.dll) do ( if not %%~nI == readline mklink %%~nxI %%I ) for %%I in (libcrypto-1_1-x64 libssl-1_1-x64) do ( ren c:\Windows\System32\%%I.dll %%I.dll_ ) - name: Configure run: >- ../src/win32/configure.bat --disable-install-doc --with-opt-dir=C:/vcpkg/installed/x64-windows - run: nmake incs - run: nmake extract-extlibs - run: nmake env: YACC: win_bison - run: nmake test timeout-minutes: 5 - run: nmake test-all env: RUBY_TESTOPTS: -j${{env.TEST_JOBS}} --job-status=normal timeout-minutes: 60 continue-on-error: ${{ matrix.continue-on-error || false }} - run: nmake test-spec timeout-minutes: 10 continue-on-error: ${{ matrix.continue-on-error || false }} - uses: k0kubun/action-slack@v2.0.0 with: payload: | { "ci": "GitHub Actions", "env": "VS${{ matrix.vs }} / ${{ matrix.test_task || 'check' }}", "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}", "commit": "${{ github.sha }}", "branch": "${{ github.ref }}".split('/').reverse()[0] } env: SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot if: ${{ failure() && github.event_name == 'push' }} defaults: run: working-directory: build shell: cmd