build(deps): bump actions/checkout
Bumps the github-actions group with 1 update in the / directory: [actions/checkout](https://github.com/actions/checkout).
Updates `actions/checkout` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](8e8c483db8...de0fac2e45)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
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.5 KiB
YAML
240 lines
7.5 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
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@4f806de0a5a7294ffabaff804b38a9b435a73bda # v2.30.0
|
|
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@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
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@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
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@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
with:
|
|
name: build-${{ matrix.name }}
|
|
path: artifacts/
|
|
if-no-files-found: error
|