mirror of
https://github.com/ppy/osu.git
synced 2025-02-24 04:22:54 +08:00
Another month, another freak android build failure. From what I can tell, this time the build is broken because the second- -to-last workaround applied to fix it, namely explicitly specifying the version of workloads to install, stopped working, presumably because github pushed a new .NET SDK version to runners, and microsoft didn't actually put up a set of workload packages whose version matches the .NET SDK version 1:1. Thankfully, the fix to the *last* android build breakage (which caused the workload installation to completely and irrecoverably fail), appears to be rolling out this week, and *also* fix that same second-last issue, so both workarounds of specifying the workload version and pinning the image to `windows-2019` appear to no longer be required. Note that the newest image version, 20250209.1.0, is still not fully rolled out yet, thus rather than just fix all builds, this will fix like 20% of builds until the newest image is fully rolled out. But I guess a 20% passing build is better than a 0% passing build, in a sense...?
140 lines
4.4 KiB
YAML
140 lines
4.4 KiB
YAML
on: [push, pull_request]
|
|
name: Continuous Integration
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
jobs:
|
|
inspect-code:
|
|
name: Code Quality
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install .NET 8.0.x
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: "8.0.x"
|
|
|
|
- name: Restore Tools
|
|
run: dotnet tool restore
|
|
|
|
- name: Restore Packages
|
|
run: dotnet restore osu.Desktop.slnf
|
|
|
|
- name: Restore inspectcode cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{ github.workspace }}/inspectcode
|
|
key: inspectcode-${{ hashFiles('.config/dotnet-tools.json', '.github/workflows/ci.yml', 'osu.sln*', 'osu*.slnf', '.editorconfig', '.globalconfig', 'CodeAnalysis/*', '**/*.csproj', '**/*.props') }}
|
|
|
|
- name: Dotnet code style
|
|
run: dotnet build -c Debug -warnaserror osu.Desktop.slnf -p:EnforceCodeStyleInBuild=true
|
|
|
|
- name: CodeFileSanity
|
|
run: |
|
|
# TODO: Add ignore filters and GitHub Workflow Command Reporting in CFS. That way we don't have to do this workaround.
|
|
# FIXME: Suppress warnings from templates project
|
|
exit_code=0
|
|
while read -r line; do
|
|
if [[ ! -z "$line" ]]; then
|
|
echo "::error::$line"
|
|
exit_code=1
|
|
fi
|
|
done <<< $(dotnet codefilesanity)
|
|
exit $exit_code
|
|
|
|
- name: InspectCode
|
|
run: dotnet jb inspectcode $(pwd)/osu.Desktop.slnf --no-build --output="inspectcodereport.xml" --caches-home="inspectcode" --verbosity=WARN
|
|
|
|
- name: NVika
|
|
run: dotnet nvika parsereport "${{github.workspace}}/inspectcodereport.xml" --treatwarningsaserrors
|
|
|
|
test:
|
|
name: Test
|
|
runs-on: ${{matrix.os.fullname}}
|
|
env:
|
|
OSU_EXECUTION_MODE: ${{matrix.threadingMode}}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- { prettyname: Windows, fullname: windows-latest }
|
|
# macOS runner performance has gotten unbearably slow so let's turn them off temporarily.
|
|
# - { prettyname: macOS, fullname: macos-latest }
|
|
- { prettyname: Linux, fullname: ubuntu-latest }
|
|
threadingMode: ['SingleThread', 'MultiThreaded']
|
|
timeout-minutes: 120
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install .NET 8.0.x
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: "8.0.x"
|
|
|
|
- name: Compile
|
|
run: dotnet build -c Debug -warnaserror osu.Desktop.slnf
|
|
|
|
- name: Test
|
|
run: dotnet test $pwd/**/*.Tests/bin/Debug/*/*.Tests.dll --logger "trx;LogFileName=TestResults-${{matrix.os.prettyname}}-${{matrix.threadingMode}}.trx" -- NUnit.ConsoleOut=0
|
|
shell: pwsh
|
|
|
|
# Attempt to upload results even if test fails.
|
|
# https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#always
|
|
- name: Upload Test Results
|
|
uses: actions/upload-artifact@v4
|
|
if: ${{ always() }}
|
|
with:
|
|
name: osu-test-results-${{matrix.os.prettyname}}-${{matrix.threadingMode}}
|
|
path: ${{github.workspace}}/TestResults/TestResults-${{matrix.os.prettyname}}-${{matrix.threadingMode}}.trx
|
|
|
|
build-only-android:
|
|
name: Build only (Android)
|
|
runs-on: windows-latest
|
|
timeout-minutes: 60
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup JDK 11
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: microsoft
|
|
java-version: 11
|
|
|
|
- name: Install .NET 8.0.x
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: "8.0.x"
|
|
|
|
- name: Install .NET workloads
|
|
run: dotnet workload install android
|
|
|
|
- name: Compile
|
|
run: dotnet build -c Debug osu.Android.slnf
|
|
|
|
build-only-ios:
|
|
name: Build only (iOS)
|
|
runs-on: macos-latest
|
|
timeout-minutes: 60
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install .NET 8.0.x
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: "8.0.x"
|
|
|
|
- name: Install .NET Workloads
|
|
run: dotnet workload install ios --from-rollback-file https://raw.githubusercontent.com/ppy/osu-framework/refs/heads/master/workloads.json
|
|
|
|
- name: Build
|
|
run: dotnet build -c Debug osu.iOS
|