External CI/CD Pipeline — branch-independent test runner
Go to file
Claude BM 75dd4ee6dc Show feature tags instead of suite name in CI notifications
Lists all feature tags present in the tested files (e.g. genlab,
optimizer, scheduling) and how many tests were not in scope.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 08:27:21 +00:00
ci-config.json feat: TSHARPS-CI external runner — branch-independent CI pipeline 2026-04-21 03:25:31 +00:00
ci-notify.sh Add suite tag and deselected count to CI notifications 2026-04-22 08:14:27 +00:00
ci-runner.sh Show feature tags instead of suite name in CI notifications 2026-04-22 08:27:21 +00:00
ci-webhook.py Bind webhook server to 0.0.0.0 instead of 127.0.0.1 2026-04-21 16:47:25 +00:00
README.md feat: TSHARPS-CI external runner — branch-independent CI pipeline 2026-04-21 03:25:31 +00:00

TSHARPS-CI — External CI/CD Pipeline

Branch-independent CI runner for the TSHARPS flight training scheduler.

Branch Model

TestMain ──► TestStaging ──► TestProduction
  (dev)       (validate)      (live CI)
  • TestMain: Develop CI changes here
  • TestStaging: Validate before going live
  • TestProduction: Runs against ALL TSHARPS branches on every push

How It Works

  1. Developer pushes to any TSHARPS branch (mfg, rogue, spif, staging, main)
  2. Gitea webhook fires POST to http://127.0.0.1:9500/ci
  3. ci-webhook.py receives the event and spawns ci-runner.sh
  4. ci-runner.sh runs against the pushed branch's worktree:
    • Feature manifest verification
    • Test suite (with quarantine for known failures)
    • Package import check
  5. ci-notify.sh sends results to Telegram CICD Pipeline topic

Files

File Purpose
ci-webhook.py HTTP server listening for Gitea push webhooks
ci-runner.sh Main CI script — tests, features, packages
ci-notify.sh Telegram notification sender
ci-config.json Configuration (tokens, paths, timeouts)

Key Rules

  • Read-only: CI runner never writes to TSHARPS repos
  • Same tests for all branches: No branch-specific CI logic
  • No results stored here: Test results handled separately
  • Runner self-monitoring: Crashes send distinct alerts

Promoting CI Changes

# 1. Develop on TestMain
git checkout TestMain
# make changes
git commit -am "add new check"
git push origin TestMain

# 2. Promote to TestStaging
git checkout TestStaging && git merge TestMain && git push

# 3. Promote to live
git checkout TestProduction && git merge TestStaging && git push

# 4. Update server
ssh server "cd /srv/tsharps-ci && git pull origin TestProduction"

Switch-Back to Gitea Actions

If this doesn't work out:

  1. Re-enable Gitea Actions: TSHARPS repo → Settings → Actions → check "Active"
  2. Stop runner: sudo systemctl stop tsharps-ci
  3. Remove webhook: TSHARPS repo → Settings → Webhooks → Delete