@catladder/cli 0.0.0-next-f2614a3a → 0.0.0-next-78d43d4a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -193,16 +193,40 @@ See the `catladder-releases` skill for how the release jobs differ
193
193
 
194
194
  ## Step 7 — registry and the first run
195
195
 
196
- The container registry changes with the backend: `$CI_REGISTRY_IMAGE` on
197
- GitLab, `ghcr.io/<owner>/<repo>` on GitHub. Consequences to state
198
- explicitly:
199
-
200
- - The first pipeline on the new backend **rebuilds every job image and
201
- every app image** — it will be slow, and that is expected, not a bug.
202
- - The deploy target must be able to **pull from the new registry**.
203
- catladder does not manage image-pull credentials on the cluster or on
204
- Cloud Run, so check GHCR package visibility / the pull secret with
205
- whoever owns the target *before* pointing a real environment at it.
196
+ The **job images** (the catladder runner images) always live in the CI
197
+ system's own registry, so they change host with the backend:
198
+ `$CI_REGISTRY_IMAGE` on GitLab, `ghcr.io/<owner>/<repo>` on GitHub. The
199
+ first pipeline on the new backend therefore **rebuilds every job image**
200
+ — it will be slow, and that is expected, not a bug.
201
+
202
+ Where the **app image** goes depends on the deploy type:
203
+
204
+ - **`google-cloudrun`** — the image goes to Google Artifact Registry
205
+ (`<region>-docker.pkg.dev/<projectId>/catladder-deploy/…`) on both
206
+ backends. Cloud Run can only pull from AR/GCR, so a backend migration
207
+ does not move the app image at all. Nothing to do here.
208
+ - **`kubernetes`** — the app image lives in the CI registry and does
209
+ move. catladder handles the pull itself: every deploy runs
210
+ `kubernetesCreateSecret`, which writes a `docker-registry` secret
211
+ (`gitlab-registry-<component>`) into the namespace, and the chart wires
212
+ it in as `imagePullSecrets`. Note the secret keeps its historical name
213
+ on both backends.
214
+
215
+ The credential behind that secret differs per backend, and this is the
216
+ one thing to raise before a kubernetes component moves to GitHub:
217
+
218
+ - **GitLab** provisions a durable one automatically —
219
+ `catladder project setup` creates a `gitlab-deploy-token` (scope
220
+ `read_registry`), GitLab exposes it to jobs as `CI_DEPLOY_USER` /
221
+ `CI_DEPLOY_PASSWORD`, and `project doctor` fails when it is missing.
222
+ - **GitHub has no equivalent.** The deploy falls back to the workflow
223
+ token, which expires with the run: the initial pull succeeds and the
224
+ job goes green, but a pod rescheduled later cannot re-pull —
225
+ `ImagePullBackOff` weeks after a deploy that looked fine. Until that
226
+ is solved (catladder issue #75), a project moving kubernetes to GitHub
227
+ must supply a long-lived registry credential itself, declared as
228
+ secrets named `CI_DEPLOY_USER` / `CI_DEPLOY_PASSWORD` (a PAT with
229
+ `read:packages`), which take precedence in the deploy.
206
230
 
207
231
  ## Step 8 — run both, compare, then cut over
208
232
 
@@ -193,16 +193,40 @@ See the `catladder-releases` skill for how the release jobs differ
193
193
 
194
194
  ## Step 7 — registry and the first run
195
195
 
196
- The container registry changes with the backend: `$CI_REGISTRY_IMAGE` on
197
- GitLab, `ghcr.io/<owner>/<repo>` on GitHub. Consequences to state
198
- explicitly:
199
-
200
- - The first pipeline on the new backend **rebuilds every job image and
201
- every app image** — it will be slow, and that is expected, not a bug.
202
- - The deploy target must be able to **pull from the new registry**.
203
- catladder does not manage image-pull credentials on the cluster or on
204
- Cloud Run, so check GHCR package visibility / the pull secret with
205
- whoever owns the target *before* pointing a real environment at it.
196
+ The **job images** (the catladder runner images) always live in the CI
197
+ system's own registry, so they change host with the backend:
198
+ `$CI_REGISTRY_IMAGE` on GitLab, `ghcr.io/<owner>/<repo>` on GitHub. The
199
+ first pipeline on the new backend therefore **rebuilds every job image**
200
+ — it will be slow, and that is expected, not a bug.
201
+
202
+ Where the **app image** goes depends on the deploy type:
203
+
204
+ - **`google-cloudrun`** — the image goes to Google Artifact Registry
205
+ (`<region>-docker.pkg.dev/<projectId>/catladder-deploy/…`) on both
206
+ backends. Cloud Run can only pull from AR/GCR, so a backend migration
207
+ does not move the app image at all. Nothing to do here.
208
+ - **`kubernetes`** — the app image lives in the CI registry and does
209
+ move. catladder handles the pull itself: every deploy runs
210
+ `kubernetesCreateSecret`, which writes a `docker-registry` secret
211
+ (`gitlab-registry-<component>`) into the namespace, and the chart wires
212
+ it in as `imagePullSecrets`. Note the secret keeps its historical name
213
+ on both backends.
214
+
215
+ The credential behind that secret differs per backend, and this is the
216
+ one thing to raise before a kubernetes component moves to GitHub:
217
+
218
+ - **GitLab** provisions a durable one automatically —
219
+ `catladder project setup` creates a `gitlab-deploy-token` (scope
220
+ `read_registry`), GitLab exposes it to jobs as `CI_DEPLOY_USER` /
221
+ `CI_DEPLOY_PASSWORD`, and `project doctor` fails when it is missing.
222
+ - **GitHub has no equivalent.** The deploy falls back to the workflow
223
+ token, which expires with the run: the initial pull succeeds and the
224
+ job goes green, but a pod rescheduled later cannot re-pull —
225
+ `ImagePullBackOff` weeks after a deploy that looked fine. Until that
226
+ is solved (catladder issue #75), a project moving kubernetes to GitHub
227
+ must supply a long-lived registry credential itself, declared as
228
+ secrets named `CI_DEPLOY_USER` / `CI_DEPLOY_PASSWORD` (a PAT with
229
+ `read:packages`), which take precedence in the deploy.
206
230
 
207
231
  ## Step 8 — run both, compare, then cut over
208
232
 
package/package.json CHANGED
@@ -53,7 +53,7 @@
53
53
  }
54
54
  ],
55
55
  "license": "MIT",
56
- "version": "0.0.0-next-f2614a3a",
56
+ "version": "0.0.0-next-78d43d4a",
57
57
  "scripts": {
58
58
  "lint": "eslint \"src/**/*.ts\"",
59
59
  "lint:fix": "eslint \"src/**/*.ts\" --fix",