feat: Enhance CI workflows to check for source and documentation changes, and cache NuGet packages

feat: Embed appsettings.json as a resource and update configuration loading logic
This commit is contained in:
HueByte
2026-02-19 07:01:22 +01:00
parent 1827f25944
commit 49240026b0
4 changed files with 69 additions and 15 deletions
+40 -10
View File
@@ -30,25 +30,28 @@ jobs:
runs-on: ubuntu-latest
outputs:
src_changed: ${{ steps.check.outputs.src_changed }}
docs_changed: ${{ steps.check.outputs.docs_changed }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for src/ changes
- name: Check for changes
id: check
env:
BEFORE: ${{ github.event.before }}
run: |
BEFORE=${{ github.event.before }}
if [ "$BEFORE" = "0000000000000000000000000000000000000000" ]; then
# Initial push — treat everything as changed
echo "src_changed=true" >> "$GITHUB_OUTPUT"
echo "docs_changed=true" >> "$GITHUB_OUTPUT"
else
CHANGED=$(git diff --name-only "$BEFORE" HEAD -- 'src/' | wc -l)
if [ "$CHANGED" -gt 0 ]; then
echo "src_changed=true" >> "$GITHUB_OUTPUT"
else
echo "src_changed=false" >> "$GITHUB_OUTPUT"
fi
SRC_CHANGED=$(git diff --name-only "$BEFORE" HEAD -- 'src/' | wc -l)
DOCS_CHANGED=$(git diff --name-only "$BEFORE" HEAD -- 'docs/' | wc -l)
[ "$SRC_CHANGED" -gt 0 ] && echo "src_changed=true" >> "$GITHUB_OUTPUT" || echo "src_changed=false" >> "$GITHUB_OUTPUT"
# Docs rebuild on docs/ OR src/ changes (docfx reads XML comments from assemblies)
[ "$DOCS_CHANGED" -gt 0 ] || [ "$SRC_CHANGED" -gt 0 ] && echo "docs_changed=true" >> "$GITHUB_OUTPUT" || echo "docs_changed=false" >> "$GITHUB_OUTPUT"
fi
test:
@@ -64,6 +67,13 @@ jobs:
with:
dotnet-version: '10.0.x'
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: nuget-${{ runner.os }}-${{ hashFiles('src/**/*.csproj') }}
restore-keys: nuget-${{ runner.os }}-
- name: Restore dependencies
run: dotnet restore src/EchoHub.slnx
@@ -118,6 +128,10 @@ jobs:
# if: steps.check_release.outputs.exists == 'false'
# run: dotnet publish src/EchoHub.Server/EchoHub.Server.csproj -c Release -r osx-x64 --self-contained true -o publish/server-osx-x64
#
# - name: Publish Server osx-arm64
# if: steps.check_release.outputs.exists == 'false'
# run: dotnet publish src/EchoHub.Server/EchoHub.Server.csproj -c Release -r osx-arm64 --self-contained true -o publish/server-osx-arm64
#
# - name: Publish Client win-x64
# if: steps.check_release.outputs.exists == 'false'
# run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r win-x64 --self-contained true -o publish/client-win-x64
@@ -130,6 +144,10 @@ jobs:
# if: steps.check_release.outputs.exists == 'false'
# run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r osx-x64 --self-contained true -o publish/client-osx-x64
#
# - name: Publish Client osx-arm64
# if: steps.check_release.outputs.exists == 'false'
# run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r osx-arm64 --self-contained true -o publish/client-osx-arm64
#
# - name: Zip artifacts
# if: steps.check_release.outputs.exists == 'false'
# run: |
@@ -137,9 +155,11 @@ jobs:
# zip -r ../EchoHub-Server-win-x64.zip server-win-x64/
# zip -r ../EchoHub-Server-linux-x64.zip server-linux-x64/
# zip -r ../EchoHub-Server-osx-x64.zip server-osx-x64/
# zip -r ../EchoHub-Server-osx-arm64.zip server-osx-arm64/
# zip -r ../EchoHub-Client-win-x64.zip client-win-x64/
# zip -r ../EchoHub-Client-linux-x64.zip client-linux-x64/
# zip -r ../EchoHub-Client-osx-x64.zip client-osx-x64/
# zip -r ../EchoHub-Client-osx-arm64.zip client-osx-arm64/
#
# - name: Create GitHub Release
# if: steps.check_release.outputs.exists == 'false'
@@ -150,15 +170,18 @@ jobs:
# EchoHub-Server-win-x64.zip \
# EchoHub-Server-linux-x64.zip \
# EchoHub-Server-osx-x64.zip \
# EchoHub-Server-osx-arm64.zip \
# EchoHub-Client-win-x64.zip \
# EchoHub-Client-linux-x64.zip \
# EchoHub-Client-osx-x64.zip
# EchoHub-Client-osx-x64.zip \
# EchoHub-Client-osx-arm64.zip
# env:
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
docs:
name: Build & Deploy Docs
needs: lint-markdown
needs: [lint-markdown, detect-changes]
if: needs.detect-changes.outputs.docs_changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -168,6 +191,13 @@ jobs:
with:
dotnet-version: '10.0.x'
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: nuget-${{ runner.os }}-${{ hashFiles('src/**/*.csproj') }}
restore-keys: nuget-${{ runner.os }}-
- name: Restore .NET tools
run: dotnet tool restore