tests: Fix failing test and improve msvc setup #1104
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build RPCS3 | |
defaults: | |
run: | |
shell: bash | |
on: | |
push: | |
branches: | |
- master # Only trigger push event on 'master' branch | |
pull_request: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.ref }}-${{ github.event_name }} | |
cancel-in-progress: true | |
env: | |
BUILD_REPOSITORY_NAME: ${{ github.repository }} | |
BUILD_SOURCEBRANCHNAME: ${{ github.ref_name }} | |
BUILD_SOURCEVERSION: ${{ github.sha }} | |
BUILD_ARTIFACTSTAGINGDIRECTORY: ${{ github.workspace }}/artifacts/ | |
jobs: | |
Linux_Build: | |
# Only run push event on master branch of main repo, but run all PRs | |
if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master') | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-24.04 | |
docker_img: "rpcs3/rpcs3-ci-jammy:1.6" | |
build_sh: "/rpcs3/.ci/build-linux.sh" | |
compiler: clang | |
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f | |
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux" | |
- os: ubuntu-24.04 | |
docker_img: "rpcs3/rpcs3-ci-jammy:1.6" | |
build_sh: "/rpcs3/.ci/build-linux.sh" | |
compiler: gcc | |
- os: ubuntu-24.04-arm | |
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.6" | |
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" | |
compiler: clang | |
UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1 | |
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64" | |
name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} | |
runs-on: ${{ matrix.os }} | |
env: | |
CCACHE_DIR: ${{ github.workspace }}/ccache | |
CI_HAS_ARTIFACTS: true | |
DEPLOY_APPIMAGE: true | |
APPDIR: "/rpcs3/build/appdir" | |
ARTDIR: "/root/artifacts" | |
RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage.txt" | |
COMPILER: ${{ matrix.compiler }} | |
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }} | |
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }} | |
RUN_UNIT_TESTS: github.event_name == 'pull_request' && 'ON' || 'OFF' | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
- name: Setup Cache | |
uses: actions/cache@main | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-${{github.run_id}} | |
restore-keys: | | |
${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}- | |
- name: Docker setup and build | |
run: | | |
docker pull --quiet ${{ matrix.docker_img }} | |
docker run \ | |
-v $PWD:/rpcs3 \ | |
--env-file .ci/docker.env \ | |
-v ${{ env.CCACHE_DIR }}:/root/.ccache \ | |
-v ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}:${{ env.ARTDIR }} \ | |
${{ matrix.docker_img }} \ | |
${{ matrix.build_sh }} | |
- name: Upload artifacts | |
uses: actions/upload-artifact@main | |
with: | |
name: RPCS3 for Linux (${{ runner.arch }}, ${{ matrix.compiler }}) | |
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}/*.AppImage | |
compression-level: 0 | |
- name: Deploy master build to GitHub Releases | |
if: | | |
github.event_name != 'pull_request' && | |
github.repository == 'RPCS3/rpcs3' && | |
github.ref == 'refs/heads/master' && | |
matrix.compiler == 'clang' | |
env: | |
RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }} | |
run: | | |
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp) | |
COMM_COUNT=$(git rev-list --count HEAD) | |
COMM_HASH=$(git rev-parse --short=8 HEAD) | |
export AVVER="${COMM_TAG}-${COMM_COUNT}" | |
.ci/github-upload.sh | |
Windows_Build: | |
# Only run push event on master branch of main repo, but run all PRs | |
if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master') | |
name: RPCS3 Windows | |
runs-on: windows-2025 | |
env: | |
COMPILER: msvc | |
QT_VER_MAIN: '6' | |
QT_VER: '6.9.0' | |
QT_VER_MSVC: 'msvc2022' | |
QT_DATE: '202503301022' | |
LLVM_VER: '19.1.7' | |
VULKAN_VER: '1.3.268.0' | |
VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' | |
CCACHE_SHA: '1f39f3ad5aae3fe915e99ad1302633bc8f6718e58fa7c0de2b0ba7e080f0f08c' | |
CCACHE_BIN_DIR: 'C:\ccache_bin' | |
CCACHE_DIR: 'C:\ccache' | |
CCACHE_INODECACHE: 'true' | |
CCACHE_SLOPPINESS: 'time_macros' | |
DEPS_CACHE_DIR: ./dependency_cache | |
UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e | |
UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win" | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
- name: Setup NuGet | |
uses: nuget/setup-nuget@v2 | |
- name: Restore NuGet packages | |
run: nuget restore rpcs3.sln | |
- name: Setup env | |
shell: pwsh | |
run: | | |
echo "QTDIR=C:\Qt\${{ env.QT_VER }}\${{ env.QT_VER_MSVC }}_64" >> ${{ github.env }} | |
echo "VULKAN_SDK=C:\VulkanSDK\${{ env.VULKAN_VER }}" >> ${{ github.env }} | |
- name: Get Cache Keys | |
run: .ci/get_keys-windows.sh | |
- name: Setup Build Ccache | |
uses: actions/cache@main | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: "${{ runner.os }}-ccache-${{ env.COMPILER }}-${{github.run_id}}" | |
restore-keys: ${{ runner.os }}-ccache-${{ env.COMPILER }}- | |
- name: Setup Dependencies Cache | |
uses: actions/cache@main | |
with: | |
path: ${{ env.DEPS_CACHE_DIR }} | |
key: "${{ runner.os }}-${{ env.COMPILER }}-${{ env.QT_VER }}-${{ env.VULKAN_SDK_SHA }}-${{ env.CCACHE_SHA }}-${{ hashFiles('llvm.lock') }}-${{ hashFiles('glslang.lock') }}" | |
restore-keys: ${{ runner.os }}-${{ env.COMPILER }}- | |
- name: Download and unpack dependencies | |
run: .ci/setup-windows.sh | |
- name: Export Variables | |
run: | | |
while IFS='=' read -r key val; do | |
# Skip lines that are empty or start with '#' | |
[[ -z "$key" || "$key" =~ ^# ]] && continue | |
echo "$key=$val" >> "${{ github.env }}" | |
done < .ci/ci-vars.env | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@main | |
- name: Compile RPCS3 | |
shell: pwsh | |
run: msbuild rpcs3.sln /p:Configuration=Release /v:minimal /p:Platform=x64 /p:PreferredToolArchitecture=x64 /p:CLToolPath=${{ env.CCACHE_BIN_DIR }} /p:UseMultiToolTask=true /p:CustomAfterMicrosoftCommonTargets="${{ github.workspace }}\buildfiles\msvc\ci_only.targets" | |
- name: Run Unit Tests | |
if: github.event_name == 'pull_request' | |
shell: pwsh | |
run: build\lib\Release-x64\rpcs3_test.exe | |
- name: Pack up build artifacts | |
run: | | |
mkdir -p "${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}" | |
.ci/deploy-windows.sh | |
- name: Upload artifacts (7z) | |
uses: actions/upload-artifact@main | |
with: | |
name: RPCS3 for Windows (MSVC) | |
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }} | |
compression-level: 0 | |
if-no-files-found: error | |
- name: Deploy master build to GitHub Releases | |
if: | | |
github.event_name != 'pull_request' && | |
github.repository == 'RPCS3/rpcs3' && | |
github.ref == 'refs/heads/master' | |
env: | |
RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }} | |
run: .ci/github-upload.sh |