@@ -2,17 +2,68 @@ name: CI
22
33on :
44 pull_request :
5- types : [opened, reopened]
5+ types :
6+ - opened
67 workflow_dispatch :
78
89jobs :
9- dotnet-format :
10+ godot-project-check :
1011 runs-on : ubuntu-latest
12+ steps :
13+ - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
14+
15+ - name : Verify xllint
16+ shell : bash
17+ run : |
18+ command -v xmllint >/dev/null 2>&1 || {
19+ sudo apt-get update
20+ sudo apt-get install -y --no-install-recommends libxml2-utils
21+ }
22+
23+ - name : Verify project
24+ shell : bash
25+ env :
26+ CSPROJ_PATH : " Rhythia.csproj"
27+ VERSION_FILE : " .github/godot_version.txt"
28+ run : |
29+ if compgen -G "${CSPROJ_PATH}.old*" > /dev/null; then
30+ echo "::error file=${CSPROJ_PATH}.old::${CSPROJ_PATH}.old migration exists"
31+ exit 1
32+ fi
33+
34+ if [ ! -f "$CSPROJ_PATH" ]; then
35+ echo "::error::$CSPROJ_PATH not found"
36+ exit 1
37+ fi
38+
39+ if [ ! -f "$VERSION_FILE" ]; then
40+ echo "::error::$VERSION_FILE not found"
41+ exit 1
42+ fi
43+
44+ EXPECTED_VERSION=$(tr -d '[:space:]' < "$VERSION_FILE")
45+ EXPECTED_SDK="Godot.NET.Sdk/${EXPECTED_VERSION}"
1146
47+ ACTUAL_SDK=$(xmllint --xpath 'string(/Project/@Sdk)' "$CSPROJ_PATH")
48+
49+ if [ -z "$ACTUAL_SDK" ]; then
50+ echo "::error file=$CSPROJ_PATH::no <Project Sdk=\"...\"> attribute found"
51+ exit 1
52+ fi
53+
54+ if [ "$ACTUAL_SDK" != "$EXPECTED_SDK" ]; then
55+ echo "::error file=$CSPROJ_PATH::expected Sdk=\"$EXPECTED_SDK\" but found Sdk=\"$ACTUAL_SDK\""
56+ exit 1
57+ fi
58+
59+ echo "Godot SDK OK: $ACTUAL_SDK"
60+
61+ dotnet-format :
62+ runs-on : ubuntu-latest
1263 steps :
13- - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
64+ - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # Checkout v4
1465 - name : Setup
15- uses : actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9
66+ uses : actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # Dotnet 4.0.2
1667 with :
1768 dotnet-version : 10.0.x
1869
0 commit comments