mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			152 lines
		
	
	
	
		
			5.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
	
		
			5.6 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
 | 
						|
          - 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@v2
 | 
						|
        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@v2
 | 
						|
        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@v2
 | 
						|
        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@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 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
 |