Skip to content

Commit 269ef88

Browse files
csharpfritzCopilot
andcommitted
docs: update Forge history and decision inbox for deployment pipeline fixes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent dcbfb2d commit 269ef88

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

.ai-team/agents/forge/history.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,21 @@ Planned M7: "Control Depth & Navigation Overhaul" — 51 work items targeting ~1
8989
Team update (2026-02-24): Substitution/Xml formally deferred in status.md and README decided by Beast
9090
Team update (2026-02-24): M8 scope excludes version bump to 1.0 and release decided by Jeffrey T. Fritz
9191
Team update (2026-02-24): PagerSettings shared sub-component created for GridView/FormView/DetailsView decided by Cyclops
92+
93+
### Summary: v0.14 Deployment Pipeline Fixes (2026-02-25)
94+
95+
Fixed three deployment pipeline issues on `fix/deployment-workflows` branch:
96+
97+
- **Docker version computation:** `.dockerignore` excludes `.git`, so nbgv can't run inside the Docker build. Solution: compute version with `nbgv get-version` in the workflow BEFORE Docker build, pass as `ARG VERSION` into the Dockerfile, use `-p:Version=$VERSION -p:InformationalVersion=$VERSION` in both `dotnet build` and `dotnet publish`. This pattern (compute outside, inject via build-arg) is the standard approach when `.git` isn't available inside the build context.
98+
- **Azure App Service webhook:** Added a `curl -sf -X POST` step gated on `AZURE_WEBAPP_WEBHOOK_URL` secret. Uses `|| echo "::warning::..."` fallback so the workflow doesn't fail if the webhook is unavailable. The webhook URL comes from Azure Portal → App Service → Deployment Center.
99+
- **nuget.org publishing:** Added a second push step after the existing GitHub Packages push, gated on `NUGET_API_KEY` secret. Both pushes use `--skip-duplicate` for idempotency.
100+
101+
**Key file paths:**
102+
- `.github/workflows/deploy-server-side.yml` — Docker build + push + Azure webhook
103+
- `.github/workflows/nuget.yml` — NuGet pack + push (GitHub Packages + nuget.org)
104+
- `samples/AfterBlazorServerSide/Dockerfile` — server-side demo container
105+
106+
**Patterns established:**
107+
- Secret-gated workflow steps use `if: ${{ secrets.SECRET_NAME != '' }}` for graceful fallback when secrets aren't configured
108+
- Docker images are tagged with version number (from nbgv), `latest`, and commit SHA
109+
- Version is computed once via nbgv and shared via GitHub Actions step outputs (`steps.nbgv.outputs.version`)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
### 2026-02-25: Deployment pipeline patterns for Docker versioning, Azure webhook, and NuGet publishing
2+
**By:** Forge
3+
**What:** Established three CI/CD patterns: (1) Compute version with nbgv outside Docker build and inject via build-arg, since .dockerignore excludes .git. (2) Gate optional deployment steps on repository secrets with `if: ${{ secrets.SECRET_NAME != '' }}` so workflows don't fail when secrets aren't configured. (3) Dual NuGet publishing — always push to GitHub Packages, conditionally push to nuget.org.
4+
**Why:** The .dockerignore excluding .git is a structural constraint that won't change (it's correct for build performance). Secret-gating ensures the workflows work in forks and PRs where secrets aren't available. Dual NuGet publishing gives us private (GitHub) and public (nuget.org) distribution without duplicating the pack step. These patterns should be followed for any future workflow additions.

0 commit comments

Comments
 (0)