Skip to content

Merge pull request #95 from lwalden/docs/s5-006-decisions-hygiene #215

Merge pull request #95 from lwalden/docs/s5-006-decisions-hygiene

Merge pull request #95 from lwalden/docs/s5-006-decisions-hygiene #215

Workflow file for this run

# ==============================================================================
# Continuous Integration Workflow
# ==============================================================================
# Runs on pull requests and pushes to main.
# ==============================================================================
name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# ============================================================================
# Detect which files changed to conditionally run jobs
# ============================================================================
changes:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
outputs:
backend: ${{ steps.filter.outputs.backend }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Check paths
uses: dorny/paths-filter@v4
id: filter
with:
filters: |
backend:
- 'src/**'
- 'tests/**'
- '*.sln'
- '**/*.csproj'
# ============================================================================
# Build and Test (.NET 8)
# ============================================================================
build:
needs: changes
if: needs.changes.outputs.backend == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup .NET 8
uses: actions/setup-dotnet@v5
with:
dotnet-version: '8.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore --configuration Release
- name: Test
run: dotnet test --no-build --configuration Release --verbosity normal --logger "trx;LogFileName=test-results.trx"
- name: Upload test results
uses: actions/upload-artifact@v7
if: always()
with:
name: test-results
path: '**/test-results.trx'
# ============================================================================
# Security Scanning
# ============================================================================
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Scan for secrets
uses: trufflesecurity/trufflehog@main
with:
extra_args: --only-verified
# ============================================================================
# All Checks Pass Gate (for branch protection rules)
# ============================================================================
all-checks:
if: always()
needs: [changes, build, security]
runs-on: ubuntu-latest
steps:
- name: Check all jobs passed
run: |
if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then
echo "One or more jobs failed"
exit 1
fi
echo "All checks passed!"