osu/.github/workflows/ci.yml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

144 lines
4.6 KiB
YAML
Raw Normal View History

2021-06-15 12:59:18 +00:00
on: [push, pull_request]
name: Continuous Integration
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
2021-06-15 12:59:18 +00:00
permissions:
contents: read # to fetch code (actions/checkout)
2021-06-15 12:59:18 +00:00
jobs:
inspect-code:
name: Code Quality
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
2024-02-01 16:11:58 +00:00
- name: Install .NET 8.0.x
uses: actions/setup-dotnet@v3
with:
2024-02-01 16:11:58 +00:00
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@v3
with:
path: ${{ github.workspace }}/inspectcode
2022-06-17 08:55:58 +00:00
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
2023-03-27 15:07:01 +00:00
run: dotnet nvika parsereport "${{github.workspace}}/inspectcodereport.xml" --treatwarningsaserrors
2021-06-15 12:59:18 +00:00
test:
name: Test
2023-03-27 15:07:01 +00:00
runs-on: ${{matrix.os.fullname}}
2021-06-15 12:59:18 +00:00
env:
2023-03-27 15:07:01 +00:00
OSU_EXECUTION_MODE: ${{matrix.threadingMode}}
2021-06-15 12:59:18 +00:00
strategy:
2023-03-27 15:07:01 +00:00
fail-fast: false
matrix:
os:
- { prettyname: Windows, fullname: windows-latest }
- { prettyname: macOS, fullname: macos-latest }
- { prettyname: Linux, fullname: ubuntu-latest }
threadingMode: ['SingleThread', 'MultiThreaded']
timeout-minutes: 60
2021-06-15 12:59:18 +00:00
steps:
- name: Checkout
uses: actions/checkout@v3
2021-06-15 12:59:18 +00:00
2024-02-01 16:11:58 +00:00
- name: Install .NET 8.0.x
uses: actions/setup-dotnet@v3
2021-06-15 12:59:18 +00:00
with:
2024-02-01 16:11:58 +00:00
dotnet-version: "8.0.x"
2021-06-15 12:59:18 +00:00
- name: Compile
run: dotnet build -c Debug -warnaserror osu.Desktop.slnf
- name: Test
2023-03-27 15:07:01 +00:00
run: dotnet test $pwd/**/*.Tests/bin/Debug/*/*.Tests.dll --logger "trx;LogFileName=TestResults-${{matrix.os.prettyname}}-${{matrix.threadingMode}}.trx" -- NUnit.ConsoleOut=0
2021-06-15 12:59:18 +00:00
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@v3
2021-06-15 12:59:18 +00:00
if: ${{ always() }}
with:
2023-03-27 15:07:01 +00:00
name: osu-test-results-${{matrix.os.prettyname}}-${{matrix.threadingMode}}
path: ${{github.workspace}}/TestResults/TestResults-${{matrix.os.prettyname}}-${{matrix.threadingMode}}.trx
2021-06-15 12:59:18 +00:00
build-only-android:
name: Build only (Android)
runs-on: windows-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup JDK 11
uses: actions/setup-java@v3
with:
distribution: microsoft
java-version: 11
2024-02-01 16:11:58 +00:00
- name: Install .NET 8.0.x
uses: actions/setup-dotnet@v3
with:
2024-02-01 16:11:58 +00:00
dotnet-version: "8.0.x"
- name: Install .NET workloads
2022-12-19 07:39:03 +00:00
run: dotnet workload install maui-android
- name: Compile
run: dotnet build -c Debug osu.Android.slnf
build-only-ios:
name: Build only (iOS)
# `macos-13` is required, because the newest Microsoft.iOS.Sdk versions require Xcode 14.3.
# TODO: can be changed to `macos-latest` once `macos-13` becomes latest (currently in beta: https://github.com/actions/runner-images/tree/main#available-images)
runs-on: macos-13
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v3
2024-02-01 16:11:58 +00:00
- name: Install .NET 8.0.x
uses: actions/setup-dotnet@v3
with:
2024-02-01 16:11:58 +00:00
dotnet-version: "8.0.x"
- name: Install .NET Workloads
run: dotnet workload install maui-ios
2024-02-01 17:09:00 +00:00
- name: Select Xcode 15.2
run: sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer
- name: Build
run: dotnet build -c Debug osu.iOS