These are quite a bit faster than on AppVeyor (with ccache about a fifth, without less than half - and they run concurrently). We only keep the AppVeyor builds for now to test against those old OpenSSL versions (1.1.1 and 1.0.2) for which there is still extended support available. Even simplified like that they still take longer than the builds on GA.
111 lines
3.0 KiB
YAML
111 lines
3.0 KiB
YAML
name: Windows
|
|
|
|
on: [push, pull_request]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
TESTS_REDUCED_KEYLENGTHS: yes
|
|
CCACHE_COMPRESS: true
|
|
CCACHE_MAXSIZE: 200M
|
|
# since the compilers are newly installed every time, we have to use this to
|
|
# avoid cache misses
|
|
CCACHE_COMPILERCHECK: content
|
|
MONOLITHIC: yes
|
|
|
|
jobs:
|
|
pre-check:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
should_skip: ${{ steps.skip-check.outputs.should_skip }}
|
|
steps:
|
|
- id: skip-check
|
|
uses: fkirc/skip-duplicate-actions@master
|
|
with:
|
|
concurrent_skipping: 'same_content_newer'
|
|
|
|
cross-compile:
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.should_skip != 'true' }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
test: [ win64, win32 ]
|
|
env:
|
|
CCACHE_BASEDIR: ${{ github.workspace }}
|
|
OS_NAME: linux
|
|
TEST: ${{ matrix.test }}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/cache@v5
|
|
with:
|
|
path: ~/.cache/ccache
|
|
key: ccache-${{ runner.os }}-${{ matrix.test }}-${{ github.sha }}
|
|
restore-keys: |
|
|
ccache-${{ runner.os }}-${{ matrix.test }}-
|
|
- run: |
|
|
sudo apt-get install -qq ccache
|
|
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
|
|
ccache -sz
|
|
- uses: ./.github/actions/default
|
|
- run: ccache -s
|
|
- if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: Logs ${{ github.job }}
|
|
path: config.log
|
|
retention-days: 5
|
|
|
|
native:
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.should_skip != 'true' }}
|
|
runs-on: windows-latest
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- msystem: mingw64
|
|
arch: x86_64
|
|
test: win64
|
|
- msystem: mingw32
|
|
arch: i686
|
|
test: win32
|
|
env:
|
|
OS_NAME: windows
|
|
TEST: ${{ matrix.test }}
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.msystem }}
|
|
- run: git config --global core.autocrlf input
|
|
shell: bash
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/cache@v5
|
|
with:
|
|
path: ~\AppData\Local\ccache
|
|
key: ccache-${{ runner.os }}-${{ matrix.test }}-${{ github.sha }}
|
|
restore-keys: |
|
|
ccache-${{ runner.os }}-${{ matrix.test }}-
|
|
- run: |
|
|
pacman --noconfirm -S --needed mingw-w64-${{ matrix.arch }}-ccache
|
|
ccache -sz
|
|
- run: ./scripts/test.sh deps
|
|
# GITHUB_ENV doesn't work, so set PATH here
|
|
- name: Build and run tests
|
|
run: |
|
|
PATH=/${{ matrix.msystem }}/lib/ccache/bin:$PATH
|
|
./scripts/test.sh
|
|
# sometimes streaming/threading tests hang completely
|
|
timeout-minutes: 30
|
|
- run: ccache -s
|
|
- if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: Logs ${{ github.job }}
|
|
path: config.log
|
|
retention-days: 5
|