PAR-81
GitHub App integration: repo links, commit/PR deep links, status from merges
Linear-style GitHub integration — connect repos to a workspace so commits/PRs deep-link to issues and merges drive status. Shipped to develop (tesks + tesks-ui), awaiting deploy + App setup (see rollout task).
Inbound (verified webhooks) — tesks
POST /github/webhook(GithubWebhookController) — outside the bearer-guarded/api/**; verifiesX-Hub-Signature-256HMAC over the raw body, de-dupes onX-GitHub-Delivery(github_delivery).GithubWebhookService— resolves tenant from the installation id, scans commit/PR/branch text viaIssueRefScanner(reuses theKEY-NUMBERshape; alias-aware so aENG-12mention still links after the issue moved toDSN-4), upsertsissue_dev_linkrows +issue_eventactivity (fans out to Discord via the existingActivityDispatcher), and applies per-repo automation: PR open → status, PR merge → status,fixes ENG-1on the default branch → close. Transitions resolve the configured status's category into the issue's own team, so one mapping works across teams.
Write-back (optional) — GithubAppClient mints an RS256 app JWT → installation token to comment on PRs / set commit status; GithubActivitySink mirrors issue status changes onto linked PRs. No-op when app id/key unset.
Config / schema — migration V14 (github_install, repo_link, issue_dev_link, github_delivery); GithubApiController /api/w/{slug}/github/**; tesks.github.* (app id / private key / webhook secret).
UI — tesks-ui — Settings → GitHub (connect installation, link repos with default team / project / PR-open & PR-merge → status + autolink/closes toggles); issue Development panel listing linked PRs/commits/branches; new commit/pr/branch activity events.
Tests — signature verify, ref scanner, through-the-DAL webhook handling (push-close, PR open/merge transitions, dev links, install scoping, dedupe). Backend + UI suites green.
Commits: tesks 2a2b296, tesks-ui 62e12f9.
Comments
No comments yet.
Activity
- paradaux description: Description updated
- paradaux changed status to Status → Done
- tesks created the issue