name: PR Check on: pull_request: branches: [master, dev] jobs: lint-markdown: name: Markdown Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run markdownlint run: bash scripts/lint-markdown.sh format-check: name: Format Check 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: Check formatting run: dotnet format src/EchoHub.slnx --verify-no-changes --verbosity diagnostic test: name: Build & Test needs: [lint-markdown, format-check] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check for src/ changes id: changes env: BASE_REF: ${{ github.base_ref }} run: | git fetch origin "$BASE_REF" --depth=1 CHANGED=$(git diff --name-only "origin/$BASE_REF"...HEAD -- 'src/' | wc -l) if [ "$CHANGED" -gt 0 ]; then echo "src_changed=true" >> "$GITHUB_OUTPUT" else echo "src_changed=false" >> "$GITHUB_OUTPUT" fi - name: Setup .NET 10 if: steps.changes.outputs.src_changed == 'true' uses: actions/setup-dotnet@v4 with: dotnet-version: "10.0.x" - name: Cache NuGet packages if: steps.changes.outputs.src_changed == 'true' uses: actions/cache@v4 with: path: ~/.nuget/packages key: nuget-${{ runner.os }}-${{ hashFiles('src/**/*.csproj') }} restore-keys: nuget-${{ runner.os }}- - name: Restore dependencies if: steps.changes.outputs.src_changed == 'true' run: dotnet restore src/EchoHub.slnx - name: Build if: steps.changes.outputs.src_changed == 'true' run: dotnet build src/EchoHub.slnx --no-restore --configuration Release - name: Test if: steps.changes.outputs.src_changed == 'true' run: dotnet test src/EchoHub.slnx --no-build --configuration Release --verbosity normal - name: Skip notice if: steps.changes.outputs.src_changed == 'false' run: echo "No changes in src/ — skipping build and test"