mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Cache downloaded external libraries/gems, which are expected not changed so frequently. Also sometimes downloading from zlib returns the current time as the date header in unexpected format, and checksums mismatch at that time.
134 lines
4.8 KiB
YAML
134 lines
4.8 KiB
YAML
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
|
|
os: windows-2019
|
|
vcvars: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"'
|
|
# - vs: 2022
|
|
# os: windows-2022
|
|
# vcvars: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"'
|
|
fail-fast: false
|
|
runs-on: ${{ matrix.os }}
|
|
name: VisualStudio ${{ matrix.vs }}
|
|
env:
|
|
GITPULLOPTIONS: --no-tags origin ${{github.ref}}
|
|
VCVARS: ${{ matrix.vcvars }}
|
|
PATCH: C:\msys64\usr\bin\patch.exe
|
|
steps:
|
|
- run: md build
|
|
working-directory:
|
|
- uses: msys2/setup-msys2@v2
|
|
id: setup-msys2
|
|
with:
|
|
update: true
|
|
install: >-
|
|
patch
|
|
if: ${{ matrix.os != '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@v2
|
|
with:
|
|
path: C:\vcpkg\downloads
|
|
key: ${{ runner.os }}-vcpkg-download-${{ matrix.os }}-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-vcpkg-download-${{ matrix.os }}-
|
|
${{ runner.os }}-vcpkg-download-
|
|
- name: Install libraries with vcpkg
|
|
run: |
|
|
vcpkg --triplet x64-windows install readline zlib
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
|
|
key: ${{ runner.os }}-chocolatey-${{ matrix.os }}-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-chocolatey-${{ matrix.os }}-
|
|
${{ 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 openssl
|
|
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@v2
|
|
with:
|
|
path: src
|
|
- uses: actions/cache@v2
|
|
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 | 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: Configure
|
|
run: |
|
|
../src/win32/configure.bat --disable-install-doc --enable-bundled-libffi --with-opt-dir=C:/vcpkg/installed/x64-windows --with-openssl-dir="C:/Program Files/OpenSSL-Win64"
|
|
- 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
|