@catladder/cli 0.0.0-next-b3e567e8 → 0.0.0-next-78f04d3f
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.
- package/dist/apps/cli/src/catci.js +23 -0
- package/dist/apps/cli/src/catci.js.map +1 -1
- package/dist/apps/cli/src/release/githubQueuedRelease.d.ts +14 -0
- package/dist/apps/cli/src/release/githubQueuedRelease.js +152 -0
- package/dist/apps/cli/src/release/githubQueuedRelease.js.map +1 -0
- package/dist/bundles/catci/index.js +3 -3
- package/dist/bundles/catenv/index.js +516 -136
- package/dist/bundles/cli/index.js +516 -136
- package/dist/bundles/skills/catladder-builds/SKILL.md +49 -2
- package/dist/bundles/skills/catladder-builds/references/build-types.md +2 -2
- package/dist/bundles/skills/catladder-pipelines/SKILL.md +13 -3
- package/dist/bundles/skills/catladder-releases/SKILL.md +13 -2
- package/dist/packages/pipeline/src/backends/github/GithubBackend.js +11 -4
- package/dist/packages/pipeline/src/backends/github/GithubBackend.js.map +1 -1
- package/dist/packages/pipeline/src/backends/github/githubReleaseJobs.d.ts +18 -2
- package/dist/packages/pipeline/src/backends/github/githubReleaseJobs.js +92 -10
- package/dist/packages/pipeline/src/backends/github/githubReleaseJobs.js.map +1 -1
- package/dist/packages/pipeline/src/backends/gitlab/GitlabBackend.js +35 -9
- package/dist/packages/pipeline/src/backends/gitlab/GitlabBackend.js.map +1 -1
- package/dist/packages/pipeline/src/backends/gitlab/gitlabReleaseJobs.d.ts +285 -3
- package/dist/packages/pipeline/src/backends/gitlab/gitlabReleaseJobs.js +142 -54
- package/dist/packages/pipeline/src/backends/gitlab/gitlabReleaseJobs.js.map +1 -1
- package/dist/packages/pipeline/src/build/types.d.ts +6 -5
- package/dist/packages/pipeline/src/build/types.js.map +1 -1
- package/dist/packages/pipeline/src/customImages/hash.d.ts +9 -0
- package/dist/packages/pipeline/src/customImages/hash.js +41 -16
- package/dist/packages/pipeline/src/customImages/hash.js.map +1 -1
- package/dist/packages/pipeline/src/customImages/jobImagesPlan.d.ts +23 -5
- package/dist/packages/pipeline/src/customImages/jobImagesPlan.js +177 -43
- package/dist/packages/pipeline/src/customImages/jobImagesPlan.js.map +1 -1
- package/dist/packages/pipeline/src/customImages/projectImages.d.ts +67 -0
- package/dist/packages/pipeline/src/customImages/projectImages.js +9 -0
- package/dist/packages/pipeline/src/customImages/projectImages.js.map +1 -0
- package/dist/packages/pipeline/src/deploy/types/custom.d.ts +2 -2
- package/dist/packages/pipeline/src/deploy/types/index.d.ts +4 -4
- package/dist/packages/pipeline/src/deploy/types/pages.d.ts +2 -2
- package/dist/packages/pipeline/src/index.d.ts +2 -0
- package/dist/packages/pipeline/src/index.js +2 -0
- package/dist/packages/pipeline/src/index.js.map +1 -1
- package/dist/packages/pipeline/src/types/config.d.ts +8 -0
- package/dist/packages/pipeline/src/types/config.js.map +1 -1
- package/dist/packages/pipeline/src/types/github-types.d.ts +1 -0
- package/dist/packages/pipeline/src/types/jobs.d.ts +2 -1
- package/dist/packages/pipeline/src/types/jobs.js.map +1 -1
- package/dist/packages/pipeline/src/types/release.d.ts +7 -1
- package/dist/skills/catladder-builds/SKILL.md +49 -2
- package/dist/skills/catladder-builds/references/build-types.md +2 -2
- package/dist/skills/catladder-pipelines/SKILL.md +13 -3
- package/dist/skills/catladder-releases/SKILL.md +13 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/catci.ts +30 -0
- package/src/release/githubQueuedRelease.ts +173 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: catladder-builds
|
|
3
|
-
description: Configuring how a component is built in a catladder project — the `build` config in catladder.ts (build types node / rails / meteor / custom, build & start commands, artifacts, caching, lint/test/audit jobs, the Docker image, and shared workspace builds). Use when adding or changing a component's build, choosing a build type, wiring a Dockerfile/nginx image, tuning the build/test/lint jobs, or setting up a monorepo workspace build. Triggers on "build config", "buildCommand", "build type", "Dockerfile", "docker image", "rails build", "monorepo build", "artifacts".
|
|
3
|
+
description: Configuring how a component is built in a catladder project — the `build` config in catladder.ts (build types node / rails / meteor / custom, build & start commands, artifacts, caching, lint/test/audit jobs, the Docker image, project-declared job images, and shared workspace builds). Use when adding or changing a component's build, choosing a build type, wiring a Dockerfile/nginx image, declaring a custom CI job image (`images` config), tuning the build/test/lint jobs, or setting up a monorepo workspace build. Triggers on "build config", "buildCommand", "build type", "Dockerfile", "docker image", "job image", "jobImage", "custom image", "project image", "rails build", "monorepo build", "artifacts".
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Component builds with catladder
|
|
@@ -71,11 +71,58 @@ type: `build: { from: "web" }` (see workspace builds below).
|
|
|
71
71
|
- `cache` — build caching (see the `catladder-pipelines` skill for the
|
|
72
72
|
caching model).
|
|
73
73
|
- `jobImage`, `jobTags`, `jobVars`, `runnerVariables` — the CI image,
|
|
74
|
-
runner tags, build-only env vars, and extra runner variables.
|
|
74
|
+
runner tags, build-only env vars, and extra runner variables. A
|
|
75
|
+
`jobImage` is a concrete image url or `{ image: "<name>" }`
|
|
76
|
+
referencing a project image (see below).
|
|
75
77
|
- `docker` — the image build strategy: a built-in
|
|
76
78
|
(`{ type: "nginx" | "node" | "meteor" }`) or
|
|
77
79
|
`{ type: "custom" }` (expects a `Dockerfile`).
|
|
78
80
|
|
|
81
|
+
## Project images (custom CI job images)
|
|
82
|
+
|
|
83
|
+
When a job needs a toolchain catladder doesn't ship (Java, Playwright,
|
|
84
|
+
…), declare a Docker image at the top level under `images` and reference
|
|
85
|
+
it in any `jobImage` field (build, `test.jobImage`, custom/pages deploy,
|
|
86
|
+
verify):
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
images: {
|
|
90
|
+
// (a) a directory in the repo (default context = the dir)
|
|
91
|
+
"java-build": {
|
|
92
|
+
dir: "docker/java-build", // contains the Dockerfile
|
|
93
|
+
buildArgs: { MAVEN_VERSION: "3.9.9" }, // optional, part of the content hash
|
|
94
|
+
hashExtraPaths: ["shared/settings.xml"], // optional extra hashed+watched files
|
|
95
|
+
},
|
|
96
|
+
// (b) inline (default context = repo root); materialized into
|
|
97
|
+
// .catladder-generated/images/project/<name>/Dockerfile
|
|
98
|
+
"db-tools": {
|
|
99
|
+
dockerfile: ["FROM alpine:3.21", "RUN apk add --no-cache postgresql17-client"],
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
components: {
|
|
103
|
+
api: {
|
|
104
|
+
build: { type: "custom", jobImage: { image: "java-build" }, docker: { type: "custom" } },
|
|
105
|
+
},
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`dir` and `dockerfile` are mutually exclusive. `context` overrides the
|
|
110
|
+
build context (relative to the repo root) — needed when the image
|
|
111
|
+
`COPY`s files from outside its `dir`.
|
|
112
|
+
|
|
113
|
+
Catladder generates a `🐳 image <name>` job (setup stage) that builds
|
|
114
|
+
the image content-hashed into the project registry
|
|
115
|
+
(`…/job-images/<name>:<hash>`) and skips when it already exists — works
|
|
116
|
+
on GitLab and GitHub.
|
|
117
|
+
|
|
118
|
+
**The build context is not hashed** (it can be the whole repo) — only
|
|
119
|
+
the Dockerfile / `dir`, `buildArgs` and `hashExtraPaths` are. Files
|
|
120
|
+
pulled in via `COPY` that should trigger a rebuild belong in
|
|
121
|
+
`hashExtraPaths`.
|
|
122
|
+
|
|
123
|
+
Generation (`yarn catenv`) fails fast on an undeclared image name, a
|
|
124
|
+
missing `dir`, or a `dir` without a `Dockerfile`.
|
|
125
|
+
|
|
79
126
|
## Workspace builds (monorepos)
|
|
80
127
|
|
|
81
128
|
For a shared build across several components, declare it once at the top
|
|
@@ -19,7 +19,7 @@ generated pipeline files.
|
|
|
19
19
|
| `jobVars` | `EnvVars` | env vars only in build jobs |
|
|
20
20
|
| `runnerVariables` | `Record<string,string>` | extra runner vars (also for `services:`) |
|
|
21
21
|
| `jobTags` | `string[]` | runner tags |
|
|
22
|
-
| `jobImage` | `
|
|
22
|
+
| `jobImage` | `JobImageConfig` | CI image for the build: a concrete image or `{ image: "<name>" }` referencing a project image |
|
|
23
23
|
| `docker` | see below | the deployable image strategy |
|
|
24
24
|
|
|
25
25
|
`TestJobCustom` (for `lint`/`test`/`audit`): `command`, `jobImage`,
|
|
@@ -48,7 +48,7 @@ generated pipeline files.
|
|
|
48
48
|
|
|
49
49
|
### `custom`
|
|
50
50
|
- `type: "custom"` — **required**.
|
|
51
|
-
- `jobImage:
|
|
51
|
+
- `jobImage: JobImageConfig` — **required** CI image (concrete image or `{ image: "<name>" }` project-image ref).
|
|
52
52
|
- `docker: BuildConfigDocker` — **required** image build config.
|
|
53
53
|
- `jobServices?: Services` — services for lint/test/audit/build jobs.
|
|
54
54
|
- `lint?` / `test?` / `audit?: TestJobCustom` — disabled unless set.
|
|
@@ -29,13 +29,23 @@ plus stop jobs for review-app teardown.
|
|
|
29
29
|
|
|
30
30
|
## Job images and catci
|
|
31
31
|
|
|
32
|
-
Jobs run in catladder-provided images
|
|
33
|
-
|
|
34
|
-
project's own registry
|
|
32
|
+
Jobs run in catladder-provided images (`🐳 catladder image <name>` build
|
|
33
|
+
jobs). Their definitions are materialized into
|
|
34
|
+
`.catladder-generated/images/` and built in the project's own registry
|
|
35
|
+
under `catladder/` (content-hashed, rebuilt only on change).
|
|
35
36
|
`.catladder-generated/catci/` holds a small bundled CI companion used by
|
|
36
37
|
generated jobs (e.g. the release security audit) — all generated, never
|
|
37
38
|
edit.
|
|
38
39
|
|
|
40
|
+
Projects can declare their own job images under `images` in
|
|
41
|
+
`catladder.ts` (`🐳 image <name>` build jobs, pushed to `job-images/` in
|
|
42
|
+
the registry) and reference them in any `jobImage` field via
|
|
43
|
+
`{ image: "<name>" }` — see the `catladder-builds` skill. A declared
|
|
44
|
+
Dockerfile directory is used in place; an inline `dockerfile` is
|
|
45
|
+
materialized into `.catladder-generated/images/project/<name>/`. Either
|
|
46
|
+
way the build job is skipped when the content hash already exists in
|
|
47
|
+
the registry.
|
|
48
|
+
|
|
39
49
|
## Caching
|
|
40
50
|
|
|
41
51
|
Cache configuration is generated per build type; node builds cache
|
|
@@ -23,12 +23,23 @@ are generated, never hand-edited.
|
|
|
23
23
|
## `when` — who triggers the release
|
|
24
24
|
|
|
25
25
|
- **`manual`** (default) — the `create release` job on the main branch
|
|
26
|
-
|
|
26
|
+
can be clicked **at any time**, even while the pipeline is still
|
|
27
|
+
running: it queues the release, which then runs automatically as soon
|
|
28
|
+
as every other job of the pipeline succeeded (and is skipped if the
|
|
29
|
+
pipeline fails). Clicking after a green pipeline releases right away.
|
|
30
|
+
- On GitLab the button is a quick no-op job; the actual release runs
|
|
31
|
+
in the automatic `🚀 release once pipeline succeeds` job (skipped
|
|
32
|
+
when the button was never clicked — never run it by hand).
|
|
33
|
+
- On GitHub the `create-release` dispatch task releases immediately
|
|
34
|
+
when the main workflow for HEAD is green, queues the release when
|
|
35
|
+
it is still running (the `catladder release on green` workflow then
|
|
36
|
+
picks it up on completion), and fails when the run concluded red.
|
|
27
37
|
- **`auto`** — the release job runs automatically on every main-branch
|
|
28
38
|
pipeline (it still no-ops when there is nothing to release).
|
|
29
39
|
|
|
30
40
|
There is always also a manual **`⚠️ force create release`** job as an
|
|
31
|
-
escape hatch
|
|
41
|
+
escape hatch: it releases **immediately**, ignoring the state of the
|
|
42
|
+
pipeline. With `method: "changesets"` it has an extra meaning: it
|
|
32
43
|
releases **even when no changesets are pending** (patch bump with a
|
|
33
44
|
generic changelog entry) — the recovery path when a change was merged
|
|
34
45
|
without a changeset and must ship now.
|
|
@@ -54,7 +54,7 @@ class GithubBackend {
|
|
|
54
54
|
await (0, promises_1.rm)(scriptFiles_1.GITHUB_SCRIPTS_FOLDER, { recursive: true, force: true });
|
|
55
55
|
}
|
|
56
56
|
async createFiles(config) {
|
|
57
|
-
const images = this.createImagesPlan();
|
|
57
|
+
const images = this.createImagesPlan(config);
|
|
58
58
|
const scripts = new scriptFiles_1.GithubScriptFiles();
|
|
59
59
|
const workflows = await this.createWorkflows(config, images, scripts);
|
|
60
60
|
return [
|
|
@@ -69,13 +69,13 @@ class GithubBackend {
|
|
|
69
69
|
...(0, shippedCatci_1.getCatciGeneratedFiles)(),
|
|
70
70
|
];
|
|
71
71
|
}
|
|
72
|
-
createImagesPlan() {
|
|
73
|
-
return new jobImagesPlan_1.JobImagesPlan(this.type);
|
|
72
|
+
createImagesPlan(config) {
|
|
73
|
+
return new jobImagesPlan_1.JobImagesPlan(this.type, config.images);
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
76
76
|
* all workflows keyed by file name, mainly for testing purposes
|
|
77
77
|
*/
|
|
78
|
-
async createWorkflows(config, images = this.createImagesPlan(), scripts = new scriptFiles_1.GithubScriptFiles()) {
|
|
78
|
+
async createWorkflows(config, images = this.createImagesPlan(config), scripts = new scriptFiles_1.GithubScriptFiles()) {
|
|
79
79
|
var _a, _b, _c, _d;
|
|
80
80
|
const workflows = {};
|
|
81
81
|
// per-pipeline-type variables (pipelines.github.runnerVariables);
|
|
@@ -196,6 +196,13 @@ class GithubBackend {
|
|
|
196
196
|
manualJobConditions[id] = `inputs.job == '${id}'`;
|
|
197
197
|
manualDispatchOptions.push(id);
|
|
198
198
|
}
|
|
199
|
+
// manual release mode: the workflow that runs a queued release
|
|
200
|
+
// once the main workflow completed green
|
|
201
|
+
const releaseOnGreen = (0, githubReleaseJobs_1.getGithubReleaseOnGreenWorkflow)(config, images, TRIGGER_WORKFLOWS.mainBranch.name, workflowEnv);
|
|
202
|
+
if (releaseOnGreen) {
|
|
203
|
+
workflows[`${GENERATED_FILE_PREFIX}release-on-green.yml`] =
|
|
204
|
+
releaseOnGreen;
|
|
205
|
+
}
|
|
199
206
|
}
|
|
200
207
|
if (Object.keys(jobs).length > 0) {
|
|
201
208
|
workflows[`${GENERATED_FILE_PREFIX}${workflowFileName(trigger)}`] = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GithubBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/GithubBackend.ts"],"names":[],"mappings":";;;AAAA,0CAAkD;AAClD,+BAA4B;AAC5B,gEAA6D;AAE7D,+CAA2D;AAI3D,+CAA6D;AAC7D,oCAA8C;AAC9C,yDAK4B;AAC5B,oEAAiE;AACjE,uDAAuE;AACvE,2DAAkE;AAClE,uCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"GithubBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/GithubBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { JobImagesPlan } from "../../customImages/jobImagesPlan";
|
|
2
2
|
import type { Config } from "../../types";
|
|
3
|
-
import type { GithubJob } from "../../types/github-types";
|
|
3
|
+
import type { GithubJob, GithubWorkflow } from "../../types/github-types";
|
|
4
4
|
/**
|
|
5
5
|
* the release jobs for the github backend (the counterpart of the
|
|
6
6
|
* gitlab release jobs):
|
|
@@ -8,12 +8,28 @@ import type { GithubJob } from "../../types/github-types";
|
|
|
8
8
|
* workflow after all other jobs; a force variant goes to the manual
|
|
9
9
|
* tasks workflow
|
|
10
10
|
* - otherwise (manual, the default): the release job goes to the
|
|
11
|
-
* manual tasks workflow
|
|
11
|
+
* manual tasks workflow. Its queue-check step releases right away on
|
|
12
|
+
* a green main run and otherwise queues the release for the
|
|
13
|
+
* release-on-green workflow (see getGithubReleaseOnGreenWorkflow) —
|
|
14
|
+
* the counterpart of gitlab's queue button + executor pair.
|
|
12
15
|
*/
|
|
13
16
|
export declare const getGithubReleaseJobs: (config: Config, mainWorkflowJobIds: string[], images: JobImagesPlan) => {
|
|
14
17
|
main: Record<string, GithubJob>;
|
|
15
18
|
manual: Record<string, GithubJob>;
|
|
16
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* the release-on-green workflow (manual release mode only): runs on
|
|
22
|
+
* every completed main workflow run. A lightweight host job checks the
|
|
23
|
+
* queue marker (written by the create-release task while the main
|
|
24
|
+
* workflow was still running) — most runs have nothing queued and end
|
|
25
|
+
* after that single quick job. When the marker matches the completed
|
|
26
|
+
* run, the containerized release job creates the release.
|
|
27
|
+
*
|
|
28
|
+
* No image-build jobs here: the release image was ensured by the main
|
|
29
|
+
* workflow run that just completed (same commit, same content-hashed
|
|
30
|
+
* tag).
|
|
31
|
+
*/
|
|
32
|
+
export declare const getGithubReleaseOnGreenWorkflow: (config: Config, images: JobImagesPlan, mainWorkflowName: string, workflowEnv: Record<string, string>) => GithubWorkflow | null;
|
|
17
33
|
/**
|
|
18
34
|
* the informational MR/PR check job of the release method (e.g. the
|
|
19
35
|
* changeset check), added to the mr workflow. continue-on-error keeps
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGithubReleaseCheckJobs = exports.getGithubReleaseJobs = void 0;
|
|
3
|
+
exports.getGithubReleaseCheckJobs = exports.getGithubReleaseOnGreenWorkflow = exports.getGithubReleaseJobs = void 0;
|
|
4
4
|
const createGithubJobs_1 = require("./createGithubJobs");
|
|
5
5
|
const release_1 = require("../../release");
|
|
6
|
-
const
|
|
6
|
+
const shippedCatci_1 = require("../../catci/shippedCatci");
|
|
7
|
+
const CATCI = `${shippedCatci_1.GENERATED_CATCI_FOLDER}/index.js`;
|
|
8
|
+
const createReleaseJob = (config, images, options = {}) => {
|
|
9
|
+
var _a;
|
|
7
10
|
const method = (0, release_1.getReleaseMethod)(config);
|
|
8
11
|
const resolved = images.resolveRef({ catladderImage: method.image });
|
|
9
|
-
const imageNeeds =
|
|
12
|
+
const imageNeeds = !options.skipImageNeeds &&
|
|
13
|
+
resolved.need &&
|
|
14
|
+
typeof resolved.need === "object"
|
|
10
15
|
? [(0, createGithubJobs_1.githubGlobalJobId)(resolved.need.job)]
|
|
11
16
|
: [];
|
|
12
|
-
const allNeeds = [...imageNeeds, ...(needs !== null &&
|
|
17
|
+
const allNeeds = [...imageNeeds, ...((_a = options.needs) !== null && _a !== void 0 ? _a : [])];
|
|
13
18
|
return {
|
|
14
19
|
name: "create release",
|
|
15
20
|
"runs-on": "ubuntu-latest",
|
|
@@ -38,7 +43,7 @@ const createReleaseJob = (config, images, needs, extraEnv) => {
|
|
|
38
43
|
...(allNeeds.length > 0 ? { needs: allNeeds } : {}),
|
|
39
44
|
env: {
|
|
40
45
|
GITHUB_TOKEN: "${{ github.token }}",
|
|
41
|
-
...extraEnv,
|
|
46
|
+
...options.extraEnv,
|
|
42
47
|
},
|
|
43
48
|
steps: [
|
|
44
49
|
{
|
|
@@ -48,8 +53,21 @@ const createReleaseJob = (config, images, needs, extraEnv) => {
|
|
|
48
53
|
// tags since the last release) to determine the version
|
|
49
54
|
with: { "fetch-depth": 0 },
|
|
50
55
|
},
|
|
56
|
+
...(options.queueCheck
|
|
57
|
+
? [
|
|
58
|
+
{
|
|
59
|
+
name: "check main workflow",
|
|
60
|
+
id: "queue",
|
|
61
|
+
run: `node ${CATCI} release github-queue-check`,
|
|
62
|
+
shell: "bash",
|
|
63
|
+
},
|
|
64
|
+
]
|
|
65
|
+
: []),
|
|
51
66
|
{
|
|
52
67
|
name: "create release",
|
|
68
|
+
...(options.queueCheck
|
|
69
|
+
? { if: "steps.queue.outputs.queued != 'true'" }
|
|
70
|
+
: {}),
|
|
53
71
|
run: method.script,
|
|
54
72
|
shell: "bash",
|
|
55
73
|
},
|
|
@@ -63,7 +81,10 @@ const createReleaseJob = (config, images, needs, extraEnv) => {
|
|
|
63
81
|
* workflow after all other jobs; a force variant goes to the manual
|
|
64
82
|
* tasks workflow
|
|
65
83
|
* - otherwise (manual, the default): the release job goes to the
|
|
66
|
-
* manual tasks workflow
|
|
84
|
+
* manual tasks workflow. Its queue-check step releases right away on
|
|
85
|
+
* a green main run and otherwise queues the release for the
|
|
86
|
+
* release-on-green workflow (see getGithubReleaseOnGreenWorkflow) —
|
|
87
|
+
* the counterpart of gitlab's queue button + executor pair.
|
|
67
88
|
*/
|
|
68
89
|
const getGithubReleaseJobs = (config, mainWorkflowJobIds, images) => {
|
|
69
90
|
var _a;
|
|
@@ -71,28 +92,89 @@ const getGithubReleaseJobs = (config, mainWorkflowJobIds, images) => {
|
|
|
71
92
|
if (((_a = config.releases) === null || _a === void 0 ? void 0 : _a.when) === "auto") {
|
|
72
93
|
return {
|
|
73
94
|
main: {
|
|
74
|
-
"create-release": createReleaseJob(config, images,
|
|
95
|
+
"create-release": createReleaseJob(config, images, {
|
|
96
|
+
needs: mainWorkflowJobIds,
|
|
97
|
+
}),
|
|
75
98
|
},
|
|
76
99
|
manual: {
|
|
77
|
-
"force-create-release": createReleaseJob(config, images,
|
|
100
|
+
"force-create-release": createReleaseJob(config, images, {
|
|
101
|
+
extraEnv: method.forceReleaseVariables,
|
|
102
|
+
}),
|
|
78
103
|
},
|
|
79
104
|
};
|
|
80
105
|
}
|
|
81
106
|
return {
|
|
82
107
|
main: {},
|
|
83
108
|
manual: {
|
|
84
|
-
"create-release": createReleaseJob(config, images),
|
|
109
|
+
"create-release": createReleaseJob(config, images, { queueCheck: true }),
|
|
85
110
|
// an explicit force option wherever the method distinguishes it
|
|
86
111
|
// (e.g. changesets: release a patch bump without changesets)
|
|
87
112
|
...(method.forceReleaseVariables
|
|
88
113
|
? {
|
|
89
|
-
"force-create-release": createReleaseJob(config, images,
|
|
114
|
+
"force-create-release": createReleaseJob(config, images, {
|
|
115
|
+
extraEnv: method.forceReleaseVariables,
|
|
116
|
+
}),
|
|
90
117
|
}
|
|
91
118
|
: {}),
|
|
92
119
|
},
|
|
93
120
|
};
|
|
94
121
|
};
|
|
95
122
|
exports.getGithubReleaseJobs = getGithubReleaseJobs;
|
|
123
|
+
/**
|
|
124
|
+
* the release-on-green workflow (manual release mode only): runs on
|
|
125
|
+
* every completed main workflow run. A lightweight host job checks the
|
|
126
|
+
* queue marker (written by the create-release task while the main
|
|
127
|
+
* workflow was still running) — most runs have nothing queued and end
|
|
128
|
+
* after that single quick job. When the marker matches the completed
|
|
129
|
+
* run, the containerized release job creates the release.
|
|
130
|
+
*
|
|
131
|
+
* No image-build jobs here: the release image was ensured by the main
|
|
132
|
+
* workflow run that just completed (same commit, same content-hashed
|
|
133
|
+
* tag).
|
|
134
|
+
*/
|
|
135
|
+
const getGithubReleaseOnGreenWorkflow = (config, images, mainWorkflowName, workflowEnv) => {
|
|
136
|
+
var _a;
|
|
137
|
+
if (((_a = config.releases) === null || _a === void 0 ? void 0 : _a.when) === "auto") {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
name: "catladder release on green",
|
|
142
|
+
on: {
|
|
143
|
+
workflow_run: {
|
|
144
|
+
workflows: [mainWorkflowName],
|
|
145
|
+
types: ["completed"],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
env: workflowEnv,
|
|
149
|
+
jobs: {
|
|
150
|
+
guard: {
|
|
151
|
+
name: "check queued release",
|
|
152
|
+
"runs-on": "ubuntu-latest",
|
|
153
|
+
// consuming the queue marker is a ref deletion
|
|
154
|
+
permissions: { contents: "write" },
|
|
155
|
+
env: { GITHUB_TOKEN: "${{ github.token }}" },
|
|
156
|
+
outputs: { release: "${{ steps.guard.outputs.release }}" },
|
|
157
|
+
steps: [
|
|
158
|
+
{ name: "Checkout", uses: "actions/checkout@v4" },
|
|
159
|
+
{
|
|
160
|
+
name: "check queued release",
|
|
161
|
+
id: "guard",
|
|
162
|
+
run: `node ${CATCI} release github-queued-guard "\${{ github.event.workflow_run.head_sha }}" "\${{ github.event.workflow_run.conclusion }}"`,
|
|
163
|
+
shell: "bash",
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
"create-release": {
|
|
168
|
+
...createReleaseJob(config, images, {
|
|
169
|
+
needs: ["guard"],
|
|
170
|
+
skipImageNeeds: true,
|
|
171
|
+
}),
|
|
172
|
+
if: "${{ needs.guard.outputs.release == 'true' }}",
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
exports.getGithubReleaseOnGreenWorkflow = getGithubReleaseOnGreenWorkflow;
|
|
96
178
|
/**
|
|
97
179
|
* the informational MR/PR check job of the release method (e.g. the
|
|
98
180
|
* changeset check), added to the mr workflow. continue-on-error keeps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubReleaseJobs.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/githubReleaseJobs.ts"],"names":[],"mappings":";;;AACA,yDAAuD;AACvD,2CAAiD;
|
|
1
|
+
{"version":3,"file":"githubReleaseJobs.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/githubReleaseJobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ const config_1 = require("../../types/config");
|
|
|
7
7
|
const createAllJobs_1 = require("../../pipeline/createAllJobs");
|
|
8
8
|
const jobImagesPlan_1 = require("../../customImages/jobImagesPlan");
|
|
9
9
|
const shippedCatci_1 = require("../../catci/shippedCatci");
|
|
10
|
+
const release_1 = require("../../release");
|
|
10
11
|
const index_1 = require("../index");
|
|
11
12
|
const createGitlabJobs_1 = require("./createGitlabJobs");
|
|
12
13
|
const createGitlabPipeline_1 = require("./createGitlabPipeline");
|
|
@@ -24,7 +25,7 @@ class GitlabBackend {
|
|
|
24
25
|
await (0, promises_1.rm)(this.generatedFolder, { force: true, recursive: true });
|
|
25
26
|
}
|
|
26
27
|
async createFiles(config) {
|
|
27
|
-
const images = this.createImagesPlan();
|
|
28
|
+
const images = this.createImagesPlan(config);
|
|
28
29
|
const includes = await this.createIncludes(config, images);
|
|
29
30
|
const mainFile = {
|
|
30
31
|
path: ".gitlab-ci.yml",
|
|
@@ -41,15 +42,15 @@ class GitlabBackend {
|
|
|
41
42
|
...(0, shippedCatci_1.getCatciGeneratedFiles)(),
|
|
42
43
|
];
|
|
43
44
|
}
|
|
44
|
-
createImagesPlan() {
|
|
45
|
-
return new jobImagesPlan_1.JobImagesPlan(this.type);
|
|
45
|
+
createImagesPlan(config) {
|
|
46
|
+
return new jobImagesPlan_1.JobImagesPlan(this.type, config.images);
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
48
49
|
* the complete pipeline as one object (all includes merged into one),
|
|
49
50
|
* mainly for testing purposes
|
|
50
51
|
*/
|
|
51
52
|
async createCompletePipeline(config) {
|
|
52
|
-
const includes = await this.createIncludes(config, this.createImagesPlan());
|
|
53
|
+
const includes = await this.createIncludes(config, this.createImagesPlan(config));
|
|
53
54
|
return includes.reduce((acc, { content }) => {
|
|
54
55
|
return {
|
|
55
56
|
...acc,
|
|
@@ -93,12 +94,29 @@ class GitlabBackend {
|
|
|
93
94
|
}
|
|
94
95
|
async createPipeline(config, images) {
|
|
95
96
|
const stages = (0, getPipelineStages_1.getPipelineStages)(config);
|
|
96
|
-
// release
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
|
|
97
|
+
// register the release image first: the per-trigger job creation
|
|
98
|
+
// below emits the build jobs of all images registered so far. The
|
|
99
|
+
// release jobs themselves are created afterwards — they need the
|
|
100
|
+
// main-branch job list for the queued-release executor's needs.
|
|
101
|
+
images.resolveRef({ catladderImage: (0, release_1.getReleaseMethod)(config).image });
|
|
100
102
|
// for all triggers create jobs and add base rules
|
|
101
|
-
const
|
|
103
|
+
const jobsPerTrigger = await Promise.all(config_1.ALL_PIPELINE_TRIGGERS.map(async (trigger) => ({
|
|
104
|
+
trigger,
|
|
105
|
+
jobs: await (0, createGitlabJobs_1.createGitlabJobs)(await (0, createAllJobs_1.createAllJobs)({ config, trigger, pipelineType: this.type }), images, getGitlabRulesForTrigger(trigger)),
|
|
106
|
+
})));
|
|
107
|
+
const allJobsPerTrigger = jobsPerTrigger.flatMap(({ jobs }) => jobs);
|
|
108
|
+
// the jobs the queued-release executor waits for: everything that
|
|
109
|
+
// runs automatically in a main-branch pipeline. Manual jobs (stop,
|
|
110
|
+
// rollback, gates) are excluded — gitlab skips a job whose needs
|
|
111
|
+
// include an unplayed manual job.
|
|
112
|
+
const mainBranchJobNames = [
|
|
113
|
+
...new Set(jobsPerTrigger
|
|
114
|
+
.filter(({ trigger }) => trigger === "mainBranch")
|
|
115
|
+
.flatMap(({ jobs }) => jobs)
|
|
116
|
+
.filter(({ gitlabJob }) => !isManualGitlabJob(gitlabJob))
|
|
117
|
+
.map(({ name }) => name)),
|
|
118
|
+
];
|
|
119
|
+
const releaseJobs = (0, gitlabReleaseJobs_1.getGitlabReleaseJobs)(config, images, mainBranchJobNames);
|
|
102
120
|
const allWorkspaceJobs = allJobsPerTrigger
|
|
103
121
|
.filter((j) => { var _a; return ((_a = j.context) === null || _a === void 0 ? void 0 : _a.type) === "workspace"; }) // sort by componentName in the same order as they appear in the config
|
|
104
122
|
// this is purely for better readability in git diffs when you add new components
|
|
@@ -164,6 +182,14 @@ class GitlabBackend {
|
|
|
164
182
|
}
|
|
165
183
|
}
|
|
166
184
|
exports.GitlabBackend = GitlabBackend;
|
|
185
|
+
/**
|
|
186
|
+
* whether a job can end up waiting for a human in a main-branch
|
|
187
|
+
* pipeline (catladder expresses manual-ness only through rules)
|
|
188
|
+
*/
|
|
189
|
+
function isManualGitlabJob(job) {
|
|
190
|
+
var _a;
|
|
191
|
+
return ((_a = job.rules) !== null && _a !== void 0 ? _a : []).some((rule) => rule.when === "manual");
|
|
192
|
+
}
|
|
167
193
|
function getGitlabRulesForTrigger(trigger) {
|
|
168
194
|
// mainBranch: on push to main branch except it's a release commit
|
|
169
195
|
// mr: on merge request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitlabBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/gitlab/GitlabBackend.ts"],"names":[],"mappings":";;;AAAA,0CAAiC;AACjC,uCAKqB;AAUrB,+CAA2D;AAC3D,gEAA6D;AAC7D,oEAAiE;AACjE,2DAAkE;
|
|
1
|
+
{"version":3,"file":"GitlabBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/gitlab/GitlabBackend.ts"],"names":[],"mappings":"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"}
|