Support-owned CircleCI reproduction harness: keep the default branch intentionally small, and park each customer or internal repro on its own long-lived branch named after the ticket (or a short problem slug when one branch spans several tickets).
This mirrors how we use internal testing repos to turn “a failing customer job” into a minimal, repeatable pipeline we can run before and after a fix.
main should stay a boring smoke check (for example a single hello job). It is the template you branch from when starting a new repro, not a dumping ground for unrelated experiments.
When you add or change .circleci/config.yml for a repro, base the work on main and keep the config minimal for that scenario (only the jobs, workflows, images, and orbs needed to exercise the bug). Avoid copying an older ticket branch wholesale.
When a customer reports an issue with a CircleCI job:
- Branch from
main(or recreate a minimal tree frommainif you prefer a clean slate). - Name the branch after the Zendesk / Jira ticket (e.g.
171035) or a short slug if several tickets share one repro. - Iterate in commits on that branch until the pipeline reproduces the customer symptom.
- After Engineering ships a fix, re-run the same branch to confirm the fix; keep the branch as a regression anchor unless policy says otherwise.
Branches are allowed to carry whatever app code, scripts, or Xcode projects the repro needs. The goal is fidelity and repeatability, not a pretty history on main.
Branch 171035 is a real migrated example from our internal circleci-testing harness: a macOS UI test repro for Zendesk 171035, with a small Xcode project under macos-ui-repro-171035/ and a matrix over Xcode 26.3 vs 26.4 in .circleci/config.yml. Original commit timestamps and hashes were preserved when this branch was pushed into this repository.
Check out that branch to see the end-to-end pattern (minimal config on main vs. a focused repro on a ticket branch).
This repository is intended to be wired to CircleCI like any other GitHub project (org defaults, contexts, etc.). Ticket branches can use filters.branches.only so workflows only run where intended.
Organization: CircleCI-Support on GitHub.