I've never found it particular helpful and usually just ignored it. One could argue that it could be improved to do what we want, but I personally don't want to write that in bash.
175 lines
5.3 KiB
YAML
175 lines
5.3 KiB
YAML
name: main
|
|
|
|
concurrency:
|
|
group: ${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
jobs:
|
|
build:
|
|
if: ${{ github.event_name != 'push' || github.ref != 'refs/heads/master'}}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include: [
|
|
{ msystem: MINGW64, runner: windows-2022 },
|
|
{ msystem: MINGW32, runner: windows-2022 },
|
|
{ msystem: UCRT64, runner: windows-2022 },
|
|
{ msystem: CLANG64, runner: windows-2022 },
|
|
{ msystem: CLANG32, runner: windows-2022 },
|
|
# { msystem: CLANGARM64, runner: ['Windows', 'ARM64', 'CI'] }
|
|
]
|
|
name: ${{ matrix.msystem }}
|
|
runs-on: ${{ matrix.runner }}
|
|
env:
|
|
MSYS: "winjitdebug"
|
|
steps:
|
|
- name: Get CPU Name
|
|
run : |
|
|
Get-CIMInstance -Class Win32_Processor | Select-Object -Property Name
|
|
|
|
- name: Setup JIT minidump
|
|
if: ${{ matrix.msystem != 'CLANGARM64' }}
|
|
run: |
|
|
Set-Location '${{ runner.temp }}'
|
|
Invoke-WebRequest -Uri 'https://download.sysinternals.com/files/Procdump.zip' -OutFile Procdump.zip
|
|
Expand-Archive Procdump.zip -DestinationPath .
|
|
New-Item -Path '_dumps' -ItemType Directory
|
|
.\procdump64.exe -accepteula -ma -i "${{ runner.temp }}/_dumps"
|
|
.\procdump.exe -accepteula -ma -i "${{ runner.temp }}/_dumps"
|
|
|
|
- name: Configure Pagefile
|
|
if: ${{ matrix.msystem != 'CLANGARM64' }}
|
|
uses: al-cheb/configure-pagefile-action@86589fd789a4de3e62ba628dda2cb10027b66d67
|
|
with:
|
|
minimum-size: 4GB
|
|
maximum-size: 16GB
|
|
disk-root: "C:"
|
|
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
path: temp
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
|
|
# to match the autobuild environment
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.10'
|
|
architecture: 'x64'
|
|
|
|
- uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.msystem }}
|
|
install: git python base-devel
|
|
update: true
|
|
release: ${{ runner.arch != 'ARM64' }}
|
|
location: 'D:\M'
|
|
|
|
- name: Add staging repo
|
|
shell: msys2 {0}
|
|
run: |
|
|
cp /etc/pacman.conf /etc/pacman.conf.bak
|
|
grep -qFx '[staging]' /etc/pacman.conf || sed -i '/^# \[staging\]/,/^$/ s|^# ||g' /etc/pacman.conf
|
|
|
|
- name: Update using staging
|
|
run: |
|
|
msys2 -c 'pacman --noconfirm -Suuy'
|
|
msys2 -c 'pacman --noconfirm -Suu'
|
|
|
|
- name: Move Checkout
|
|
run: |
|
|
If (Test-Path "C:\_") { rm -r -fo "C:\_" }
|
|
Copy-Item -Path ".\temp" -Destination "C:\_" -Recurse
|
|
|
|
- name: CI-Build
|
|
shell: msys2 {0}
|
|
id: build
|
|
run: |
|
|
cd /C/_
|
|
unset VCPKG_ROOT
|
|
pacman -S --needed --noconfirm ${MINGW_PACKAGE_PREFIX}-ntldd
|
|
MINGW_ARCH=${{ matrix.msystem }} ./.ci/ci-build.sh
|
|
|
|
- name: "Upload binaries"
|
|
if: ${{ !cancelled() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.msystem }}-packages
|
|
path: C:/_/artifacts/*.pkg.tar.*
|
|
if-no-files-found: ignore
|
|
|
|
- name: "Upload dumps"
|
|
if: ${{ !cancelled() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.msystem }}-dumps
|
|
path: ${{ runner.temp }}/_dumps/*.dmp
|
|
if-no-files-found: ignore
|
|
|
|
- name: "Clean up runner"
|
|
if: ${{ always() }}
|
|
continue-on-error: true
|
|
run: |
|
|
If (Test-Path "C:\_") { rm -r -fo "C:\_" }
|
|
msys2 -c 'mv -f /etc/pacman.conf.bak /etc/pacman.conf'
|
|
msys2 -c 'pacman --noconfirm -Suuy'
|
|
msys2 -c 'pacman --noconfirm -Suu'
|
|
|
|
check:
|
|
needs: [build]
|
|
runs-on: windows-2022
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/download-artifact@v3
|
|
continue-on-error: true
|
|
with:
|
|
name: UCRT64-packages
|
|
path: C:/_/artifacts
|
|
- name: Check whether to Run
|
|
id: check-run
|
|
run: |
|
|
python .ci/ci-check.py --whether-to-run
|
|
- uses: msys2/setup-msys2@v2
|
|
if: steps.check-run.outputs.run == 'true'
|
|
with:
|
|
msystem: UCRT64
|
|
install: mingw-w64-ucrt-x86_64-python-pip
|
|
release: false # since we aren't building anything
|
|
- name: Add staging repo
|
|
if: steps.check-run.outputs.run == 'true'
|
|
shell: msys2 {0}
|
|
run: |
|
|
sed -i '1s|^|[staging]\nServer = https://repo.msys2.org/staging/\nSigLevel = Never\n|' /etc/pacman.conf
|
|
- name: Update using staging
|
|
if: steps.check-run.outputs.run == 'true'
|
|
run: |
|
|
msys2 -c 'pacman --noconfirm -Suuy'
|
|
msys2 -c 'pacman --noconfirm -Suu'
|
|
- name: Run Checks
|
|
if: steps.check-run.outputs.run == 'true'
|
|
shell: msys2 {0}
|
|
run: |
|
|
python .ci/ci-check.py
|
|
|
|
package-grokker:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
|
|
steps:
|
|
- uses: actions/download-artifact@v3
|
|
id: artifacts
|
|
continue-on-error: true
|
|
with:
|
|
name: UCRT64-packages
|
|
path: artifacts
|
|
- name: Grok packages
|
|
uses: jeremyd2019/package-grokker/grok-artifacts@main
|
|
if: steps.artifacts.outcome == 'success'
|
|
with:
|
|
repo: ucrt64
|
|
path: artifacts
|