Commit Graph

715 Commits

Author SHA1 Message Date
Jordan Ritter 80ea96fefe feat: Switch preview captures from GIF to MP4 with GitHub Release storage 2026-04-10 13:30:24 -07:00
Jordan Ritter b41fc64e2e fix: showcase drift detection compares against showcase-affecting commits, not HEAD (#3758)
## Summary

The showcase image drift detection compared image tags against `main`
HEAD SHA, but deploys only trigger when `showcase/` or
`examples/integrations/` paths change. Any non-showcase commit to main
(package bumps, workflow changes, docs, etc.) made ALL images appear
stale, triggering unnecessary rebuild workflows and Slack alerts.

## Root Cause

```bash
# Before: always stale after non-showcase commits
MAIN_SHA=$(git ls-remote ... main | cut -f1)
```

## Fix

Query the GitHub API for the last commit that actually touched
showcase-related paths, then check image tags against those SHAs:

```bash
SHOWCASE_SHA=$(gh api "repos/.../commits?path=showcase&per_page=1" --jq '.[0].sha')
EXAMPLES_SHA=$(gh api "repos/.../commits?path=examples/integrations&per_page=1" --jq '.[0].sha')
# Image is up-to-date if it matches EITHER SHA
```

## Impact

- No more false-positive drift alerts flooding #oss-alerts
- No more unnecessary rebuild triggers for every non-showcase commit
- Drift detection now only fires when showcase code actually changed but
images weren't rebuilt

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-10 13:19:55 -07:00
Jordan Ritter aafcfccb35 fix: showcase drift detection compares against showcase-affecting commits, not HEAD
The drift check compared image tags against main HEAD SHA, but deploys
only trigger when showcase/ or examples/integrations/ paths change. Any
non-showcase commit to main made ALL images appear stale, triggering
unnecessary rebuild workflows and Slack alerts.

Fix: query the GitHub API for the last commit that touched each path
and check image tags against those SHAs instead.
2026-04-10 13:17:28 -07:00
Jordan Ritter 82aaaefbae fix: use npm ci instead of pnpm install for showcase drift detection tests 2026-04-10 11:30:34 -07:00
Jordan Ritter 5cc3e04033 fix: debounce image drift alerts — only alert when stale set changes, not every 15min 2026-04-10 11:15:37 -07:00
Jordan Ritter e5b323902e fix: disable LFS in showcase drift detection checkout (fixes LFS fetch failures) 2026-04-10 11:13:35 -07:00
Alem Tuzlak 1bae2fc899 Merge branch 'main' into chore/oxlint-new-rules 2026-04-10 19:43:20 +02:00
Jordan Ritter 49861ae3b4 ci: refactor showcase_deploy from 23 duplicate jobs to dynamic matrix
Replaced 23 identical build jobs with one parameterized matrix job.
1200 lines to ~250. Service config as JSON, matrix generated from
path-filter results. Shell special cases (LFS, build-args, custom
Dockerfile) handled via matrix properties and dedicated prep step.
2026-04-10 10:37:51 -07:00
Jordan Ritter d55870c499 ci: consolidate commitlint into static_quality, add auto-fix on PRs
Merged standalone commitlint into static_quality as 4th parallel job.
Upgraded all actions to v4, added concurrency group. Format job now
auto-fixes and commits back to same-repo PR branches. Commitlint
posts helpful PR comment with valid prefixes on failure.
2026-04-10 10:37:51 -07:00
Jordan Ritter 189e20424b ci: add concurrency groups to test workflows
Added cancel-in-progress concurrency to e2e_dojo, e2e_examples,
test_runtime-servers, and test_unit. Added pnpm cache to test_unit.
2026-04-10 10:37:51 -07:00
Jordan Ritter d3e0e2d8db ci: add path filters to publish-commit, upgrade actions and caching
publish-commit had no path/branch filters — fired on every push.
Restricted to packages/**, upgraded checkout to v4, added pnpm
cache and --frozen-lockfile to both publish workflows.
2026-04-10 10:37:50 -07:00
Jordan Ritter f5462915c3 ci: fix static_danger matrix bug, python-sdk concurrency and dep pin
- static_danger: removed undefined matrix.node-version, upgraded to
  v4, added concurrency and timeout
- python-sdk: added concurrency and timeout, pinned ag-ui-langgraph
  <0.0.32 (0.0.32 imports non-existent ImageInputContent from ag_ui.core)
2026-04-10 10:37:42 -07:00
Alem Tuzlak ff2093102c chore(lint): add new oxlint rules and auto-fix violations
Enable stricter oxlint rules for better code health:
- typescript/consistent-type-imports: enforce `import type` for type-only imports
- typescript/no-import-type-side-effects: prefer top-level type imports
- import/consistent-type-specifier-style: consistent type specifier placement
- typescript/no-unnecessary-type-assertion: bump to error
- react/self-closing-comp: enforce self-closing JSX components
- unicorn/prefer-optional-catch-binding: drop unused catch params
- eslint/no-useless-computed-key: simplify object keys
- unicorn/prefer-string-slice: prefer .slice() over .substring()
- unicorn/prefer-array-flat-map: prefer .flatMap() over .map().flat()

All existing violations auto-fixed via oxlint --fix.
2026-04-10 19:29:32 +02:00
Jordan Ritter 38d22f5b6f fix: skip drift check if main commit <20min old, fix literal newline in Slack message 2026-04-09 20:59:01 -07:00
Jordan Ritter 6f3b52f1ef fix: remove || true from E2E install, add DOCKER_CLI_EXPERIMENTAL for image drift 2026-04-09 20:02:44 -07:00
Jordan Ritter 1d725e04da fix: format shell-dojolike files and add binary check exclusion 2026-04-09 16:45:33 -07:00
Jordan Ritter ac698e03c2 feat: add Dockerfile and deploy pipeline for shell-dojolike 2026-04-09 16:43:01 -07:00
Jordan Ritter c4460d9610 feat: add image drift detection to showcase drift checks (#3732)
## Summary

Adds an image drift check to the 6-hourly drift detection workflow. For
each showcase service, compares the GHCR `:latest` image digest against
the image tagged with the current main HEAD SHA. If they don't match,
the service's image is stale (main has code that hasn't been
built/deployed).

Posts to #oss-alerts when stale images are detected:
```
📦 Image Drift Detected
⚠️ ms-agent-dotnet — GHCR image not built for current main
```

This catches the scenario where a merge to main changes showcase code
but the deploy workflow misses it due to timing/cancellation.
2026-04-09 16:09:02 -07:00
Jordan Ritter 3821e95b01 fix: guard redirect report to only run on schedule/dispatch (#3731)
Same fix as #3730 for the smoke monitor — push events trigger ghost runs
with no jobs. Stops the noisy GitHub notifications.
2026-04-09 16:06:54 -07:00
Jordan Ritter 5579cfd6aa feat: add image drift detection to showcase drift checks 2026-04-09 15:54:10 -07:00
Jordan Ritter 1622186728 revert: restore NPM_TOKEN auth in release workflow (changesets doesn't support OIDC) 2026-04-09 15:54:01 -07:00
Jordan Ritter 28ef0856fb ci: switch npm publish to OIDC trusted publishing (remove NPM_TOKEN) 2026-04-09 15:46:12 -07:00
Jordan Ritter 627009d3e1 fix(ci): remove empty with: block from showcase redirect-report workflow 2026-04-09 15:35:49 -07:00
Jordan Ritter 5ce8cd9a09 fix: guard redirect report to only run on schedule/dispatch 2026-04-09 15:30:21 -07:00
Jordan Ritter 93bca3d8ac fix: guard smoke monitor job to only run on schedule/dispatch, not push 2026-04-09 15:20:20 -07:00
Jordan Ritter 168297fbda feat: add Slack notifications for docs sync (auto-push and review PR) 2026-04-09 15:06:04 -07:00
Jordan Ritter 8ce19c5f6a fix: remove hardcoded pnpm version 9, use packageManager from package.json 2026-04-09 14:50:20 -07:00
Jordan Ritter a38a0747ab fix: add per-service smoke/health links to Slack alerts 2026-04-09 14:37:54 -07:00
Jordan Ritter 0e53a48c19 feat: add aimock proxy for showcase smoke checks 2026-04-09 13:53:58 -07:00
Tyler Slaton b3aa8ea18c Merge branch 'main' into claude/debug-github-actions-ehR2n 2026-04-09 13:22:39 -07:00
Jordan Ritter b97f03d111 fix(ci): use block scalar for jq in smoke-monitor workflow 2026-04-09 13:20:28 -07:00
Tyler Slaton 551f85db21 Merge branch 'main' into claude/debug-github-actions-ehR2n 2026-04-09 13:14:48 -07:00
Jordan Ritter 7eed375cfd fix(ci): use block scalar for jq command in showcase redirect workflow 2026-04-09 13:11:05 -07:00
Claude 27625a9afd fix(ci): write npm auth to correct config file for publish
The changesets/action@v1 writes auth to ~/.npmrc but
actions/setup-node sets NPM_CONFIG_USERCONFIG to a temp path,
causing pnpm to read a different .npmrc during publish. All packages
fail with E404 on PUT because the auth token isn't picked up.

This adds an explicit `npm config set` step that writes the literal
token to whichever file NPM_CONFIG_USERCONFIG points at.

https://claude.ai/code/session_01KnUcvcGEthP64SKk98HzJ6
2026-04-09 20:09:57 +00:00
Jordan Ritter a3a0cae762 fix: use toJSON for safe Slack payload escaping 2026-04-09 12:48:23 -07:00
Jordan Ritter edfc48585e fix: use GitHub API for blame context instead of deep clone (repo is 750MB) 2026-04-09 12:46:00 -07:00
Jordan Ritter 1fc8b00128 fix: use full clone for git log blame context on all triggers 2026-04-09 12:45:08 -07:00
Jordan Ritter 8194630f45 fix: move capture before teardown, fix fetch-depth, safe env injection 2026-04-09 12:43:50 -07:00
Jordan Ritter 78285f448a fix: remove duplicate GITHUB_OUTPUT redirect 2026-04-09 12:42:06 -07:00
Jordan Ritter 4c1b70ea7b feat: include blame context in failure alerts (PR author/commits or dep drift) 2026-04-09 12:37:04 -07:00
Jordan Ritter 9a377c7574 feat: include failure cause in Slack alerts and GitHub issues 2026-04-09 12:37:04 -07:00
Jordan Ritter 123a5d76f9 fix: switch Slack alerts to slackapi/slack-github-action, gate drift alerts to schedule-only 2026-04-09 12:24:34 -07:00
Jordan Ritter 74fc015dbf fix: remove GHCR login — public images should pull without auth 2026-04-09 09:18:52 -07:00
Jordan Ritter b8dc9ad843 fix: add packages:read permission for GHCR aimock image pull 2026-04-09 09:17:24 -07:00
Jordan Ritter ef55874072 fix: format files and add GHCR login to CI workflow 2026-04-09 09:16:05 -07:00
Jordan Ritter 7e7311bf21 ci: add workflow for starter smoke tests 2026-04-09 08:33:25 -07:00
Jordan Ritter 204dd29a97 fix: standardize health checks on /health port 8000 2026-04-08 21:22:35 -07:00
Jordan Ritter 6d05499ecd feat: add automated docs sync from main with transform pipeline 2026-04-08 19:59:31 -07:00
Jordan Ritter 31f046d0ac feat: add SEO redirect infrastructure with PostHog tracking 2026-04-08 19:59:30 -07:00
Jordan Ritter 5284614227 feat: add health monitoring with smoke endpoints, drift detection, and Slack alerts 2026-04-08 19:59:30 -07:00