* ci(circleci): clone the public repo over HTTPS so main jobs stop failing at checkout The project's SSH checkout key stopped authenticating on Oct 27, so every job's built-in checkout step failed with Permission denied (publickey). The repo is public, so each job now fetches its pipeline's commit anonymously over HTTPS, the way the migration jobs already did * fix(circleci): let the PR path filter read history after the shallow clone and test the clone step itself * fix(circleci): clone full history without file contents, retry the fetch, and record the integration schedule The depth-1 clone left the PR path filter without a merge base, and the unshallow that fixed it pulled about 1.4 GB per filtered job. A blobless fetch gives every job the history the built-in checkout step gave, so the path filter change goes back to main's version. The fetch now gets three tries, the tests run the step under the Windows job's bare bash too, and .circleci/AGENTS.md records the integration schedule's cron * fix(circleci): stop on the fetch error once the three tries run out, and name the GitHub App fallback as the cause * fix(circleci): retry the checkout's file download with the fetch, since a dropped download failed the job outside the retry * fix(circleci): fetch the routing parity base with its file contents, since the blobless clone downloaded each file separately --------- Co-authored-by: mateo-berri <277851410+mateo-berri@users.noreply.github.com>
1.2 KiB
.circleci
The integration workflow on main runs from a scheduled pipeline in the CircleCI project settings, cron 9 0-8,14-23 * * * (UTC) on main with no pipeline parameters. It has no triggers: block in this file because a workflow with one runs only on its schedule, so the API pipelines that set run_migration_tests or routing_parity_base would stop running it. If main stops getting integration runs, check that the schedule still exists and recreate it with these values
Jobs clone with the checkout_over_https command, never the built-in checkout step, because CircleCI falls back to the project's SSH checkout key without its GitHub App access, GitHub rejects that key, and the public repo needs no key. It fetches the job's commit with full history and no file contents (--filter=blob:none), like the built-in step did, so scripts/path_filter.sh can find a merge base
A step that checks out files from another commit fetches that commit with --no-filter, as routing_parity does, because the clone has no file contents and git would otherwise download each missing file in its own request, which took 210 to 896 seconds for the routing parity base