Commit Graph

40 Commits

Author SHA1 Message Date
Kpa-clawbot
7bd14dce6a fix: run go tool cover from module directory, not repo root
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 10:21:59 -07:00
Kpa-clawbot
7807063967 ci: add Go test coverage reporting to CI pipeline
- Go server and ingestor tests now run with -coverprofile
- Coverage percentages parsed and printed in CI output
- Badge JSON files generated (.badges/go-server-coverage.json,
  .badges/go-ingestor-coverage.json) matching existing format
- Badges uploaded as artifacts from go-build job, downloaded
  in test job, and published alongside existing Node.js badges
- Coverage summary table added to GitHub Step Summary

fixes #141

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 10:14:14 -07:00
Kpa-clawbot
0d9b535451 feat: add version and git commit to /api/stats and /api/health
Node.js: reads version from package.json, commit from .git-commit file
or git rev-parse --short HEAD at runtime, with unknown fallback.

Go: uses -ldflags build-time variables (Version, Commit) with fallback
to .git-commit file and git command at runtime.

Dockerfile: copies .git-commit if present (CI bakes it before build).
Dockerfile.go: passes APP_VERSION and GIT_COMMIT as build args to ldflags.
deploy.yml: writes GITHUB_SHA to .git-commit before docker build steps.
docker-compose.yml: passes build args to Go staging build.

Tests updated to verify version and commit fields in both endpoints.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 09:39:49 -07:00
Kpa-clawbot
ab879b78fe fix: remove continue-on-error from Go staging deploy — broken deploys should fail CI
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 09:37:14 -07:00
Kpa-clawbot
013a67481f ci: add Go staging auto-deploy to CI pipeline
Build and deploy the Go staging container (port 82) after Node staging
is healthy. Uses continue-on-error so Go staging failures don't block
the Node.js deploy. Health-checks the Go container for up to 60s and
verifies /api/stats returns the engine field.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 09:34:16 -07:00
Kpa-clawbot
3cd6cb98fa ci: add Go build/test job, re-enable frontend coverage, clean up temp files
- Add go-build job to deploy.yml that builds and tests cmd/server and cmd/ingestor
- Go job gates the Node.js test job and deploy job
- Re-enable frontend coverage detection (was hardcoded to false)
- Remove stale temp files from repo root (recover-delta.sh, merge.sh, replacements.txt, reps.txt)
- Add temp scripts and Go build artifacts to .gitignore

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 08:47:10 -07:00
Kpa-clawbot
a5d7507362 fix: kill orphaned node process on port 13581 before E2E tests
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 23:51:55 -07:00
Kpa-clawbot
36b0dd5778 fix: yaml indentation in deploy.yml L210
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 23:48:42 -07:00
Kpa-clawbot
cb42de722f fix: remove stale staging container before compose up
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 23:47:16 -07:00
Kpa-clawbot
b76891a871 ci: 5min staging health timeout, remove continue-on-error
The 185MB problematic DB needs time to load. Give staging up to 300s
to become healthy so we can find out if it starts at all vs hangs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 22:35:41 -07:00
Kpa-clawbot
08ed88ad80 ci: skip frontend coverage while optimizing the script
Frontend coverage collection has 169 blind sleeps totaling 104s,
making CI take 13+ minutes. Disabled until the script is optimized.
Backend tests + E2E still run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 22:34:42 -07:00
Kpa-clawbot
6c76c5b117 ci: staging deploy non-blocking while we stabilize
Staging deploy with the problematic 185MB DB takes longer than the 30s
health check timeout. Mark staging deploy as continue-on-error so CI
stays green while we sort out the staging configuration.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 22:33:37 -07:00
Kpa-clawbot
7f171707d9 fix: ensure staging Caddyfile and config.json exist before compose up
The staging container bind-mounts Caddyfile and config.json from the
data dir. If they don't exist, docker compose fails. CI now generates
them from templates/prod config on first deploy.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 22:01:48 -07:00
Kpa-clawbot
5bc7087b83 fix: deploy step uses repo checkout for docker compose
The deploy job was cd-ing to /opt/meshcore-deploy which has no
docker-compose.yml. Now runs compose from the repo checkout and
copies compose file to deploy dir for manage.sh.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 22:00:10 -07:00
Kpa-clawbot
be9ea08621 ci: deploy to staging via docker compose
Milestone 3 of #132. Deploy job now uses docker compose instead of raw
docker run. Every push to master auto-deploys to staging (:81), runs
smoke tests. Production is NOT auto-restarted — use ./manage.sh promote.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 21:11:37 -07:00
Kpa-clawbot
b22278f2e1 ci: split frontend coverage into 5 visible steps
Break monolithic 13-min "Frontend coverage" CI step into separate
phases so each reports its own duration on the Actions page:
1. Instrument frontend JS (Istanbul)
2. Start test server (health-check poll, not sleep 5)
3. Run Playwright E2E tests
4. Extract coverage + nyc report
5. Stop test server (if: always())

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 17:03:59 -07:00
you
e1a776bd34 fix: move CI deploy paths to /opt — no personal info in logs
Runner moved to /opt/actions-runner/
Config/Caddyfile served from /opt/meshcore-deploy/
Data symlinked to /opt/meshcore-deploy/data/
Zero $HOME references in deploy workflow
2026-03-26 03:59:47 +00:00
you
262875435a fix: CI deploy reads config/Caddyfile from deployment dir, not CI checkout
CI runs from actions-runner/_work/ which doesn't have config.json or
caddy-config/. These files live in $HOME/meshcore-analyzer/ which is
the persistent deployment directory.
2026-03-26 03:52:50 +00:00
you
49b3648cbd fix: CI deploy uses correct Caddyfile path, dynamic ports, health check
- Config from repo dir, not hardcoded home path
- Caddyfile from caddy-config/ (was missing the subdirectory)
- Dynamic port mapping derived from Caddyfile content
- Auto-detect existing host data directory for bind mount
- Health check waits for /api/stats after deploy
- Read-only mounts for config and Caddyfile
2026-03-26 03:16:21 +00:00
you
46a8fbf4d0 ci: smart test selection — only run what changed
Backend-only change: ~1 min (unit tests, skip Playwright/coverage)
Frontend-only change: ~2-5 min (E2E + coverage, skip backend suite)
Both changed: full suite (~14 min)
CI/test infra changed: full suite (safety net)

Detects changed files via git diff HEAD~1, runs appropriate suite.
2026-03-24 05:52:08 +00:00
you
db2623a08b ci: fix badge colors (88% should be green) + E2E count parsing 2026-03-24 04:55:10 +00:00
you
a2ee5239ce ci: fix frontend coverage reporting — debug output, handle empty FE_COVERAGE 2026-03-24 04:35:03 +00:00
you
1aa0e49e18 ci: full frontend coverage pipeline in CI — instrument, Playwright, collect, report
Every push now: backend tests + coverage → instrument frontend JS →
start instrumented server → Playwright E2E → collect window.__coverage__
→ generate frontend coverage report → update badges. All before deploy.
2026-03-24 04:22:23 +00:00
you
4a0545d45f ci: separate backend/frontend badges for tests + coverage
README now shows 5 badges:
- Backend Tests (count)
- Backend Coverage (%)
- Frontend Tests (E2E count)
- Frontend Coverage (%)
- Deploy status
2026-03-24 03:28:13 +00:00
you
724a91da10 ci: Playwright runs BEFORE deploy against local temp server
Tests now run in the test job, not after deploy. Spins up server.js
on port 13581, runs Playwright against it, kills it after.
If E2E fails, deploy is blocked — broken code never reaches prod.
BASE_URL env var makes the test configurable.
2026-03-24 03:01:15 +00:00
you
037f3b3ae2 ci: wait for site healthy before running Playwright E2E
Site is down during docker rebuild — wait up to 60s for /api/stats
to respond before running browser tests.
2026-03-24 02:50:19 +00:00
you
716a7cee02 ci: install deps before Playwright E2E in deploy job 2026-03-24 02:47:56 +00:00
you
9dfc577409 ci: fix frontend-test channel assertion + badge push non-fatal
Channel messages response may not have .messages array.
Badge push now continue-on-error (self-hosted runner permissions).
2026-03-24 02:45:14 +00:00
you
954d6e4e5b ci: fix badge push — use GITHUB_TOKEN for write access 2026-03-24 02:43:15 +00:00
you
0b1f7aaead ci: Playwright E2E tests run in GitHub Actions after deploy
8 smoke tests against prod after deployment completes.
Uses Playwright bundled Chromium on x86 runner.
Falls back to CHROMIUM_PATH env var for other architectures.
2026-03-24 02:37:48 +00:00
you
729f6c4f4a ci: dynamic test count + coverage badges in README
Badges show: 'tests: 844/844 passed' and 'coverage: 76%'
Updated automatically by CI after each run via .badges/ JSON files.
Color: green >80%, yellow >60%, red <60%.
2026-03-24 02:22:14 +00:00
you
edba885964 ci: add test status badge to README + job summary with coverage
Badge shows pass/fail in the repo. Job summary shows test counts
and coverage percentages in the GitHub Actions UI.
2026-03-24 00:56:02 +00:00
you
5a19c06c11 ci: tests must pass before deploy — no untested code in prod
Added test job that runs unit tests + integration tests + coverage
before deploy. Deploy job depends on test job passing.
If any test fails, deploy is blocked.
2026-03-24 00:52:35 +00:00
you
fde5295292 Fix CI: use docker rm -f to avoid stale container conflicts 2026-03-23 00:18:19 +00:00
you
5f3732f400 CI: skip deploy on markdown, docs, LICENSE, gitignore changes 2026-03-22 18:28:56 +00:00
you
1a87e7410e v2.3.0: Packet Deduplication — normalized storage with transmissions + observations
CI: add setup-node to deploy workflow
2026-03-20 23:02:58 +00:00
you
10b11106f6 ci: add pre-deploy JS validation — syntax check + undefined reference detection
Validation runs BEFORE docker build. If it fails, deployment is blocked.
No more broken code reaching production.
2026-03-20 19:24:11 +00:00
you
1f9cd3ead1 fix: add config.json mount to CI deploy workflow 2026-03-20 14:29:32 +00:00
you
74983d3f74 ci: switch to self-hosted runner — no SSH, no secrets, no exposed ports 2026-03-20 07:07:01 +00:00
you
ab35ced2bf ci: auto-deploy to VM on push to master via GitHub Actions 2026-03-20 07:03:36 +00:00