Skip to content

Merge pull request #33 from peopleworks/feat/walkthrough-narration #2

Merge pull request #33 from peopleworks/feat/walkthrough-narration

Merge pull request #33 from peopleworks/feat/walkthrough-narration #2

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v7
- name: Set up .NET
uses: actions/setup-dotnet@v6
with:
dotnet-version: '10.0.x'
# Everything except the Blazor widget is built here.
#
# src/XafLogicExplainer.Blazor references DevExpress.ExpressApp.Blazor, which lives on the
# licensed DevExpress NuGet feed and cannot be restored on a public runner. Nothing else in
# the repository depends on it, so excluding it costs no coverage of the extraction engine.
#
# Building the CLI pulls in Core and CopilotSync transitively; the annotator is the only
# other leaf.
- name: Restore
run: |
dotnet restore src/XafLogicExplainer.Cli/XafLogicExplainer.Cli.csproj
dotnet restore src/XafLogicExplainer.DescriptionAnnotator/XafLogicExplainer.DescriptionAnnotator.csproj
dotnet restore tests/XafLogicExplainer.Tests/XafLogicExplainer.Tests.csproj
- name: Build
run: |
dotnet build src/XafLogicExplainer.Cli/XafLogicExplainer.Cli.csproj --no-restore -c Release
dotnet build src/XafLogicExplainer.DescriptionAnnotator/XafLogicExplainer.DescriptionAnnotator.csproj --no-restore -c Release
# The suite runs against synthetic XAF fixtures parsed as text, so it needs no DevExpress
# licence and no private feed -- the whole engine is verified on a public runner, for free.
- name: Test
run: dotnet test tests/XafLogicExplainer.Tests/XafLogicExplainer.Tests.csproj --no-restore -c Release
# TreatWarningsAsErrors is on under GITHUB_ACTIONS (see Directory.Build.props), so a warning
# already fails the steps above. This proves the tool actually runs on the built output.
- name: Smoke test the CLI
run: dotnet run --project src/XafLogicExplainer.Cli/XafLogicExplainer.Cli.csproj -c Release --no-build -- --help
container:
name: MCP server in a container
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
# MCP directories run automated safety and quality checks against a container, and a server
# that fails them is listed but never appears in search results. Building the image here
# means that is found on a push rather than by a directory rejecting the entry.
- name: Build the image
run: docker build -t xaflogic-mcp .
# Proves the container speaks MCP, not merely that it starts: initialize, tools/list, and one
# real tool call against the demo application baked into the image.
- name: Handshake
run: python3 .github/scripts/mcp-handshake.py docker run --rm -i xaflogic-mcp
pack:
name: Verify packaging
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up .NET
uses: actions/setup-dotnet@v6
with:
dotnet-version: '10.0.x'
# A tool that cannot be packed cannot be installed, and that breaks silently between
# releases. Catch it on every push instead of at publish time.
- name: Pack
run: dotnet pack src/XafLogicExplainer.Cli/XafLogicExplainer.Cli.csproj -c Release -o ./artifacts
- name: Upload packages
uses: actions/upload-artifact@v4
with:
name: nupkg
path: ./artifacts/*.nupkg
retention-days: 7