From eef9059b6a07e496aa640ff80152851f2af50d83 Mon Sep 17 00:00:00 2001 From: HueByte Date: Thu, 19 Feb 2026 08:03:19 +0100 Subject: [PATCH] feat: Add documentation build and deployment workflow --- .github/workflows/ci-release.yml | 43 +---------------------------- .github/workflows/docs.yml | 46 ++++++++++++++++++++++++++++++++ docs/docfx.json | 31 ++++++++++++++------- src/Directory.Build.props | 2 ++ 4 files changed, 70 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml index 2474e71..8c9ae00 100644 --- a/.github/workflows/ci-release.yml +++ b/.github/workflows/ci-release.yml @@ -1,4 +1,4 @@ -name: CI / Release / Docs +name: CI / Release on: push: @@ -30,7 +30,6 @@ 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: @@ -44,14 +43,10 @@ jobs: if [ "$BEFORE" = "0000000000000000000000000000000000000000" ]; then # Initial push — treat everything as changed echo "src_changed=true" >> "$GITHUB_OUTPUT" - echo "docs_changed=true" >> "$GITHUB_OUTPUT" else 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: @@ -177,39 +172,3 @@ jobs: # EchoHub-Client-osx-arm64.zip # env: # GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - docs: - name: Build & Deploy Docs - needs: [lint-markdown, detect-changes] - if: needs.detect-changes.outputs.docs_changed == 'true' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup .NET 10 - uses: actions/setup-dotnet@v4 - 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 - - - name: Build solution - run: dotnet build src/EchoHub.slnx --configuration Release - - - name: Generate documentation - run: dotnet docfx docs/docfx.json - - - name: Deploy to web branch - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_site - publish_branch: web diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..c4a1bed --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,46 @@ +name: Docs + +on: + push: + branches: [master] + paths: + - 'docs/**' + - 'src/**' + +permissions: + contents: write + +jobs: + build-deploy: + name: Build & Deploy Docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET 10 + uses: actions/setup-dotnet@v4 + 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 + + - name: Build solution + run: dotnet build src/EchoHub.slnx --configuration Release + + - name: Generate documentation + run: dotnet docfx docs/docfx.json + + - name: Deploy to web branch + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./docs/_site + publish_branch: web diff --git a/docs/docfx.json b/docs/docfx.json index 679f709..9165422 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -3,18 +3,29 @@ { "src": [ { - "src": "../src", - "files": [ - "EchoHub.Core/EchoHub.Core.csproj", - "EchoHub.Server/EchoHub.Server.csproj", - "EchoHub.Client/EchoHub.Client.csproj" - ] + "src": "../src/EchoHub.Core/bin/Release/net10.0", + "files": ["EchoHub.Core.dll"] } ], - "dest": "api", - "properties": { - "TargetFramework": "net10.0" - } + "dest": "api/core" + }, + { + "src": [ + { + "src": "../src/EchoHub.Server/bin/Release/net10.0", + "files": ["EchoHub.Server.dll"] + } + ], + "dest": "api/server" + }, + { + "src": [ + { + "src": "../src/EchoHub.Client/bin/Release/net10.0", + "files": ["EchoHub.Client.dll"] + } + ], + "dest": "api/client" } ], "build": { diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 0362619..ee855e9 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,5 +1,7 @@ 0.1.0 + true + $(NoWarn);CS1591