Files
strongswan-ext/.github/workflows/windows.yml
T
Tobias Brunner 7faf93b701 github: Evict old entries from ccache
We don't want to build old versions using these caches, so we don't
need old entries (if header files change, there could be lots of
differences that increase the cache size unnecessarily).
2026-05-19 17:24:22 +02:00

144 lines
4.3 KiB
YAML

name: Windows
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
actions: write
env:
TESTS_REDUCED_KEYLENGTHS: yes
CCACHE_COMPRESS: true
CCACHE_MAXSIZE: 100M
# since the compilers are newly installed every time, we have to use this to
# avoid cache misses
CCACHE_COMPILERCHECK: content
EVICT_CCACHE_AGE: 1200s
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/restore@v5
id: cache-restore
with:
path: ~/.cache/ccache
key: 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 -sv
- if: github.event_name == 'push'
run: |
ccache --evict-older-than ${{ env.EVICT_CCACHE_AGE }}
ccache -sv
# delete old cache entry as we currently can't update it any other way
- env:
GH_TOKEN: ${{ github.token }}
if: github.event_name == 'push' && steps.cache-restore.outputs.cache-hit
continue-on-error: true
run: gh cache delete -r ${{ github.ref }} ${{ steps.cache-restore.outputs.cache-primary-key }}
- if: github.event_name == 'push'
uses: actions/cache/save@v5
with:
path: ~/.cache/ccache
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
- 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/restore@v5
id: cache-restore
with:
path: ~\AppData\Local\ccache
key: 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 -sv
- if: github.event_name == 'push'
run: |
ccache --evict-older-than ${{ env.EVICT_CCACHE_AGE }}
ccache -sv
# delete old cache entry as we currently can't update it any other way
- env:
GH_TOKEN: ${{ github.token }}
if: github.event_name == 'push' && steps.cache-restore.outputs.cache-hit
continue-on-error: true
run: gh cache delete -r ${{ github.ref }} ${{ steps.cache-restore.outputs.cache-primary-key }}
shell: bash
- if: github.event_name == 'push'
uses: actions/cache/save@v5
with:
path: ~\AppData\Local\ccache
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
- if: ${{ failure() }}
uses: actions/upload-artifact@v6
with:
name: Logs ${{ github.job }}
path: config.log
retention-days: 5