@catladder/cli 0.0.0-next-401fe684 → 0.0.0-next-23a53e9e
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/bundles/catci/index.js +4 -4
- package/dist/bundles/catenv/index.js +62 -14
- package/dist/bundles/cli/index.js +62 -14
- package/dist/bundles/runner-images/changesets/Dockerfile +13 -0
- package/dist/bundles/runner-images/changesets/scripts/changesetsRelease +37 -0
- package/dist/bundles/runner-images/semantic-release/Dockerfile +4 -0
- package/dist/bundles/runner-images/semantic-release/scripts/semanticRelease +43 -4
- package/dist/cli/src/catci.js +16 -0
- package/dist/cli/src/catci.js.map +1 -1
- package/dist/cli/src/release/changesets.d.ts +44 -0
- package/dist/cli/src/release/changesets.js +124 -0
- package/dist/cli/src/release/changesets.js.map +1 -0
- package/dist/cli/src/release/changesetsReleaseJob.d.ts +9 -0
- package/dist/cli/src/release/changesetsReleaseJob.js +160 -0
- package/dist/cli/src/release/changesetsReleaseJob.js.map +1 -0
- package/dist/pipeline/src/backends/github/GithubBackend.js +5 -1
- package/dist/pipeline/src/backends/github/GithubBackend.js.map +1 -1
- package/dist/pipeline/src/backends/github/githubReleaseJobs.js +21 -9
- package/dist/pipeline/src/backends/github/githubReleaseJobs.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/gitlabReleaseJobs.js +5 -3
- package/dist/pipeline/src/backends/gitlab/gitlabReleaseJobs.js.map +1 -1
- package/dist/pipeline/src/constants.js +1 -1
- package/dist/pipeline/src/customImages/shippedImages.js +1 -0
- package/dist/pipeline/src/customImages/shippedImages.js.map +1 -1
- package/dist/pipeline/src/index.d.ts +1 -0
- package/dist/pipeline/src/index.js +1 -0
- package/dist/pipeline/src/index.js.map +1 -1
- package/dist/pipeline/src/release/index.d.ts +23 -0
- package/dist/pipeline/src/release/index.js +21 -0
- package/dist/pipeline/src/release/index.js.map +1 -0
- package/dist/pipeline/src/runner/index.d.ts +1 -1
- package/dist/pipeline/src/runner/index.js.map +1 -1
- package/dist/pipeline/src/types/release.d.ts +18 -0
- package/dist/runner-images/changesets/Dockerfile +13 -0
- package/dist/runner-images/changesets/scripts/changesetsRelease +37 -0
- package/dist/runner-images/semantic-release/Dockerfile +4 -0
- package/dist/runner-images/semantic-release/scripts/semanticRelease +43 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/src/catci.ts +23 -0
- package/src/release/__tests__/changesets.test.ts +168 -0
- package/src/release/changesets.ts +156 -0
- package/src/release/changesetsReleaseJob.ts +213 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __importDefault = this && this.__importDefault || function (mod) {
|
|
4
|
+
return mod && mod.__esModule ? mod : {
|
|
5
|
+
"default": mod
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
exports.prependToChangelog = exports.renderChangelogEntries = exports.getNextVersion = exports.maxBump = exports.parseChangesetFile = exports.BUMPS = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* pure logic of the changesets release method (used by catci in CI):
|
|
14
|
+
* parsing `.changeset/*.md` files, computing the next version from the
|
|
15
|
+
* last release tag and rendering the changelog.
|
|
16
|
+
*
|
|
17
|
+
* Parsing uses the official `@changesets/parse` (the reference
|
|
18
|
+
* implementation of the format), so anything `yarn changeset` writes is
|
|
19
|
+
* read exactly — including quoted values, YAML comments and `none`
|
|
20
|
+
* markers. Unlike the official tooling, versions are NOT read from
|
|
21
|
+
* package.json: catladder projects are applications whose version lives
|
|
22
|
+
* in git tags (`vX.Y.Z`), and some have no root package.json at all —
|
|
23
|
+
* so the package names in the frontmatter are ignored and only the
|
|
24
|
+
* highest bump counts.
|
|
25
|
+
*/
|
|
26
|
+
const parse_1 = __importDefault(require("@changesets/parse"));
|
|
27
|
+
exports.BUMPS = ["patch", "minor", "major"];
|
|
28
|
+
const isBump = type => exports.BUMPS.includes(type);
|
|
29
|
+
/**
|
|
30
|
+
* parses one changeset markdown file (official changesets format):
|
|
31
|
+
*
|
|
32
|
+
* ```
|
|
33
|
+
* ---
|
|
34
|
+
* "some-package": minor
|
|
35
|
+
* ---
|
|
36
|
+
*
|
|
37
|
+
* human-written summary
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* The frontmatter is parsed by `@changesets/parse` (real YAML), then
|
|
41
|
+
* reduced to a single effective bump: `none` releases are dropped
|
|
42
|
+
* (they intentionally request no version change) and the highest of the
|
|
43
|
+
* rest wins. Throws on files that aren't valid changesets — a malformed
|
|
44
|
+
* file in `.changeset/` is a mistake worth failing the release over,
|
|
45
|
+
* not skipping silently.
|
|
46
|
+
*/
|
|
47
|
+
const parseChangesetFile = (fileName, content) => {
|
|
48
|
+
let parsed;
|
|
49
|
+
try {
|
|
50
|
+
parsed = (0, parse_1.default)(content);
|
|
51
|
+
} catch (error) {
|
|
52
|
+
throw new Error(`${fileName}: not a valid changeset (${error instanceof Error ? error.message : error})`);
|
|
53
|
+
}
|
|
54
|
+
// ignore `none` — it explicitly requests no release for that package
|
|
55
|
+
const bumps = parsed.releases.map(release => release.type).filter(isBump);
|
|
56
|
+
if (bumps.length === 0) {
|
|
57
|
+
throw new Error(`${fileName}: changeset declares no effective version bump (major|minor|patch)`);
|
|
58
|
+
}
|
|
59
|
+
const summary = parsed.summary.trim();
|
|
60
|
+
if (summary === "") {
|
|
61
|
+
throw new Error(`${fileName}: changeset has no summary`);
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
fileName,
|
|
65
|
+
bump: (0, exports.maxBump)(bumps),
|
|
66
|
+
summary
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.parseChangesetFile = parseChangesetFile;
|
|
70
|
+
const maxBump = bumps => bumps.reduce((max, bump) => exports.BUMPS.indexOf(bump) > exports.BUMPS.indexOf(max) ? bump : max);
|
|
71
|
+
exports.maxBump = maxBump;
|
|
72
|
+
/**
|
|
73
|
+
* the next version, derived from the last release tag (like
|
|
74
|
+
* semantic-release does). No previous tag → first release 1.0.0
|
|
75
|
+
* (matching semantic-release's first release).
|
|
76
|
+
*/
|
|
77
|
+
const getNextVersion = (lastTag, bump) => {
|
|
78
|
+
if (lastTag === null) {
|
|
79
|
+
return "1.0.0";
|
|
80
|
+
}
|
|
81
|
+
const match = lastTag.match(/^v(\d+)\.(\d+)\.(\d+)$/);
|
|
82
|
+
if (!match) {
|
|
83
|
+
throw new Error(`last release tag "${lastTag}" is not of the form vX.Y.Z — cannot derive the next version`);
|
|
84
|
+
}
|
|
85
|
+
const [major, minor, patch] = match.slice(1).map(Number);
|
|
86
|
+
switch (bump) {
|
|
87
|
+
case "major":
|
|
88
|
+
return `${major + 1}.0.0`;
|
|
89
|
+
case "minor":
|
|
90
|
+
return `${major}.${minor + 1}.0`;
|
|
91
|
+
case "patch":
|
|
92
|
+
return `${major}.${minor}.${patch + 1}`;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
exports.getNextVersion = getNextVersion;
|
|
96
|
+
const BUMP_HEADINGS = {
|
|
97
|
+
major: "Major Changes",
|
|
98
|
+
minor: "Minor Changes",
|
|
99
|
+
patch: "Patch Changes"
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* the changelog entries for one release, grouped by bump level
|
|
103
|
+
* (mirroring the official changesets changelog layout), without the
|
|
104
|
+
* version heading — also used as the release commit body
|
|
105
|
+
*/
|
|
106
|
+
const renderChangelogEntries = changesets => [...exports.BUMPS].reverse().map(bump => {
|
|
107
|
+
const entries = changesets.filter(changeset => changeset.bump === bump);
|
|
108
|
+
if (entries.length === 0) return null;
|
|
109
|
+
return [`### ${BUMP_HEADINGS[bump]}`, "", ...entries.map(
|
|
110
|
+
// indent multi-line summaries so they stay part of the bullet
|
|
111
|
+
entry => `- ${entry.summary.replace(/\r?\n/g, "\n ")}`)].join("\n");
|
|
112
|
+
}).filter(section => section !== null).join("\n\n");
|
|
113
|
+
exports.renderChangelogEntries = renderChangelogEntries;
|
|
114
|
+
const CHANGELOG_HEADER = "# Changelog";
|
|
115
|
+
/**
|
|
116
|
+
* prepends the release section to the changelog, keeping the
|
|
117
|
+
* `# Changelog` header on top
|
|
118
|
+
*/
|
|
119
|
+
const prependToChangelog = (existingContent, version, date, entries) => {
|
|
120
|
+
const section = `## ${version} (${date})\n\n${entries}\n`;
|
|
121
|
+
const previous = (existingContent !== null && existingContent !== void 0 ? existingContent : "").replace(new RegExp(`^${CHANGELOG_HEADER}\\s*\\n`), "").trim();
|
|
122
|
+
return [CHANGELOG_HEADER, "", section + (previous ? "\n" + previous + "\n" : "")].join("\n");
|
|
123
|
+
};
|
|
124
|
+
exports.prependToChangelog = prependToChangelog;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changesets.js","sourceRoot":"","sources":["../../../../src/release/changesets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tags pushed with the default GITHUB_TOKEN do not trigger `on: push:
|
|
3
|
+
* tags` workflows (github's recursion guard), so the taggedRelease
|
|
4
|
+
* workflow is dispatched explicitly for the new tag
|
|
5
|
+
* (`permissions: actions: write`; workflow_dispatch created BY the
|
|
6
|
+
* token does run)
|
|
7
|
+
*/
|
|
8
|
+
export declare const dispatchTaggedReleaseWorkflow: (tag: string) => Promise<void>;
|
|
9
|
+
export declare const changesetsReleaseJob: () => Promise<void>;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.changesetsReleaseJob = exports.dispatchTaggedReleaseWorkflow = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* the changesets release CI job (run by catci via the
|
|
9
|
+
* `changesetsRelease` script of the `changesets` job image):
|
|
10
|
+
* consumes pending `.changeset/*.md` files, bumps the version derived
|
|
11
|
+
* from the last `v*` tag, writes the changelog, commits, tags and
|
|
12
|
+
* pushes — the pushed tag triggers the taggedRelease pipeline.
|
|
13
|
+
*/
|
|
14
|
+
const child_process_1 = require("child_process");
|
|
15
|
+
const promises_1 = require("fs/promises");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const util_1 = require("util");
|
|
18
|
+
const changesets_1 = require("./changesets");
|
|
19
|
+
const execFile = (0, util_1.promisify)(child_process_1.execFile);
|
|
20
|
+
const CHANGESET_DIR = ".changeset";
|
|
21
|
+
const CHANGELOG_FILE = "CHANGELOG.md";
|
|
22
|
+
/**
|
|
23
|
+
* the generated taggedRelease workflow (dispatched after the tag push,
|
|
24
|
+
* see dispatchTaggedReleaseWorkflow). Keep in sync with
|
|
25
|
+
* `workflowFileName` in pipeline/src/backends/github/GithubBackend.ts.
|
|
26
|
+
*/
|
|
27
|
+
const GITHUB_TAGGED_RELEASE_WORKFLOW = "catladder-release.yml";
|
|
28
|
+
const git = async (...args) => {
|
|
29
|
+
const {
|
|
30
|
+
stdout
|
|
31
|
+
} = await execFile("git", args);
|
|
32
|
+
return stdout.trim();
|
|
33
|
+
};
|
|
34
|
+
const readPendingChangesets = async () => {
|
|
35
|
+
const entries = await (0, promises_1.readdir)(CHANGESET_DIR).catch(() => []);
|
|
36
|
+
const files = entries.filter(file => file.endsWith(".md") && file.toLowerCase() !== "readme.md");
|
|
37
|
+
return Promise.all(files.map(async file => (0, changesets_1.parseChangesetFile)(file, await (0, promises_1.readFile)((0, path_1.join)(CHANGESET_DIR, file), "utf-8"))));
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* CI checkouts are usually shallow and tagless (gitlab clones with
|
|
41
|
+
* depth 1; github's checkout needs fetch-depth: 0) — the local history
|
|
42
|
+
* then cannot answer "nearest v* tag" and the job would rederive the
|
|
43
|
+
* FIRST release version. Deepen and fetch tags before deriving.
|
|
44
|
+
*/
|
|
45
|
+
const ensureReleaseHistory = async () => {
|
|
46
|
+
const shallow = await git("rev-parse", "--is-shallow-repository").catch(() => "false");
|
|
47
|
+
try {
|
|
48
|
+
if (shallow === "true") {
|
|
49
|
+
await git("fetch", "--quiet", "--unshallow", "--tags", "origin");
|
|
50
|
+
} else {
|
|
51
|
+
await git("fetch", "--quiet", "--tags", "origin");
|
|
52
|
+
}
|
|
53
|
+
} catch (e) {
|
|
54
|
+
console.warn(`could not fetch tags from origin (${e}) — version derivation may be wrong on a shallow clone`);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const getLastReleaseTag = async () => {
|
|
58
|
+
try {
|
|
59
|
+
// the nearest v* tag in the history of HEAD — on hotfix branches
|
|
60
|
+
// this is deliberately the branch's own release line, not the
|
|
61
|
+
// globally highest version
|
|
62
|
+
return await git("describe", "--tags", "--abbrev=0", "--match", "v[0-9]*");
|
|
63
|
+
} catch (_a) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const ensureGitIdentity = async () => {
|
|
68
|
+
const email = await git("config", "user.email").catch(() => "");
|
|
69
|
+
if (email !== "") return;
|
|
70
|
+
const onGithub = process.env.GITHUB_ACTIONS === "true";
|
|
71
|
+
await git("config", "user.name", onGithub ? "github-actions[bot]" : "catladder");
|
|
72
|
+
await git("config", "user.email", onGithub ? "41898282+github-actions[bot]@users.noreply.github.com" : "catladder-release@panter.ch");
|
|
73
|
+
};
|
|
74
|
+
const requireEnv = name => {
|
|
75
|
+
const value = process.env[name];
|
|
76
|
+
if (!value) {
|
|
77
|
+
throw new Error(`${name} is not set — cannot push the release`);
|
|
78
|
+
}
|
|
79
|
+
return value;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* pushes the release commit and tag.
|
|
83
|
+
* - gitlab: CI checkouts have a read-only origin, so push via an
|
|
84
|
+
* authenticated url with GL_TOKEN (the same project access token
|
|
85
|
+
* semantic-release uses)
|
|
86
|
+
* - github: actions/checkout persists the job token credentials, so a
|
|
87
|
+
* plain push to origin works (`permissions: contents: write`)
|
|
88
|
+
*/
|
|
89
|
+
const pushCommitAndTag = async tag => {
|
|
90
|
+
// --atomic: all refs or none — a rejected tag must not leave the
|
|
91
|
+
// release commit half-pushed (observed when a stale local view
|
|
92
|
+
// rederived an existing version)
|
|
93
|
+
if (process.env.GITHUB_ACTIONS === "true") {
|
|
94
|
+
const branch = requireEnv("GITHUB_REF_NAME");
|
|
95
|
+
await git("push", "--atomic", "origin", `HEAD:refs/heads/${branch}`, tag);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const token = requireEnv("GL_TOKEN");
|
|
99
|
+
const host = requireEnv("CI_SERVER_HOST");
|
|
100
|
+
const projectPath = requireEnv("CI_PROJECT_PATH");
|
|
101
|
+
const branch = requireEnv("CI_COMMIT_BRANCH");
|
|
102
|
+
const remote = `https://oauth2:${token}@${host}/${projectPath}.git`;
|
|
103
|
+
await git("push", "--atomic", remote, `HEAD:refs/heads/${branch}`, tag);
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* tags pushed with the default GITHUB_TOKEN do not trigger `on: push:
|
|
107
|
+
* tags` workflows (github's recursion guard), so the taggedRelease
|
|
108
|
+
* workflow is dispatched explicitly for the new tag
|
|
109
|
+
* (`permissions: actions: write`; workflow_dispatch created BY the
|
|
110
|
+
* token does run)
|
|
111
|
+
*/
|
|
112
|
+
const dispatchTaggedReleaseWorkflow = async tag => {
|
|
113
|
+
var _a;
|
|
114
|
+
const apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : "https://api.github.com";
|
|
115
|
+
const repository = requireEnv("GITHUB_REPOSITORY");
|
|
116
|
+
const token = requireEnv("GITHUB_TOKEN");
|
|
117
|
+
const response = await fetch(`${apiUrl}/repos/${repository}/actions/workflows/${GITHUB_TAGGED_RELEASE_WORKFLOW}/dispatches`, {
|
|
118
|
+
method: "POST",
|
|
119
|
+
headers: {
|
|
120
|
+
authorization: `Bearer ${token}`,
|
|
121
|
+
accept: "application/vnd.github+json"
|
|
122
|
+
},
|
|
123
|
+
body: JSON.stringify({
|
|
124
|
+
ref: tag
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
if (!response.ok) {
|
|
128
|
+
throw new Error(`dispatching ${GITHUB_TAGGED_RELEASE_WORKFLOW} for ${tag} failed: ${response.status} ${await response.text()}`);
|
|
129
|
+
}
|
|
130
|
+
console.log(`dispatched ${GITHUB_TAGGED_RELEASE_WORKFLOW} for ${tag}`);
|
|
131
|
+
};
|
|
132
|
+
exports.dispatchTaggedReleaseWorkflow = dispatchTaggedReleaseWorkflow;
|
|
133
|
+
const changesetsReleaseJob = async () => {
|
|
134
|
+
const changesets = await readPendingChangesets();
|
|
135
|
+
if (changesets.length === 0) {
|
|
136
|
+
console.log(`no changesets found in ${CHANGESET_DIR}/ — nothing to release`);
|
|
137
|
+
console.log("add one with `yarn changeset` (or write .changeset/<name>.md by hand) and merge it to release");
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
await ensureReleaseHistory();
|
|
141
|
+
const lastTag = await getLastReleaseTag();
|
|
142
|
+
const version = (0, changesets_1.getNextVersion)(lastTag, (0, changesets_1.maxBump)(changesets.map(c => c.bump)));
|
|
143
|
+
const tag = `v${version}`;
|
|
144
|
+
console.log(`releasing ${tag} (${lastTag !== null && lastTag !== void 0 ? lastTag : "first release"} + ${changesets.length} changeset(s))`);
|
|
145
|
+
const entries = (0, changesets_1.renderChangelogEntries)(changesets);
|
|
146
|
+
const existingChangelog = await (0, promises_1.readFile)(CHANGELOG_FILE, "utf-8").catch(() => null);
|
|
147
|
+
const date = new Date().toISOString().slice(0, 10);
|
|
148
|
+
await (0, promises_1.writeFile)(CHANGELOG_FILE, (0, changesets_1.prependToChangelog)(existingChangelog, version, date, entries));
|
|
149
|
+
await Promise.all(changesets.map(changeset => (0, promises_1.rm)((0, path_1.join)(CHANGESET_DIR, changeset.fileName))));
|
|
150
|
+
await ensureGitIdentity();
|
|
151
|
+
await git("add", CHANGELOG_FILE, CHANGESET_DIR);
|
|
152
|
+
await git("commit", "-m", `chore(release): ${version}\n\n${entries}`);
|
|
153
|
+
await git("tag", tag);
|
|
154
|
+
await pushCommitAndTag(tag);
|
|
155
|
+
console.log(`released ${tag}`);
|
|
156
|
+
if (process.env.GITHUB_ACTIONS === "true") {
|
|
157
|
+
await (0, exports.dispatchTaggedReleaseWorkflow)(tag);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
exports.changesetsReleaseJob = changesetsReleaseJob;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changesetsReleaseJob.js","sourceRoot":"","sources":["../../../../src/release/changesetsReleaseJob.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,10 +47,14 @@ const TRIGGER_WORKFLOWS = {
|
|
|
47
47
|
},
|
|
48
48
|
taggedRelease: {
|
|
49
49
|
name: "catladder release",
|
|
50
|
+
// tags pushed with the default GITHUB_TOKEN (as the release job
|
|
51
|
+
// does) don't trigger `on: push: tags` — the release job therefore
|
|
52
|
+
// also dispatches this workflow explicitly for the new tag
|
|
50
53
|
on: {
|
|
51
54
|
push: {
|
|
52
55
|
tags: ["v*"]
|
|
53
|
-
}
|
|
56
|
+
},
|
|
57
|
+
workflow_dispatch: {}
|
|
54
58
|
}
|
|
55
59
|
}
|
|
56
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GithubBackend.js","sourceRoot":"","sources":["../../../../../../pipeline/src/backends/github/GithubBackend.ts"],"names":[],"mappings":";;;AAAA,0CAAkD;AAClD,+BAA4B;AAC5B,gEAA6D;AAE7D,+CAA2D;AAI3D,+CAA6D;AAC7D,oCAA8C;AAC9C,yDAK4B;AAC5B,oEAG0C;AAC1C,uDAAuE;AACvE,2DAAkE;AAClE,uCAAqC;AACrC,2DAA2D;AAC3D,+CAAyE;AAEzE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C;;;GAGG;AACH,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAE3C,MAAM,iBAAiB,GAGnB;IACF,EAAE,EAAE;QACF,IAAI,EAAE,kBAAkB;QACxB,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE;QACtE,WAAW,EAAE;YACX,KAAK,EAAE,6CAA6C;YACpD,oBAAoB,EAAE,IAAI;SAC3B;KACF;IACD,UAAU,EAAE;QACV,IAAI,EAAE,gBAAgB;QACtB,6CAA6C;QAC7C,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;KACrC;IACD,aAAa,EAAE;QACb,IAAI,EAAE,mBAAmB;QACzB,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"GithubBackend.js","sourceRoot":"","sources":["../../../../../../pipeline/src/backends/github/GithubBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getGithubReleaseJobs = void 0;
|
|
7
7
|
const createGithubJobs_1 = require("./createGithubJobs");
|
|
8
|
-
const
|
|
8
|
+
const release_1 = require("../../release");
|
|
9
|
+
const createReleaseJob = (config, images, needs) => {
|
|
10
|
+
const method = (0, release_1.getReleaseMethod)(config);
|
|
9
11
|
const resolved = images.resolveRef({
|
|
10
|
-
catladderImage:
|
|
12
|
+
catladderImage: method.image
|
|
11
13
|
});
|
|
12
14
|
const imageNeeds = resolved.need && typeof resolved.need === "object" ? [(0, createGithubJobs_1.githubGlobalJobId)(resolved.need.job)] : [];
|
|
13
15
|
const allNeeds = [...imageNeeds, ...(needs !== null && needs !== void 0 ? needs : [])];
|
|
@@ -23,9 +25,18 @@ const createReleaseJob = (images, needs) => {
|
|
|
23
25
|
}
|
|
24
26
|
} : {})
|
|
25
27
|
},
|
|
26
|
-
//
|
|
28
|
+
// the release method pushes the version tag and release commit,
|
|
29
|
+
// and dispatches the taggedRelease workflow for the new tag (tags
|
|
30
|
+
// pushed with the job token don't trigger `on: push: tags`).
|
|
31
|
+
// Declaring permissions drops all default token grants, so the
|
|
32
|
+
// packages read access (needed to pull the job image from the repo
|
|
33
|
+
// registry) must be re-granted explicitly.
|
|
27
34
|
permissions: {
|
|
28
|
-
contents: "write"
|
|
35
|
+
contents: "write",
|
|
36
|
+
actions: "write",
|
|
37
|
+
...(resolved.fromRepoRegistry ? {
|
|
38
|
+
packages: "read"
|
|
39
|
+
} : {})
|
|
29
40
|
},
|
|
30
41
|
...(allNeeds.length > 0 ? {
|
|
31
42
|
needs: allNeeds
|
|
@@ -36,13 +47,14 @@ const createReleaseJob = (images, needs) => {
|
|
|
36
47
|
steps: [{
|
|
37
48
|
name: "Checkout",
|
|
38
49
|
uses: "actions/checkout@v4",
|
|
39
|
-
//
|
|
50
|
+
// the release method needs the full history (commits resp.
|
|
51
|
+
// tags since the last release) to determine the version
|
|
40
52
|
with: {
|
|
41
53
|
"fetch-depth": 0
|
|
42
54
|
}
|
|
43
55
|
}, {
|
|
44
56
|
name: "create release",
|
|
45
|
-
run:
|
|
57
|
+
run: method.script,
|
|
46
58
|
shell: "bash"
|
|
47
59
|
}]
|
|
48
60
|
};
|
|
@@ -61,17 +73,17 @@ const getGithubReleaseJobs = (config, mainWorkflowJobIds, images) => {
|
|
|
61
73
|
if (((_a = config.releases) === null || _a === void 0 ? void 0 : _a.when) === "auto") {
|
|
62
74
|
return {
|
|
63
75
|
main: {
|
|
64
|
-
"create-release": createReleaseJob(images, mainWorkflowJobIds)
|
|
76
|
+
"create-release": createReleaseJob(config, images, mainWorkflowJobIds)
|
|
65
77
|
},
|
|
66
78
|
manual: {
|
|
67
|
-
"force-create-release": createReleaseJob(images)
|
|
79
|
+
"force-create-release": createReleaseJob(config, images)
|
|
68
80
|
}
|
|
69
81
|
};
|
|
70
82
|
}
|
|
71
83
|
return {
|
|
72
84
|
main: {},
|
|
73
85
|
manual: {
|
|
74
|
-
"create-release": createReleaseJob(images)
|
|
86
|
+
"create-release": createReleaseJob(config, images)
|
|
75
87
|
}
|
|
76
88
|
};
|
|
77
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubReleaseJobs.js","sourceRoot":"","sources":["../../../../../../pipeline/src/backends/github/githubReleaseJobs.ts"],"names":[],"mappings":";;;AACA,yDAAuD;
|
|
1
|
+
{"version":3,"file":"githubReleaseJobs.js","sourceRoot":"","sources":["../../../../../../pipeline/src/backends/github/githubReleaseJobs.ts"],"names":[],"mappings":";;;AACA,yDAAuD;AACvD,2CAAiD;AAIjD,MAAM,gBAAgB,GAAG,CACvB,MAAc,EACd,MAAqB,EACrB,KAAgB,EACL,EAAE;IACb,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACrE,MAAM,UAAU,GACd,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAChD,CAAC,CAAC,CAAC,IAAA,oCAAiB,EAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE;YACT,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG,CAAC,QAAQ,CAAC,gBAAgB;gBAC3B,CAAC,CAAC;oBACE,WAAW,EAAE;wBACX,QAAQ,EAAE,qBAAqB;wBAC/B,QAAQ,EAAE,qBAAqB;qBAChC;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,gEAAgE;QAChE,kEAAkE;QAClE,6DAA6D;QAC7D,+DAA+D;QAC/D,mEAAmE;QACnE,2CAA2C;QAC3C,WAAW,EAAE;YACX,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,OAAO;YAChB,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D;QACD,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,EAAE;YACH,YAAY,EAAE,qBAAqB;SACpC;QACD,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,qBAAqB;gBAC3B,2DAA2D;gBAC3D,wDAAwD;gBACxD,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;aAC3B;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE,MAAM,CAAC,MAAM;gBAClB,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACI,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,kBAA4B,EAC5B,MAAqB,EAIrB,EAAE;;IACF,IAAI,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,IAAI,MAAK,MAAM,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE;gBACJ,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC;aACvE;YACD,MAAM,EAAE,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;SACrE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;KAC/D,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,oBAAoB,wBAoB/B"}
|
|
@@ -5,23 +5,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getGitlabReleaseJobs = void 0;
|
|
7
7
|
const rules_1 = require("../../rules");
|
|
8
|
+
const release_1 = require("../../release");
|
|
8
9
|
const EXPIRED_TOKEN_HELP = "echo '👉 If this job failed with access denied, the project access token might be invald - run `project-renew-token` in catladder CLI to fix.'";
|
|
9
10
|
const baseReleaseRules = [rules_1.RULE_NEVER_ON_RELEASE_COMMIT, rules_1.RULE_NEVER_ON_AGENT_TRIGGER, rules_1.RULE_NEVER_ON_SCHEDULE];
|
|
10
11
|
const getGitlabReleaseJobs = (config, images) => {
|
|
11
12
|
var _a;
|
|
13
|
+
const method = (0, release_1.getReleaseMethod)(config);
|
|
12
14
|
// NOTE: only the resolved image url is used, not the `need`: release
|
|
13
15
|
// jobs have no `needs` on purpose — their stage ordering already
|
|
14
16
|
// guarantees the image build job (setup stage) ran, and adding a
|
|
15
17
|
// `needs` would switch gitlab to DAG mode, so the release job would no
|
|
16
18
|
// longer wait for the build/deploy stages.
|
|
17
19
|
const releaseImage = images.resolveRef({
|
|
18
|
-
catladderImage:
|
|
20
|
+
catladderImage: method.image
|
|
19
21
|
}).image;
|
|
20
22
|
return {
|
|
21
23
|
["create release"]: {
|
|
22
24
|
stage: "release",
|
|
23
25
|
image: releaseImage,
|
|
24
|
-
script: [
|
|
26
|
+
script: [method.script],
|
|
25
27
|
after_script: [EXPIRED_TOKEN_HELP],
|
|
26
28
|
rules: [...baseReleaseRules, {
|
|
27
29
|
if: rules_1.RULE_CONDITION_MAIN_BRANCH,
|
|
@@ -34,7 +36,7 @@ const getGitlabReleaseJobs = (config, images) => {
|
|
|
34
36
|
["⚠️ force create release"]: {
|
|
35
37
|
stage: "release",
|
|
36
38
|
image: releaseImage,
|
|
37
|
-
script: [
|
|
39
|
+
script: [method.script],
|
|
38
40
|
after_script: [EXPIRED_TOKEN_HELP],
|
|
39
41
|
needs: [],
|
|
40
42
|
rules: [...baseReleaseRules, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlabReleaseJobs.js","sourceRoot":"","sources":["../../../../../../pipeline/src/backends/gitlab/gitlabReleaseJobs.ts"],"names":[],"mappings":";;;AAAA,uCAMqB;
|
|
1
|
+
{"version":3,"file":"gitlabReleaseJobs.js","sourceRoot":"","sources":["../../../../../../pipeline/src/backends/gitlab/gitlabReleaseJobs.ts"],"names":[],"mappings":";;;AAAA,uCAMqB;AAErB,2CAAiD;AAIjD,MAAM,kBAAkB,GACtB,gJAAgJ,CAAC;AAEnJ,MAAM,gBAAgB,GAAG;IACvB,oCAA4B;IAC5B,mCAA2B;IAC3B,8BAAsB;CACvB,CAAC;AACK,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAE,MAAqB,EAAE,EAAE;;IAC5E,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;IACxC,qEAAqE;IACrE,iEAAiE;IACjE,iEAAiE;IACjE,uEAAuE;IACvE,2CAA2C;IAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,cAAc,EAAE,MAAM,CAAC,KAAK;KAC7B,CAAC,CAAC,KAAK,CAAC;IACT,OAAO;QACL,CAAC,gBAAgB,CAAC,EAAE;YAClB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;YACvB,YAAY,EAAE,CAAC,kBAAkB,CAAC;YAClC,KAAK,EAAE;gBACL,GAAG,gBAAgB;gBACnB;oBACE,EAAE,EAAE,kCAA0B;oBAC9B,IAAI,EAAE,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,IAAI,MAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;iBACjE;gBACD;oBACE,EAAE,EAAE,oCAA4B;oBAChC,IAAI,EAAE,QAAQ;iBACf;aACqB;SACzB;QACD,CAAC,yBAAyB,CAAC,EAAE;YAC3B,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;YACvB,YAAY,EAAE,CAAC,kBAAkB,CAAC;YAClC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE;gBACL,GAAG,gBAAgB;gBACnB;oBACE,EAAE,EAAE,kCAA0B;oBAC9B,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,EAAE,EAAE,oCAA4B;oBAChC,IAAI,EAAE,QAAQ;iBACf;aACqB;SACzB;KACF,CAAC;AACJ,CAAC,CAAC;AA/CW,QAAA,oBAAoB,wBA+C/B"}
|
|
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
|
|
7
|
-
exports.PIPELINE_IMAGE_TAG = "next-
|
|
7
|
+
exports.PIPELINE_IMAGE_TAG = "next-23a53e9e" || "latest";
|
|
8
8
|
exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || "git.panter.ch:5001/catladder/catladder";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shippedImages.js","sourceRoot":"","sources":["../../../../../pipeline/src/customImages/shippedImages.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,+BAA4B;AAG5B;;;;GAIG;AACU,QAAA,yBAAyB,GAElC;IACF,aAAa,EAAE,CAAC,cAAc,CAAC;IAC/B,qBAAqB,EAAE,CAAC,cAAc,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAiC,IAAI,GAAG,EAAE,CAAC;AAE9D,QAAA,0BAA0B,GAGnC;IACF,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,MAAM;IACrB,qBAAqB,EAAE,MAAM;IAC7B,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM;IACd,kBAAkB,EAAE,MAAM;IAC1B,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,GAAW,EAAE;IAC9C,MAAM,UAAU,GAAG;QACjB,kEAAkE;QAClE,qEAAqE;QACrE,wEAAwE;QACxE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC;QACtC,gEAAgE;QAChE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC;KACnD,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAU,EAAE,CAClE,IAAA,WAAI,EAAC,IAAA,2BAAmB,GAAE,EAAE,IAAI,CAAC,CAAC;AADvB,QAAA,kBAAkB,sBACK"}
|
|
1
|
+
{"version":3,"file":"shippedImages.js","sourceRoot":"","sources":["../../../../../pipeline/src/customImages/shippedImages.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,+BAA4B;AAG5B;;;;GAIG;AACU,QAAA,yBAAyB,GAElC;IACF,aAAa,EAAE,CAAC,cAAc,CAAC;IAC/B,qBAAqB,EAAE,CAAC,cAAc,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAiC,IAAI,GAAG,EAAE,CAAC;AAE9D,QAAA,0BAA0B,GAGnC;IACF,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,MAAM;IACrB,qBAAqB,EAAE,MAAM;IAC7B,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM;IACd,kBAAkB,EAAE,MAAM;IAC1B,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,GAAW,EAAE;IAC9C,MAAM,UAAU,GAAG;QACjB,kEAAkE;QAClE,qEAAqE;QACrE,wEAAwE;QACxE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC;QACtC,gEAAgE;QAChE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC;KACnD,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAU,EAAE,CAClE,IAAA,WAAI,EAAC,IAAA,2BAAmB,GAAE,EAAE,IAAI,CAAC,CAAC;AADvB,QAAA,kBAAkB,sBACK"}
|
|
@@ -9,6 +9,7 @@ export * from "./context";
|
|
|
9
9
|
export * from "./build";
|
|
10
10
|
export * from "./deploy";
|
|
11
11
|
export * from "./verify";
|
|
12
|
+
export * from "./release";
|
|
12
13
|
export * from "./utils/writeFiles";
|
|
13
14
|
export * from "./utils/measureTime";
|
|
14
15
|
export * from "./variables/VariableValue";
|
|
@@ -33,6 +33,7 @@ __exportStar(require("./context"), exports);
|
|
|
33
33
|
__exportStar(require("./build"), exports);
|
|
34
34
|
__exportStar(require("./deploy"), exports);
|
|
35
35
|
__exportStar(require("./verify"), exports);
|
|
36
|
+
__exportStar(require("./release"), exports);
|
|
36
37
|
__exportStar(require("./utils/writeFiles"), exports);
|
|
37
38
|
__exportStar(require("./utils/measureTime"), exports);
|
|
38
39
|
__exportStar(require("./variables/VariableValue"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../pipeline/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B;AAC3B,0CAAwB;AACxB,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,qDAAmC;AACnC,sDAAoC;AACpC,4DAA0C;AAC1C,yCAAuB;AACvB,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../pipeline/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B;AAC3B,0CAAwB;AACxB,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,qDAAmC;AACnC,sDAAoC;AACpC,4DAA0C;AAC1C,yCAAuB;AACvB,2CAAyB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { RunnerImageName } from "../runner";
|
|
2
|
+
import type { Config } from "../types/config";
|
|
3
|
+
import type { ReleaseMethod } from "../types/release";
|
|
4
|
+
/**
|
|
5
|
+
* what a release method contributes to the release jobs. The job shape
|
|
6
|
+
* (stage, rules, gates, token) is identical across methods and stays in
|
|
7
|
+
* the backends; a method only supplies the tooling image and its
|
|
8
|
+
* entrypoint script.
|
|
9
|
+
*/
|
|
10
|
+
export type ReleaseMethodDefinition = {
|
|
11
|
+
/**
|
|
12
|
+
* the catladder job image carrying the release tooling
|
|
13
|
+
*/
|
|
14
|
+
image: RunnerImageName;
|
|
15
|
+
/**
|
|
16
|
+
* the entrypoint script baked into the image (on PATH), used as the
|
|
17
|
+
* job script. Every entrypoint must run the security-audit gate
|
|
18
|
+
* before releasing.
|
|
19
|
+
*/
|
|
20
|
+
script: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const RELEASE_METHODS: Record<ReleaseMethod, ReleaseMethodDefinition>;
|
|
23
|
+
export declare const getReleaseMethod: (config: Config) => ReleaseMethodDefinition;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getReleaseMethod = exports.RELEASE_METHODS = void 0;
|
|
7
|
+
exports.RELEASE_METHODS = {
|
|
8
|
+
"semantic-release": {
|
|
9
|
+
image: "semantic-release",
|
|
10
|
+
script: "semanticRelease"
|
|
11
|
+
},
|
|
12
|
+
changesets: {
|
|
13
|
+
image: "changesets",
|
|
14
|
+
script: "changesetsRelease"
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const getReleaseMethod = config => {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
return exports.RELEASE_METHODS[(_b = (_a = config.releases) === null || _a === void 0 ? void 0 : _a.method) !== null && _b !== void 0 ? _b : "semantic-release"];
|
|
20
|
+
};
|
|
21
|
+
exports.getReleaseMethod = getReleaseMethod;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../pipeline/src/release/index.ts"],"names":[],"mappings":";;;AAuBa,QAAA,eAAe,GAAmD;IAC7E,kBAAkB,EAAE;QAClB,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,iBAAiB;KAC1B;IACD,UAAU,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,mBAAmB;KAC5B;CACF,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAA2B,EAAE,eAC1E,OAAA,uBAAe,CAAC,MAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,MAAM,mCAAI,kBAAkB,CAAC,CAAA,EAAA,CAAC;AADpD,QAAA,gBAAgB,oBACoC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type RunnerImageName = "jobs-default" | "jobs-meteor" | "jobs-testing-chrome" | "kubernetes" | "docker-build" | "gcloud" | "semantic-release" | "agent-claude";
|
|
1
|
+
export type RunnerImageName = "jobs-default" | "jobs-meteor" | "jobs-testing-chrome" | "kubernetes" | "docker-build" | "gcloud" | "semantic-release" | "changesets" | "agent-claude";
|
|
2
2
|
/**
|
|
3
3
|
* a reference to a catladder-provided job image. It is resolved by the
|
|
4
4
|
* pipeline backend according to the `jobImages` mode:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../pipeline/src/runner/index.ts"],"names":[],"mappings":";;;AAAA,4CAAmE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../pipeline/src/runner/index.ts"],"names":[],"mappings":";;;AAAA,4CAAmE;AAwB5D,MAAM,mBAAmB,GAAG,CACjC,KAAc,EACc,EAAE,CAC9B,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,gBAAgB,IAAI,KAAK;IACzB,OAAQ,KAA2B,CAAC,cAAc,KAAK,QAAQ,CAAC;AANrD,QAAA,mBAAmB,uBAMkC;AAElE;;;GAGG;AACI,MAAM,cAAc,GAAG,CAC5B,SAA0B,EACP,EAAE,CAAC,CAAC;IACvB,cAAc,EAAE,SAAS;CAC1B,CAAC,CAAC;AAJU,QAAA,cAAc,kBAIxB;AAEH;;GAEG;AACI,MAAM,wBAAwB,GAAG,CAAC,SAA0B,EAAU,EAAE,CAC7E,2BAAe,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,8BAAkB,CAAC;AADlD,QAAA,wBAAwB,4BAC0B"}
|