Bumps the github-actions group with 3 updates in the / directory: [actions/upload-artifact](https://github.com/actions/upload-artifact), [actions/download-artifact](https://github.com/actions/download-artifact) and [actions/cache](https://github.com/actions/cache). Updates `actions/upload-artifact` from 5 to 6 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) Updates `actions/download-artifact` from 6 to 7 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v6...v7) Updates `actions/cache` from 4 to 5 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: actions/download-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
240 lines
7.2 KiB
YAML
240 lines
7.2 KiB
YAML
---
|
|
name: CI-Windows
|
|
permissions:
|
|
contents: read
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
release_commit:
|
|
required: true
|
|
type: string
|
|
release_version:
|
|
required: true
|
|
type: string
|
|
|
|
jobs:
|
|
build_windows:
|
|
name: ${{ matrix.name }}
|
|
runs-on: ${{ matrix.os }}
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: Windows-AMD64
|
|
os: windows-2022
|
|
arch: x86_64
|
|
msystem: ucrt64
|
|
toolchain: ucrt-x86_64
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Setup Dependencies Windows
|
|
# if a dependency needs to be pinned, see https://github.com/LizardByte/build-deps/pull/186
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.msystem }}
|
|
update: true
|
|
install: >-
|
|
wget
|
|
|
|
- name: Update Windows dependencies
|
|
env:
|
|
MSYSTEM: ${{ matrix.msystem }}
|
|
TOOLCHAIN: ${{ matrix.toolchain }}
|
|
shell: msys2 {0}
|
|
run: |
|
|
# variables
|
|
declare -A pinned_deps
|
|
|
|
# dependencies
|
|
dependencies=(
|
|
"git"
|
|
"mingw-w64-${TOOLCHAIN}-boost"
|
|
"mingw-w64-${TOOLCHAIN}-cmake"
|
|
"mingw-w64-${TOOLCHAIN}-cppwinrt"
|
|
"mingw-w64-${TOOLCHAIN}-curl-winssl"
|
|
"mingw-w64-${TOOLCHAIN}-gcc"
|
|
"mingw-w64-${TOOLCHAIN}-graphviz"
|
|
"mingw-w64-${TOOLCHAIN}-MinHook"
|
|
"mingw-w64-${TOOLCHAIN}-miniupnpc"
|
|
"mingw-w64-${TOOLCHAIN}-nlohmann-json"
|
|
"mingw-w64-${TOOLCHAIN}-nodejs"
|
|
"mingw-w64-${TOOLCHAIN}-nsis"
|
|
"mingw-w64-${TOOLCHAIN}-onevpl"
|
|
"mingw-w64-${TOOLCHAIN}-openssl"
|
|
"mingw-w64-${TOOLCHAIN}-opus"
|
|
"mingw-w64-${TOOLCHAIN}-toolchain"
|
|
)
|
|
|
|
# do not modify below this line
|
|
|
|
ignore_packages=()
|
|
tarballs=""
|
|
for pkg in "${!pinned_deps[@]}"; do
|
|
ignore_packages+=("${pkg}")
|
|
version="${pinned_deps[$pkg]}"
|
|
tarball="${pkg}-${version}-any.pkg.tar.zst"
|
|
|
|
# download working version
|
|
wget "https://repo.msys2.org/mingw/${MSYSTEM}/${tarball}"
|
|
|
|
tarballs="${tarballs} ${tarball}"
|
|
done
|
|
|
|
# Create the ignore string for pacman
|
|
ignore_list=$(IFS=,; echo "${ignore_packages[*]}")
|
|
|
|
# install pinned dependencies
|
|
if [ -n "${tarballs}" ]; then
|
|
pacman -U --noconfirm "${tarballs}"
|
|
fi
|
|
|
|
# Only add --ignore if we have packages to ignore
|
|
if [ -n "${ignore_list}" ]; then
|
|
pacman -Syu --noconfirm --ignore="${ignore_list}" "${dependencies[@]}"
|
|
else
|
|
pacman -Syu --noconfirm "${dependencies[@]}"
|
|
fi
|
|
|
|
- name: Install Doxygen
|
|
# GCC compiled doxygen has issues when running graphviz
|
|
env:
|
|
DOXYGEN_VERSION: "1.11.0"
|
|
shell: pwsh
|
|
run: |
|
|
# Set version variables
|
|
$doxy_ver = $env:DOXYGEN_VERSION
|
|
$_doxy_ver = $doxy_ver.Replace(".", "_")
|
|
|
|
# Download the Doxygen installer
|
|
Invoke-WebRequest -Uri `
|
|
"https://github.com/doxygen/doxygen/releases/download/Release_${_doxy_ver}/doxygen-${doxy_ver}-setup.exe" `
|
|
-OutFile "doxygen-setup.exe"
|
|
|
|
# Run the installer
|
|
Start-Process `
|
|
-FilePath .\doxygen-setup.exe `
|
|
-ArgumentList `
|
|
'/VERYSILENT' `
|
|
-Wait `
|
|
-NoNewWindow
|
|
|
|
# Clean up
|
|
Remove-Item -Path doxygen-setup.exe
|
|
|
|
- name: Setup python
|
|
id: setup-python
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.11'
|
|
|
|
- name: Python Path
|
|
id: python-path
|
|
shell: msys2 {0}
|
|
run: |
|
|
# replace backslashes with double backslashes
|
|
python_path=$(echo "${{ steps.setup-python.outputs.python-path }}" | sed 's/\\/\\\\/g')
|
|
|
|
# step output
|
|
echo "python-path=${python_path}"
|
|
echo "python-path=${python_path}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Build Windows
|
|
shell: msys2 {0}
|
|
env:
|
|
BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
BUILD_VERSION: ${{ inputs.release_version }}
|
|
COMMIT: ${{ inputs.release_commit }}
|
|
run: |
|
|
mkdir -p build
|
|
cmake \
|
|
-B build \
|
|
-G Ninja \
|
|
-S . \
|
|
-DBUILD_WERROR=ON \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DSUNSHINE_ASSETS_DIR=assets \
|
|
-DSUNSHINE_PUBLISHER_NAME="${GITHUB_REPOSITORY_OWNER}" \
|
|
-DSUNSHINE_PUBLISHER_WEBSITE="https://app.lizardbyte.dev" \
|
|
-DSUNSHINE_PUBLISHER_ISSUE_URL="https://app.lizardbyte.dev/support"
|
|
echo "::add-matcher::.github/matchers/gcc.json"
|
|
ninja -C build
|
|
echo "::remove-matcher owner=gcc::"
|
|
|
|
- name: Package Windows
|
|
shell: msys2 {0}
|
|
run: |
|
|
mkdir -p artifacts
|
|
cd build
|
|
|
|
# package
|
|
cpack -G NSIS
|
|
cpack -G ZIP
|
|
|
|
# move
|
|
mv ./cpack_artifacts/Sunshine.exe ../artifacts/Sunshine-${{ matrix.name }}-installer.exe
|
|
mv ./cpack_artifacts/Sunshine.zip ../artifacts/Sunshine-${{ matrix.name }}-portable.zip
|
|
|
|
- name: Run tests
|
|
id: test
|
|
shell: msys2 {0}
|
|
working-directory: build/tests
|
|
run: ./test_sunshine.exe --gtest_color=yes --gtest_output=xml:test_results.xml
|
|
|
|
- name: Generate gcov report
|
|
id: test_report
|
|
# any except canceled or skipped
|
|
if: >-
|
|
always() &&
|
|
(steps.test.outcome == 'success' || steps.test.outcome == 'failure')
|
|
shell: msys2 {0}
|
|
working-directory: build
|
|
run: |
|
|
${{ steps.python-path.outputs.python-path }} -m pip install gcovr
|
|
${{ steps.python-path.outputs.python-path }} -m gcovr . -r ../src \
|
|
--exclude-noncode-lines \
|
|
--exclude-throw-branches \
|
|
--exclude-unreachable-branches \
|
|
--verbose \
|
|
--xml-pretty \
|
|
-o coverage.xml
|
|
|
|
- name: Upload coverage artifact
|
|
if: >-
|
|
always() &&
|
|
(steps.test_report.outcome == 'success')
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: coverage-${{ matrix.name }}
|
|
path: |
|
|
build/coverage.xml
|
|
build/tests/test_results.xml
|
|
if-no-files-found: error
|
|
|
|
- name: Package Windows Debug Info
|
|
shell: pwsh
|
|
working-directory: build
|
|
run: |
|
|
# use .dbg file extension for binaries to avoid confusion with real packages
|
|
Get-ChildItem -File -Recurse | `
|
|
% { Rename-Item -Path $_.PSPath -NewName $_.Name.Replace(".exe",".dbg") }
|
|
|
|
# save the binaries with debug info
|
|
7z -r `
|
|
"-xr!CMakeFiles" `
|
|
"-xr!cpack_artifacts" `
|
|
a "../artifacts/Sunshine-${{ matrix.name }}-debuginfo.7z" "*.dbg"
|
|
|
|
- name: Upload Artifacts
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: build-${{ matrix.name }}
|
|
path: artifacts/
|
|
if-no-files-found: error
|