This repository uses a gated promotion workflow enforced by Pull Requests (PRs) and automated by Mergify.
Primary branches:
dev— integration branch; all changes must land here firstproduction— promoted fromdevcp_production— promoted fromproduction
Golden rule: Do not open PRs directly to
productionorcp_productionfor normal work. Always start with a PR intodev.
When a PR is merged into a primary branch, Mergify will automatically create promotion/backport PRs and apply labels:
- Promotion PRs from
devare labeled:from-dev - Promotion PRs from
productionare labeled:from-production
Mergify will request reviews from @lsst-it/cl-infra unless the PR has a fast-track label applied to it (see below).
There are two fast-track labels that may be applied to the original PR into dev.
These labels are intended as a short-cut to reduce repetiive manual steps for changes that need to be rolled out immediately and/or can not be practically tested in the dev environment.
shipit: Mergify opens a PR toproductionand auto-merges it. A PR tocp_productionwill be opened but will not be auto-mergedshipit-yes-i-really-really-mean-it: Mergify opens a PR toproductionand auto-merges it, then it opens a PR tocp_productionand auto-merges it
graph TD
A[Feature branch] -->|PR targets dev| B[dev]
%% dev -> production
B -->|merge| C{Label matches ^shipit?}
C -->|no| D[Mergify opens PR<br/>dev -> production<br/>label: from-dev]
D -->|review requested<br/>@lsst-it/cl-infra| E[production]
C -->|yes| F[Mergify opens PR<br/>dev -> production<br/>labels: from-dev + shipit*]
F -->|auto-approve + auto-merge| E
%% production -> cp_production
E -->|merge| G{Label is shipit-yes-i-really-really-mean-it?}
G -->|no| H[Mergify opens PR<br/>production -> cp_production<br/>labels: from-production]
G -->|yes| I[Mergify opens PR<br/>production -> cp_production<br/>labels: from-production + shipit-yes-i-really-really-mean-it]
H -->|review requested<br/>@lsst-it/cl-infra| J[cp_production]
I -->|auto-approve + auto-merge| J[cp_production]