Apply suggestions from code review #582
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Windows | |
on: | |
push: | |
paths-ignore: | |
- 'doc/**' | |
- '**/man' | |
- '**.md' | |
- '**.rdoc' | |
- '**/.document' | |
pull_request: | |
paths-ignore: | |
- 'doc/**' | |
- '**/man' | |
- '**.md' | |
- '**.rdoc' | |
- '**/.document' | |
merge_group: | |
paths-ignore: | |
- 'doc/**' | |
- '**/man' | |
- '**.md' | |
- '**.rdoc' | |
- '**/.document' | |
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 | |
jobs: | |
make: | |
strategy: | |
matrix: | |
include: | |
- vs: 2019 | |
- vs: 2022 | |
fail-fast: false | |
runs-on: windows-${{ matrix.vs < 2022 && '2019' || matrix.vs }} | |
if: >- | |
${{!(false | |
|| contains(github.event.head_commit.message, '[DOC]') | |
|| contains(github.event.pull_request.title, '[DOC]') | |
|| contains(github.event.pull_request.labels.*.name, 'Documentation') | |
)}} | |
name: VisualStudio ${{ matrix.vs }} | |
env: | |
GITPULLOPTIONS: --no-tags origin ${{ github.ref }} | |
OS_VER: windows-${{ matrix.vs < 2022 && '2019' || matrix.vs }} | |
# FIXME: This is a workaround for the vcpkg's issue present as of openssl 3.1.1 | |
# where OpenSSL's default modules directory is incorrectly set to C:\vcpkg\packages\openssl_x64-windows\bin | |
# cf. https://github.com/ruby/openssl/pull/635#issuecomment-1596833720 | |
OPENSSL_MODULES: C:\vcpkg\installed\x64-windows\bin | |
steps: | |
- run: md build | |
working-directory: | |
- name: find tools | |
id: find-tools | |
run: | | |
::- find needed tools | |
set NEEDS= | |
for %%I in (patch.exe) do if "%%~$PATH:I" == "" ( | |
echo NEEDS=%NEEDS% %%I | |
) else ( | |
echo %%I: %%~$PATH:I | |
) | |
echo needs=%NEEDS% >> %GITHUB_OUTPUT% | |
- uses: msys2/setup-msys2@d40200dc2db4c351366b048a9565ad82919e1c24 # v2 | |
id: setup-msys2 | |
with: | |
update: true | |
install: >- | |
${{ steps.find-patch.outputs.needs }} | |
if: ${{ steps.find-patch.outputs.needs != '' }} | |
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
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@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: C:\vcpkg\installed | |
key: ${{ runner.os }}-vcpkg-installed-${{ env.OS_VER }}-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-vcpkg-installed-${{ env.OS_VER }}- | |
${{ runner.os }}-vcpkg-installed- | |
- name: Install libraries with vcpkg | |
run: | | |
vcpkg --triplet x64-windows install libffi libyaml openssl readline zlib | |
- name: Install libraries with scoop | |
run: | | |
iex "& {$(irm get.scoop.sh)} -RunAsAdmin" | |
Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH | |
shell: pwsh | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
with: | |
sparse-checkout-cone-mode: false | |
sparse-checkout: /.github | |
- uses: ./.github/actions/setup/directories | |
with: | |
srcdir: src | |
builddir: build | |
- 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% | |
nmake -f nul | |
set TMP=%USERPROFILE%\AppData\Local\Temp | |
set TEMP=%USERPROFILE%\AppData\Local\Temp | |
set MAKEFLAGS=l | |
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: compiler version | |
run: cl | |
- 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 | |
- run: nmake test | |
timeout-minutes: 5 | |
- run: nmake test-spec | |
timeout-minutes: 10 | |
- run: nmake test-all | |
env: | |
RUBY_TESTOPTS: -j${{ env.TEST_JOBS || 4 }} --job-status=normal | |
timeout-minutes: 60 | |
- uses: ./.github/actions/slack | |
with: | |
label: VS${{ matrix.vs }} / ${{ matrix.test_task || 'check' }} | |
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 |