Repository navigation
ci: Adopt atelier-store's CI, release and lint setup - #140
Conversation
Brings IssueTracker onto the same hardened workflow baseline as atelier-store, adapted to this repo's projects: - ci.yml replaces test.yml and main-validation.yml: one build, a test matrix discovered from IsTestProject projects, coverage (60%), and a "Test Suite" gate job. Auth0/Mongo secrets are scoped to the test job. - Every action is pinned to a commit SHA; lint-actions.yml adds actionlint, zizmor and shellcheck. - Releases move to per-PR semver tags with release blog posts; pr-automerge.yml merges ready same-repo PRs. - Local hooks and scripts/gate.sh run the same lint, build and tests. - Builds use -warnaserror, with documented NoWarn entries for the bUnit TestContext migration and ASPIRE010. - Global.json becomes global.json so the SDK pin is honored on Linux, pinned to the 10.0.3xx band: SDK 10.0.4xx fails to compile the Razor pages. - One markdownlint-cli2 config replaces .markdownlint.json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #140 +/- ##
==========================================
+ Coverage 84.82% 85.13% +0.31%
==========================================
Files 77 77
Lines 1562 1561 -1
Branches 143 143
==========================================
+ Hits 1325 1329 +4
- Misses 180 189 +9
+ Partials 57 43 -14 |
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Release ordering, coverage gating, fork PR reporting, staged-file linting, and Markdown-rule conflicts remain unresolved.
Review effort: Balanced
Findings: 3
Open (6)
Test Suite does not wait for or enforce Coverage Analysis · New Fork pull requests fail when publishing with a read-only token · New Concurrent releases can assign versions out of merge order · New Markdownlint checks working-tree files instead of staged content · New Matrix tests rebuild projects instead of reusing build outputs · New Markdownlint MD041 conflicts with the repository's H2 heading policy · New
What changed in this PR
Adopts a hardened CI, release, linting, and local quality-gate baseline for IssueTracker.
Changes:
- Consolidates builds, tests, coverage, and reporting into
ci.yml. - Adds automated releases, release blogs, auto-merge, and backfill tooling.
- Pins Actions, standardizes linting, adds hooks, and fixes documentation formatting.
| File | Description |
|---|---|
tests/IssueTracker.UI.Tests.Unit/IssueTracker.UI.Tests.Unit.csproj |
Temporarily suppresses bUnit migration warnings. |
src/AppHost/AppHost.csproj |
Temporarily suppresses ASPIRE010. |
scripts/gate.sh |
Adds the local lint, build, and test gate. |
README.md |
Updates badges and documents hook setup. |
global.json |
Pins the .NET SDK patch band. |
docs/Running-Aspire-Locally.md |
Reworks heading hierarchy. |
docs/project-structure.md |
Corrects the SDK configuration filename. |
docs/Production-Readiness.md |
Reworks heading hierarchy. |
docs/index.md |
Adjusts last-updated formatting. |
docs/Health-Checks.md |
Reworks heading hierarchy. |
docs/Cache-Strategy.md |
Reworks heading hierarchy. |
docs/Aspire.md |
Reworks heading hierarchy. |
.yamllint.yml |
Adds consolidated YAML lint configuration. |
.yamllint |
Removes the legacy YAML lint configuration. |
.markdownlintignore |
Removes the legacy ignore file. |
.markdownlint.json |
Removes the legacy Markdown configuration. |
.markdownlint-cli2.jsonc |
Adds consolidated Markdown lint configuration. |
.gitignore |
Ignores local Claude and pytest artifacts. |
.github/workflows/test.yml |
Removes the former test workflow. |
.github/workflows/release.yml |
Adds per-PR semantic releases and blog PRs. |
.github/workflows/pr-automerge.yml |
Adds guarded same-repository PR auto-merge. |
.github/workflows/main-validation.yml |
Removes the superseded validation workflow. |
.github/workflows/lint-yaml.yml |
Pins actions and uses shared YAML configuration. |
.github/workflows/lint-markdown.yml |
Uses pinned markdownlint-cli2 automation. |
.github/workflows/lint-actions.yml |
Adds actionlint, zizmor, and shellcheck. |
.github/workflows/docs.yml |
Removes the explicit Pages workflow. |
.github/workflows/dependabot-auto-merge.yml |
Pins its action and updates formatting. |
.github/workflows/codeql-analysis.yml |
Adds Actions analysis and SHA pinning. |
.github/workflows/code-metrics.yml |
Hardens metrics and PR generation. |
.github/workflows/ci.yml |
Adds build, test discovery, matrix tests, and coverage. |
.github/workflows/backfill-blog-posts.yml |
Adds historical release-blog generation. |
.github/scripts/tests/test_release_post.py |
Adds release-post generator coverage. |
.github/scripts/tests/test_backfill_blog_posts.py |
Adds backfill generator coverage. |
.github/scripts/tests/conftest.py |
Configures Python test imports. |
.github/scripts/backfill_blog_posts.py |
Implements release-blog backfilling. |
.github/hooks/tests/pre-push.test.sh |
Tests pre-push gate behavior. |
.github/hooks/pre-push |
Enforces branch names and local gates. |
.github/hooks/pre-commit |
Adds staged Markdown linting. |
.github/hooks/post-checkout |
Maintains hook configuration and permissions. |
.github/dependabot.yml |
Adds .NET SDK updates. |
.github/agents/beast.agent.md |
Reformats and updates agent guidance. |
.copilot/mcp-config.json |
Removes the example MCP configuration. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.



Summary
Brings IssueTracker onto atelier-store's hardened workflow baseline, adapted to this repo.
CI
ci.ymlreplacestest.ymlandmain-validation.yml. It builds once, discovers test projects (IsTestProjectonly, soTestingSupport.Libraryis skipped), and runs them as a matrix. It also produces coverage (60% gate, as before) and ends with aTest Suitegate job.IssueTracker.PlugIns.Tests.Unitnow runs in CI for the first time (37 tests, passing).-warnaserror, with documentedNoWarnentries (CS0618/CS0067 until the bUnitTestContextmigration, and ASPIRE010).Security and lint
persist-credentials: false.lint-actions.ymlruns actionlint, zizmor and shellcheck. CodeQL adds theactionslanguage..markdownlint-cli2.jsoncreplaces.markdownlint.jsonand.markdownlintignore, and one.yamllint.ymlreplaces.yamllint. Six docs were fixed to pass it. The legacy Copilot guidance is excluded until the follow-up PR rewrites it..github/hooks(pre-commit Markdown lint, pre-push branch-name check plusscripts/gate.sh) runs the same checks locally. To set it up:git config core.hooksPath .github/hooks.Releases and automation
release.ymlcuts a semver tag per merged PR (semver:major/semver:minorlabels, patch by default) and opens a[skip-release]blog-post PR.release_post.pyno longer createsdocs/README.mdin repos that don't publish one.pr-automerge.ymlsquash-merges same-repo PRs once the checks pass, Copilot has reviewed and all threads are resolved.code-metrics.ymlkeeps its push/PR triggers (IssueTracker has no primary constructors), opens its PR only frommain, and marks it[skip-release].dotnet-sdkupdates and keeps the Radzen/MessagePack/Testcontainers rules.docs.yml(Pages buildsdocs/in legacy mode anyway),.copilot/mcp-config.json.SDK pin
Global.json→global.json: on Linux the SDK resolver only reads the lowercase name, so the pin was being ignored locally.rollForward: latestPatch. SDK 10.0.4xx fails to compile the Razor pages (251 RZ/CS errors), so that upgrade needs its own PR.Before / after merge
RELEASE_PR_PATsecret (needed so auto-merged PRs trigger releases and blog PRs don't need approval).ANTHROPIC_API_KEYis optional.main-rulesrequired checks fromCI build+Test SuitetoBuild Solution+Test Suite.v0.1.0tag so the new semver releases start there.Validation
dotnet build IssueTracker.slnx -c Release -warnaserror: 0 warnings, 0 errors (SDK 10.0.303)scripts/gate.shvia the pre-push hook: lint plus all test projects passFollow-ups
CLAUDE.mdand instructions rewritten for IssueTracker)TestContextmigration (removes CS0618/CS0067NoWarn)🤖 Generated with Claude Code