Ingest Bitbucket Pipelines deployments into Production QA

Task 12417 · Running · Coder · created · updated

## Gap Epic 12247 item 1 asked for deploy ingestion on GitHub "and each supported forge's equivalent". Only GitHub shipped (architecture AC-6 deferred the others to Finish). `apps/api/app/triggers.py:16-45` has no Bitbucket source kind and `apps/api/app/production_qa/deployments.py` reads GitHub events only, so a Bitbucket project gets no Deployments rows, `deployed` edge or `deploy_failed` incident. ## Fix Add a record-only `bitbucket` deploy recorder mapping Bitbucket Cloud webhook events (`repo:commit_status_updated` / pipeline and deployment events; signature `X-Hub-Signature` HMAC-SHA256 with the webhook secret — confirm event names and signing from Atlassian's docs, never memory) onto the same `deployments` rows, range/PR mapping, `deployed` edges and `deploy_failed` incidents the GitHub `reconcile` path writes. Connect deploys (Project › Production QA) gets a Bitbucket variant. No new table. ## Acceptance - A successful production deployment event → one Deployments row with range and merged PRs' tasks — fixture test with documented samples. - A failed production step → one `deploy_failed` incident; repeat updates it — test. - Bad/missing signature → 401, nothing written — test. - Gate OFF: rows written, nothing filed — test. - Connect deploys UI checked at 448 px and desktop. Out of scope: GitLab and Azure DevOps (own tasks); the GitHub path; filing logic; any scoring. Done means: - Tests above green; UI screenshots in the PR. - Required checks: ./dc check quick, changed-area tests, merge lane full gate.

Outcome

Pull request

Activity

  • Ready
  • Runner started