1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-16 15:29:55 +00:00
openmw/.github/workflows/windows.yml
AnyOldName3 5e81e51d6f Upload symbols to symbol server if inputs.package is enabled
At the moment, we're not sending the regular artifacts to the artifacts bucket, but we might want to change that.
We're also not putting the symbols on the symbol server for non-packaged builds, and might want to change that, too.

The reason I didn't is that we don't have users running around using the GitHub Actions builds as dev builds.
2024-12-18 00:20:59 +00:00

230 lines
8.9 KiB
YAML

name: Reusable Windows workflow
on:
workflow_call:
inputs:
image:
description: MSVC image (2019/2022)
required: true
type: string
vcpkg-deps-tag:
description: Git tag of our deps
required: true
type: string
build-type:
default: RelWithDebInfo
type: string
package:
default: false
type: boolean
jobs:
Windows:
name: windows-${{ inputs.image }}
runs-on: windows-${{ inputs.image }}
env:
archive: FAILEDTODOWNLOAD
steps:
- name: Install NSIS
if: ${{ inputs.package }}
run: choco install nsis
- uses: actions/checkout@v4
- name: Create directories for dependencies
run: |
mkdir -p ${{ github.workspace }}/deps
mkdir -p ${{ github.workspace }}/deps/Qt
- name: Download prebuilt vcpkg packages
working-directory: ${{ github.workspace }}/deps
run: |
$MANIFEST = "vcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }}.txt"
curl --fail --retry 3 -L -o "$MANIFEST" "https://gitlab.com/OpenMW/openmw-deps/-/raw/main/windows/$MANIFEST"
$lines = Get-Content "$MANIFEST"
$URL = $lines[0]
$split = -split $lines[1]
$HASH = $split[0]
$FILE = $split[1]
curl --fail --retry 3 -L -o "$FILE" "$URL"
$filehash = Get-FileHash "$FILE" -Algorithm SHA512
if ( $filehash.hash -ne "$HASH" ) {
exit 1
}
echo "archive=$FILE" >> $env:GITHUB_ENV
- name: Extract archived prebuilt vcpkg packages
working-directory: ${{ github.workspace }}/deps
run: 7z x -y -ovcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }} $env:archive
- name: Cache Qt
id: qt-cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/deps/Qt/6.6.3/msvc2019_64
key: qt-cache-6.6.3-msvc2019_64-v1
- name: Download aqt
if: steps.qt-cache.outputs.cache-hit != 'true'
working-directory: ${{ github.workspace }}/deps/Qt
run: >
curl --fail --retry 3 -L
-o aqt_x64.exe
https://github.com/miurahr/aqtinstall/releases/download/v3.1.15/aqt_x64.exe
- name: Install Qt with aqt
if: steps.qt-cache.outputs.cache-hit != 'true'
working-directory: ${{ github.workspace }}/deps/Qt
run: .\aqt_x64.exe install-qt windows desktop 6.6.3 win64_msvc2019_64
- uses: ilammy/msvc-dev-cmd@v1
- uses: seanmiddleditch/gha-setup-ninja@master
- name: Configure OpenMW
run: >
cmake
-S .
-B ${{ github.workspace }}/build
-G Ninja
-D CMAKE_BUILD_TYPE=${{ inputs.build-type }}
-D CMAKE_TOOLCHAIN_FILE='${{ github.workspace }}/deps/vcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }}/scripts/buildsystems/vcpkg.cmake'
-D CMAKE_PREFIX_PATH='${{ github.workspace }}/deps/Qt/6.6.3/msvc2019_64'
${{ inputs.package && '-D CMAKE_CXX_FLAGS_RELEASE="/O2 /Ob2 /DNDEBUG /Zi"' || '' }}
${{ inputs.package && '-D "CMAKE_EXE_LINKER_FLAGS_RELEASE=/DEBUG /INCREMENTAL:NO"' || '' }}
-D LuaJit_INCLUDE_DIR='${{ github.workspace }}/deps/vcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }}/installed/x64-windows/include/luajit'
-D LuaJit_LIBRARY='${{ github.workspace }}/deps/vcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }}/installed/x64-windows/lib/lua51.lib'
-D BUILD_BENCHMARKS=${{ ! inputs.package }}
-D BUILD_COMPONENTS_TESTS=${{ ! inputs.package }}
-D BUILD_OPENMW_TESTS=${{ ! inputs.package }}
-D BUILD_OPENCS_TESTS=${{ ! inputs.package }}
-D OPENMW_USE_SYSTEM_SQLITE3=OFF
-D OPENMW_USE_SYSTEM_YAML_CPP=OFF
-D OPENMW_LTO_BUILD=ON
${{ inputs.package && '-D "VCREDIST64=$env:VCToolsRedistDir/vc_redist.x64.exe"' || '' }}
- name: Build OpenMW
run: cmake --build ${{ github.workspace }}/build
- name: Copy missing DLLs
run: |
cp ${{ github.workspace }}/deps/vcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }}/installed/x64-windows/bin/Release/MyGUIEngine.dll ${{ github.workspace }}/build
cp -Filter *.dll -Recurse ${{ github.workspace }}/deps/vcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }}/installed/x64-windows/bin/osgPlugins-3.6.5 ${{ github.workspace }}/build
cp ${{ github.workspace }}/deps/vcpkg-x64-${{ inputs.image }}-${{ inputs.vcpkg-deps-tag }}/installed/x64-windows/bin/*.dll ${{ github.workspace }}/build
- name: Copy Qt DLLs
working-directory: ${{ github.workspace }}/deps/Qt/6.6.3/msvc2019_64
run: |
cp bin/Qt6Core.dll ${{ github.workspace }}/build
cp bin/Qt6Gui.dll ${{ github.workspace }}/build
cp bin/Qt6Network.dll ${{ github.workspace }}/build
cp bin/Qt6OpenGL.dll ${{ github.workspace }}/build
cp bin/Qt6OpenGLWidgets.dll ${{ github.workspace }}/build
cp bin/Qt6Widgets.dll ${{ github.workspace }}/build
cp bin/Qt6Svg.dll ${{ github.workspace }}/build
mkdir ${{ github.workspace }}/build/styles
cp plugins/styles/qwindowsvistastyle.dll ${{ github.workspace }}/build/styles
mkdir ${{ github.workspace }}/build/platforms
cp plugins/platforms/qwindows.dll ${{ github.workspace }}/build/platforms
mkdir ${{ github.workspace }}/build/imageformats
cp plugins/imageformats/qsvg.dll ${{ github.workspace }}/build/imageformats
mkdir ${{ github.workspace }}/build/iconengines
cp plugins/iconengines/qsvgicon.dll ${{ github.workspace }}/build/iconengines
- name: Create symbol server directory structure
working-directory: ${{ github.workspace }}/build
run: |
${{ github.workspace }}\CI\Store-Symbols.ps1
Move-Item ${{ github.workspace }}\build\SymStore ${{ github.workspace }}
- name: Move pdb files
run: |
robocopy build pdb *.pdb /MOVE
if ($lastexitcode -lt 8) {
$global:LASTEXITCODE = $null
}
- name: Install OpenMW
if: ${{ ! inputs.package }}
run: cmake --install ${{ github.workspace }}/build --prefix ${{ github.workspace }}/install
- name: Package OpenMW
if: ${{ inputs.package }}
run: |
cpack --config "${{ github.workspace }}/build/CPackConfig.cmake" -B "${{ github.workspace }}/install"
rm -r -Force "${{ github.workspace }}/install/_CPack_Packages"
- name: Remove extra pdb files
if: ${{ ! inputs.package }}
shell: bash
run: |
rm -rf install/bin
rm -rf install/_deps
- name: Generate CI-ID.txt
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
job_url=$(gh run --repo ${{ github.repository }} view ${{ github.run_id }} --json jobs --jq '.jobs[] | select(.name == "windows-${{ inputs.image }}") | .url')
printf "Ref ${{ github.ref }}\nJob ${job_url}\nCommit ${{ github.sha }}\n" > install/CI-ID.txt
cp install/CI-ID.txt pdb/CI-ID.txt
cp install/CI-ID.txt SymStore/CI-ID.txt
- name: Store OpenMW archived pdb files
uses: actions/upload-artifact@v4
with:
name: openmw-windows-${{ inputs.image }}-pdb-${{ github.sha }}
path: ${{ github.workspace }}/pdb/*
- name: Store OpenMW build artifacts
uses: actions/upload-artifact@v4
with:
name: openmw-windows-${{ inputs.image }}-${{ github.sha }}
path: ${{ github.workspace }}/install/*
- name: Store symbol server artifacts
uses: actions/upload-artifact@v4
with:
name: openmw-windows-${{ inputs.image }}-sym-store-${{ github.sha }}
path: ${{ github.workspace }}/SymStore/*
- name: Upload to symbol server
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: eu-west-3
if: ${{ env.AWS_ACCESS_KEY_ID != '' && env.AWS_SECRET_ACCESS_KEY != '' && inputs.package }}
working-directory: ${{ github.workspace }}/SymStore
run: aws --endpoint-url https://rgw.ctrl-c.liu.se s3 sync --size-only --exclude * --include *.ex_ --include *.dl_ --include *.pd_ . s3://openmw-sym
- name: Add install directory to PATH
shell: bash
run: echo '${{ github.workspace }}/install' >> ${GITHUB_PATH}
- name: Run components tests
if: ${{ ! inputs.package }}
run: build/components-tests.exe
- name: Run OpenMW tests
if: ${{ ! inputs.package }}
run: build/openmw-tests.exe
- name: Run OpenMW-CS tests
if: ${{ ! inputs.package }}
run: build/openmw-cs-tests.exe
- name: Run detournavigator navmeshtilescache benchmark
if: ${{ ! inputs.package }}
run: build/openmw_detournavigator_navmeshtilescache_benchmark.exe
- name: Run settings access benchmark
if: ${{ ! inputs.package }}
run: build/openmw_settings_access_benchmark.exe
- name: Run esm refid benchmark
if: ${{ ! inputs.package }}
run: build/openmw_esm_refid_benchmark.exe