@packtory/cli 0.0.43 → 0.0.45
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/command-line-interface/runner/changelog-destinations.js +42 -0
- package/command-line-interface/runner/changelog-destinations.js.map +1 -1
- package/command-line-interface/runner/release-git-client.js +15 -0
- package/command-line-interface/runner/release-git-client.js.map +1 -1
- package/command-line-interface/runner/release-output-files.js +14 -0
- package/command-line-interface/runner/release-output-files.js.map +1 -0
- package/command-line-interface/runner/release-pr-github-client.js +257 -0
- package/command-line-interface/runner/release-pr-github-client.js.map +1 -0
- package/command-line-interface/runner/release-publish-authorization.js +67 -0
- package/command-line-interface/runner/release-publish-authorization.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-ci.js +105 -0
- package/command-line-interface/runner/release-pull-request-ci.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-config.js +45 -0
- package/command-line-interface/runner/release-pull-request-config.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-handler.js +313 -0
- package/command-line-interface/runner/release-pull-request-handler.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-policy.js +47 -0
- package/command-line-interface/runner/release-pull-request-policy.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-settings.js +19 -0
- package/command-line-interface/runner/release-pull-request-settings.js.map +1 -0
- package/command-line-interface/runner/runner.js +102 -3
- package/command-line-interface/runner/runner.js.map +1 -1
- package/package.json +6 -3
- package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
- package/packages/command-line-interface/command-line-interface.entry-point.js +8 -0
- package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
- package/readme.md +16 -0
- package/sbom.cdx.json +62 -11
|
@@ -63,6 +63,14 @@ function collectRepositoryDestinations(deps, outputs, changelog) {
|
|
|
63
63
|
return [{ filePath: resolveRepositoryPath(deps, output.path), generatedMarkdown: changelog.groupedMarkdown }];
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
|
+
function collectRepositoryOutputFilePaths(deps, outputs) {
|
|
67
|
+
return outputs.flatMap((output) => {
|
|
68
|
+
if (output.kind !== 'repository-file') {
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
return [{ filePath: resolveRepositoryPath(deps, output.path), packageName: undefined }];
|
|
72
|
+
});
|
|
73
|
+
}
|
|
66
74
|
function collectPackageDestinationsWithSharedPath(deps, config, output, changelog) {
|
|
67
75
|
const packageConfigsByName = mapPackageConfigByName(config);
|
|
68
76
|
return Array.from(changelog.packageMarkdownByName, ([packageName, generatedMarkdown]) => {
|
|
@@ -73,11 +81,24 @@ function collectPackageDestinationsWithSharedPath(deps, config, output, changelo
|
|
|
73
81
|
return { filePath: resolvePackageFilePath(deps, config, packageConfig, output.path), generatedMarkdown };
|
|
74
82
|
});
|
|
75
83
|
}
|
|
84
|
+
function collectPackageOutputFilePathsWithSharedPath(deps, config, output) {
|
|
85
|
+
return config.packages.map((packageConfig) => {
|
|
86
|
+
return {
|
|
87
|
+
filePath: resolvePackageFilePath(deps, config, packageConfig, output.path),
|
|
88
|
+
packageName: packageConfig.name
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
76
92
|
function collectPackageDestinationsWithExplicitPaths(deps, output, changelog) {
|
|
77
93
|
return Array.from(changelog.packageMarkdownByName, ([packageName, generatedMarkdown]) => {
|
|
78
94
|
return { filePath: resolveExplicitPackageFilePath(deps, output, packageName), generatedMarkdown };
|
|
79
95
|
});
|
|
80
96
|
}
|
|
97
|
+
function collectPackageOutputFilePathsWithExplicitPaths(deps, output) {
|
|
98
|
+
return Object.entries(output.paths).map(([packageName, outputPath]) => {
|
|
99
|
+
return { filePath: resolveRepositoryPath(deps, outputPath), packageName };
|
|
100
|
+
});
|
|
101
|
+
}
|
|
81
102
|
function collectPackageDestinations(deps, config, outputs, changelog) {
|
|
82
103
|
return outputs.flatMap((output) => {
|
|
83
104
|
if (output.kind !== 'package-file') {
|
|
@@ -89,6 +110,27 @@ function collectPackageDestinations(deps, config, outputs, changelog) {
|
|
|
89
110
|
return collectPackageDestinationsWithExplicitPaths(deps, output, changelog);
|
|
90
111
|
});
|
|
91
112
|
}
|
|
113
|
+
function collectPackageOutputFilePaths(deps, config, outputs) {
|
|
114
|
+
return outputs.flatMap((output) => {
|
|
115
|
+
if (output.kind !== 'package-file') {
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
if (hasSharedPackagePath(output)) {
|
|
119
|
+
return collectPackageOutputFilePathsWithSharedPath(deps, config, output);
|
|
120
|
+
}
|
|
121
|
+
return collectPackageOutputFilePathsWithExplicitPaths(deps, output);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
export function collectChangelogOutputFilePaths(deps, config) {
|
|
125
|
+
const outputs = config.changelog?.outputs;
|
|
126
|
+
if (outputs === undefined) {
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
return [
|
|
130
|
+
...collectRepositoryOutputFilePaths(deps, outputs),
|
|
131
|
+
...collectPackageOutputFilePaths(deps, config, outputs)
|
|
132
|
+
];
|
|
133
|
+
}
|
|
92
134
|
function isMissingFileError(error) {
|
|
93
135
|
return Reflect.get(new Object(error), 'code') === 'ENOENT';
|
|
94
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changelog-destinations.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,KAAK,yBAAyB,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"changelog-destinations.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-destinations.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,9 @@ export function createReleaseGitClient(deps) {
|
|
|
27
27
|
}
|
|
28
28
|
return head;
|
|
29
29
|
},
|
|
30
|
+
async deleteRemoteBranch(branch) {
|
|
31
|
+
await readGitOutputResult(deps, ['push', 'origin', '--delete', branch]);
|
|
32
|
+
},
|
|
30
33
|
async ensureClean() {
|
|
31
34
|
const status = await runGit(deps, ['status', '--porcelain=v1']);
|
|
32
35
|
if (status.length > 0) {
|
|
@@ -45,6 +48,18 @@ export function createReleaseGitClient(deps) {
|
|
|
45
48
|
}
|
|
46
49
|
throw new Error(`Tag "${tagName}" already exists at ${existingTag.value}, expected ${targetHead}`);
|
|
47
50
|
},
|
|
51
|
+
async pushHeadToBranch(branch) {
|
|
52
|
+
await readGitOutputResult(deps, ['fetch', 'origin', `refs/heads/${branch}:refs/remotes/origin/${branch}`]);
|
|
53
|
+
const remoteBranch = await readGitOutputResult(deps, [
|
|
54
|
+
'rev-parse',
|
|
55
|
+
'--verify',
|
|
56
|
+
`refs/remotes/origin/${branch}`
|
|
57
|
+
]);
|
|
58
|
+
const lease = remoteBranch.kind === 'found'
|
|
59
|
+
? `--force-with-lease=refs/heads/${branch}:${remoteBranch.value}`
|
|
60
|
+
: `--force-with-lease=refs/heads/${branch}:`;
|
|
61
|
+
await runGit(deps, ['push', lease, 'origin', `HEAD:refs/heads/${branch}`]);
|
|
62
|
+
},
|
|
48
63
|
async pushFollowTags() {
|
|
49
64
|
await runGit(deps, ['push', '--follow-tags']);
|
|
50
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-git-client.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-git-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"release-git-client.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-git-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { collectChangelogOutputFilePaths } from "./changelog-destinations.js";
|
|
3
|
+
function normalizeRepositoryPath(filePath) {
|
|
4
|
+
return filePath.split(path.sep).join('/');
|
|
5
|
+
}
|
|
6
|
+
function toRepositoryRelativePath(workingDirectory, filePath) {
|
|
7
|
+
return normalizeRepositoryPath(path.relative(workingDirectory, filePath));
|
|
8
|
+
}
|
|
9
|
+
export function collectReleaseOutputFiles(input) {
|
|
10
|
+
return collectChangelogOutputFilePaths({ workingDirectory: input.workingDirectory }, input.config).map((output) => {
|
|
11
|
+
return toRepositoryRelativePath(input.workingDirectory, output.filePath);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=release-output-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-output-files.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-output-files.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,+BAA+B,EAAwB,MAAM,6BAA6B,CAAC;AAEpG,SAAS,uBAAuB,CAAC,QAAgB;IAC7C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,wBAAwB,CAAC,gBAAwB,EAAE,QAAgB;IACxE,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAGzC;IACG,OAAO,+BAA+B,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9G,OAAO,wBAAwB,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { isDefined } from 'remeda';
|
|
2
|
+
import { Octokit } from '@octokit/core';
|
|
3
|
+
import { paginateRest } from '@octokit/plugin-paginate-rest';
|
|
4
|
+
import { restEndpointMethods } from '@octokit/plugin-rest-endpoint-methods';
|
|
5
|
+
import { createGitHubJsonRequestHeaders } from "./github-api-request.js";
|
|
6
|
+
function labelNames(labels) {
|
|
7
|
+
return labels
|
|
8
|
+
.map((label) => {
|
|
9
|
+
return label.name ?? undefined;
|
|
10
|
+
})
|
|
11
|
+
.filter(isDefined);
|
|
12
|
+
}
|
|
13
|
+
function commitSubject(commit) {
|
|
14
|
+
const firstLineBreak = commit.commit.message.indexOf('\n');
|
|
15
|
+
if (firstLineBreak === -1) {
|
|
16
|
+
return commit.commit.message;
|
|
17
|
+
}
|
|
18
|
+
return commit.commit.message.slice(0, firstLineBreak);
|
|
19
|
+
}
|
|
20
|
+
function runDatabaseId(run) {
|
|
21
|
+
return run.database_id ?? run.databaseId;
|
|
22
|
+
}
|
|
23
|
+
function pullRequestIsMerged(pullRequest) {
|
|
24
|
+
return pullRequest.merged_at !== undefined && pullRequest.merged_at !== null;
|
|
25
|
+
}
|
|
26
|
+
function readReflectedProperty(value, property) {
|
|
27
|
+
return Reflect.get(new Object(value), property);
|
|
28
|
+
}
|
|
29
|
+
function createRequestError(error) {
|
|
30
|
+
const status = String(readReflectedProperty(error, 'status'));
|
|
31
|
+
const requestUrl = String(readReflectedProperty(readReflectedProperty(error, 'request'), 'url'));
|
|
32
|
+
const parsedUrl = new URL(requestUrl);
|
|
33
|
+
return new Error(`GitHub API request failed (${status}) for ${parsedUrl.pathname}${parsedUrl.search}`, {
|
|
34
|
+
cause: error
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async function resolveGitHubResponse(request) {
|
|
38
|
+
try {
|
|
39
|
+
return await request;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw createRequestError(error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function createReleasePullRequestGitHubClient(context) {
|
|
46
|
+
const GitHubRestClient = Octokit.plugin(restEndpointMethods, paginateRest);
|
|
47
|
+
const requestContext = {
|
|
48
|
+
headers: createGitHubJsonRequestHeaders(context.token, 'packtory-release-pr'),
|
|
49
|
+
owner: context.owner,
|
|
50
|
+
repo: context.repo
|
|
51
|
+
};
|
|
52
|
+
const octokit = new GitHubRestClient({
|
|
53
|
+
request: {
|
|
54
|
+
fetch: context.fetch,
|
|
55
|
+
headers: requestContext.headers
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
async function readPullRequestFiles(pullRequestNumber) {
|
|
59
|
+
const files = await resolveGitHubResponse(octokit.paginate(octokit.rest.pulls.listFiles, {
|
|
60
|
+
...requestContext,
|
|
61
|
+
pull_number: pullRequestNumber,
|
|
62
|
+
per_page: 100
|
|
63
|
+
}));
|
|
64
|
+
return files.map((file) => {
|
|
65
|
+
return file.filename;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async function readCommit(commitSha) {
|
|
69
|
+
const response = await resolveGitHubResponse(octokit.rest.repos.getCommit({
|
|
70
|
+
...requestContext,
|
|
71
|
+
ref: commitSha
|
|
72
|
+
}));
|
|
73
|
+
return response.data;
|
|
74
|
+
}
|
|
75
|
+
async function toPullRequestDetails(pullRequest) {
|
|
76
|
+
const commit = await readCommit(pullRequest.head.sha);
|
|
77
|
+
return {
|
|
78
|
+
author: pullRequest.user?.login ?? '',
|
|
79
|
+
baseRef: pullRequest.base.ref,
|
|
80
|
+
changedFiles: await readPullRequestFiles(pullRequest.number),
|
|
81
|
+
headRef: pullRequest.head.ref,
|
|
82
|
+
headRepository: pullRequest.head.repo?.full_name ?? '',
|
|
83
|
+
labels: labelNames(pullRequest.labels),
|
|
84
|
+
mergeCommitSha: pullRequest.merge_commit_sha ?? undefined,
|
|
85
|
+
merged: pullRequestIsMerged(pullRequest),
|
|
86
|
+
number: pullRequest.number,
|
|
87
|
+
subject: commitSubject(commit),
|
|
88
|
+
title: pullRequest.title
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
async function createReleasePullRequest(input) {
|
|
92
|
+
const response = await resolveGitHubResponse(octokit.rest.pulls.create({
|
|
93
|
+
...requestContext,
|
|
94
|
+
base: input.baseBranch,
|
|
95
|
+
body: input.body,
|
|
96
|
+
head: input.releaseBranch,
|
|
97
|
+
title: input.title
|
|
98
|
+
}));
|
|
99
|
+
return response.data.number;
|
|
100
|
+
}
|
|
101
|
+
async function updateReleasePullRequest(input, pullRequestNumber) {
|
|
102
|
+
const response = await resolveGitHubResponse(octokit.rest.pulls.update({
|
|
103
|
+
...requestContext,
|
|
104
|
+
body: input.body,
|
|
105
|
+
pull_number: pullRequestNumber,
|
|
106
|
+
title: input.title
|
|
107
|
+
}));
|
|
108
|
+
return response.data.number;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
async closeOpenReleasePullRequests(input) {
|
|
112
|
+
const pullRequests = await resolveGitHubResponse(octokit.rest.pulls.list({
|
|
113
|
+
...requestContext,
|
|
114
|
+
base: input.baseBranch,
|
|
115
|
+
head: `${context.owner}:${input.releaseBranch}`,
|
|
116
|
+
state: 'open'
|
|
117
|
+
}));
|
|
118
|
+
for (const pullRequest of pullRequests.data) {
|
|
119
|
+
await resolveGitHubResponse(octokit.rest.pulls.update({
|
|
120
|
+
...requestContext,
|
|
121
|
+
pull_number: pullRequest.number,
|
|
122
|
+
state: 'closed'
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
async createOrUpdateReleasePullRequest(input) {
|
|
127
|
+
const existingPullRequests = await resolveGitHubResponse(octokit.rest.pulls.list({
|
|
128
|
+
...requestContext,
|
|
129
|
+
base: input.baseBranch,
|
|
130
|
+
head: `${context.owner}:${input.releaseBranch}`,
|
|
131
|
+
state: 'open'
|
|
132
|
+
}));
|
|
133
|
+
const existingPullRequest = existingPullRequests.data[0];
|
|
134
|
+
const pullRequestNumber = existingPullRequest === undefined
|
|
135
|
+
? await createReleasePullRequest(input)
|
|
136
|
+
: await updateReleasePullRequest(input, existingPullRequest.number);
|
|
137
|
+
await resolveGitHubResponse(octokit.rest.issues.setLabels({
|
|
138
|
+
...requestContext,
|
|
139
|
+
issue_number: pullRequestNumber,
|
|
140
|
+
labels: [input.label]
|
|
141
|
+
}));
|
|
142
|
+
return pullRequestNumber;
|
|
143
|
+
},
|
|
144
|
+
async createStatus(input) {
|
|
145
|
+
await resolveGitHubResponse(octokit.rest.repos.createCommitStatus({
|
|
146
|
+
...requestContext,
|
|
147
|
+
context: input.context,
|
|
148
|
+
description: input.description,
|
|
149
|
+
sha: input.commitSha,
|
|
150
|
+
state: input.state,
|
|
151
|
+
target_url: input.targetUrl ?? null
|
|
152
|
+
}));
|
|
153
|
+
},
|
|
154
|
+
async deleteActionRequiredPullRequestRuns(input) {
|
|
155
|
+
const response = await resolveGitHubResponse(octokit.rest.actions.listWorkflowRunsForRepo({
|
|
156
|
+
...requestContext,
|
|
157
|
+
branch: input.branch,
|
|
158
|
+
event: 'pull_request',
|
|
159
|
+
per_page: 100
|
|
160
|
+
}));
|
|
161
|
+
const blockedRuns = response.data.workflow_runs.filter((run) => {
|
|
162
|
+
return run.head_sha === input.headSha && run.conclusion === 'action_required';
|
|
163
|
+
});
|
|
164
|
+
const blockedRunIds = blockedRuns
|
|
165
|
+
.map((run) => {
|
|
166
|
+
return runDatabaseId(run);
|
|
167
|
+
})
|
|
168
|
+
.filter(isDefined);
|
|
169
|
+
for (const databaseId of blockedRunIds) {
|
|
170
|
+
await resolveGitHubResponse(octokit.rest.actions.deleteWorkflowRun({ ...requestContext, run_id: databaseId }));
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
async dispatchWorkflow(input) {
|
|
174
|
+
await resolveGitHubResponse(octokit.rest.actions.createWorkflowDispatch({
|
|
175
|
+
...requestContext,
|
|
176
|
+
ref: input.ref,
|
|
177
|
+
workflow_id: input.workflowFile
|
|
178
|
+
}));
|
|
179
|
+
},
|
|
180
|
+
async findDispatchedWorkflowRunId(input) {
|
|
181
|
+
const response = await resolveGitHubResponse(octokit.rest.actions.listWorkflowRuns({
|
|
182
|
+
...requestContext,
|
|
183
|
+
branch: input.branch,
|
|
184
|
+
event: 'workflow_dispatch',
|
|
185
|
+
workflow_id: input.workflowFile,
|
|
186
|
+
per_page: 100
|
|
187
|
+
}));
|
|
188
|
+
const run = response.data.workflow_runs.find((workflowRun) => {
|
|
189
|
+
return workflowRun.head_sha === input.headSha;
|
|
190
|
+
});
|
|
191
|
+
return run === undefined ? undefined : runDatabaseId(run);
|
|
192
|
+
},
|
|
193
|
+
async getBranchHeadSha(branch) {
|
|
194
|
+
const response = await resolveGitHubResponse(octokit.rest.repos.getBranch({
|
|
195
|
+
...requestContext,
|
|
196
|
+
branch
|
|
197
|
+
}));
|
|
198
|
+
return response.data.commit.sha;
|
|
199
|
+
},
|
|
200
|
+
async getPullRequest(pullRequestNumber) {
|
|
201
|
+
const response = await resolveGitHubResponse(octokit.rest.pulls.get({
|
|
202
|
+
...requestContext,
|
|
203
|
+
pull_number: pullRequestNumber
|
|
204
|
+
}));
|
|
205
|
+
return toPullRequestDetails(response.data);
|
|
206
|
+
},
|
|
207
|
+
async getPullRequestHead(pullRequestNumber) {
|
|
208
|
+
const response = await resolveGitHubResponse(octokit.rest.pulls.get({
|
|
209
|
+
...requestContext,
|
|
210
|
+
pull_number: pullRequestNumber
|
|
211
|
+
}));
|
|
212
|
+
const pullRequest = response.data;
|
|
213
|
+
const commit = await readCommit(pullRequest.head.sha);
|
|
214
|
+
return {
|
|
215
|
+
author: pullRequest.user.login,
|
|
216
|
+
changedFiles: await readPullRequestFiles(pullRequest.number),
|
|
217
|
+
headRef: pullRequest.head.ref,
|
|
218
|
+
labels: labelNames(pullRequest.labels),
|
|
219
|
+
parentShas: commit.parents.map((parent) => {
|
|
220
|
+
return parent.sha;
|
|
221
|
+
}),
|
|
222
|
+
subject: commitSubject(commit),
|
|
223
|
+
title: pullRequest.title
|
|
224
|
+
};
|
|
225
|
+
},
|
|
226
|
+
async listCommitPullRequests(commitSha) {
|
|
227
|
+
const pullRequests = await resolveGitHubResponse(octokit.paginate(octokit.rest.repos.listPullRequestsAssociatedWithCommit, {
|
|
228
|
+
...requestContext,
|
|
229
|
+
commit_sha: commitSha,
|
|
230
|
+
per_page: 100
|
|
231
|
+
}));
|
|
232
|
+
return Promise.all(pullRequests.map(toPullRequestDetails));
|
|
233
|
+
},
|
|
234
|
+
async readWorkflowRunResult(runId) {
|
|
235
|
+
const [runResponse, jobResponse] = await Promise.all([
|
|
236
|
+
resolveGitHubResponse(octokit.rest.actions.getWorkflowRun({ ...requestContext, run_id: runId })),
|
|
237
|
+
resolveGitHubResponse(octokit.rest.actions.listJobsForWorkflowRun({
|
|
238
|
+
...requestContext,
|
|
239
|
+
run_id: runId,
|
|
240
|
+
per_page: 100
|
|
241
|
+
}))
|
|
242
|
+
]);
|
|
243
|
+
return {
|
|
244
|
+
conclusion: runResponse.data.conclusion ?? undefined,
|
|
245
|
+
databaseId: runId,
|
|
246
|
+
jobs: jobResponse.data.jobs.map((job) => {
|
|
247
|
+
return {
|
|
248
|
+
conclusion: job.conclusion ?? undefined,
|
|
249
|
+
name: job.name,
|
|
250
|
+
url: job.html_url ?? undefined
|
|
251
|
+
};
|
|
252
|
+
})
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=release-pr-github-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-pr-github-client.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pr-github-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAwHzE,SAAS,UAAU,CAAC,MAA2B;IAC3C,OAAO,MAAM;SACR,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACX,OAAO,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACnC,CAAC,CAAC;SACD,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,aAAa,CAAC,MAAiB;IACpC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,aAAa,CAAC,GAAmB;IACtC,OAAO,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,CAAC;AAC7C,CAAC;AAED,SAAS,mBAAmB,CAAC,WAA2B;IACpD,OAAO,WAAW,CAAC,SAAS,KAAK,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,IAAI,CAAC;AACjF,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,QAAgB;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAY,CAAC;AAC/D,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,IAAI,KAAK,CAAC,8BAA8B,MAAM,SAAS,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE;QACnG,KAAK,EAAE,KAAK;KACf,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAI,OAAmB;IACvD,IAAI,CAAC;QACD,OAAO,MAAM,OAAO,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,OAA4B;IAC7E,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAmB;QACnC,OAAO,EAAE,8BAA8B,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC;QAC7E,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;KACrB,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;QACjC,OAAO,EAAE;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,cAAc,CAAC,OAAO;SAClC;KACJ,CAAC,CAAC;IAEH,KAAK,UAAU,oBAAoB,CAAC,iBAAyB;QACzD,MAAM,KAAK,GAAG,MAAM,qBAAqB,CACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YAC3C,GAAG,cAAc;YACjB,WAAW,EAAE,iBAAiB;YAC9B,QAAQ,EAAE,GAAG;SAChB,CAAC,CACL,CAAC;QACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,SAAiB;QACvC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACzB,GAAG,cAAc;YACjB,GAAG,EAAE,SAAS;SACjB,CAAC,CACL,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,UAAU,oBAAoB,CAAC,WAA2B;QAC3D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO;YACH,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACrC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG;YAC7B,YAAY,EAAE,MAAM,oBAAoB,CAAC,WAAW,CAAC,MAAM,CAAC;YAC5D,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG;YAC7B,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE;YACtD,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;YACtC,cAAc,EAAE,WAAW,CAAC,gBAAgB,IAAI,SAAS;YACzD,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC;YACxC,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;SAC3B,CAAC;IACN,CAAC;IAED,KAAK,UAAU,wBAAwB,CAAC,KAKvC;QACG,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,GAAG,cAAc;YACjB,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,aAAa;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;SACrB,CAAC,CACL,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,KAAK,UAAU,wBAAwB,CACnC,KAAwD,EACxD,iBAAyB;QAEzB,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,GAAG,cAAc;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,iBAAiB;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;SACrB,CAAC,CACL,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,OAAO;QACH,KAAK,CAAC,4BAA4B,CAAC,KAAK;YACpC,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpB,GAAG,cAAc;gBACjB,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,EAAE;gBAC/C,KAAK,EAAE,MAAM;aAChB,CAAC,CACL,CAAC;YACF,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBAC1C,MAAM,qBAAqB,CACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBACtB,GAAG,cAAc;oBACjB,WAAW,EAAE,WAAW,CAAC,MAAM;oBAC/B,KAAK,EAAE,QAAQ;iBAClB,CAAC,CACL,CAAC;YACN,CAAC;QACL,CAAC;QAED,KAAK,CAAC,gCAAgC,CAAC,KAAK;YACxC,MAAM,oBAAoB,GAAG,MAAM,qBAAqB,CACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpB,GAAG,cAAc;gBACjB,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,EAAE;gBAC/C,KAAK,EAAE,MAAM;aAChB,CAAC,CACL,CAAC;YACF,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,iBAAiB,GACnB,mBAAmB,KAAK,SAAS;gBAC7B,CAAC,CAAC,MAAM,wBAAwB,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAC,MAAM,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAE5E,MAAM,qBAAqB,CACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC1B,GAAG,cAAc;gBACjB,YAAY,EAAE,iBAAiB;gBAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;aACxB,CAAC,CACL,CAAC;YACF,OAAO,iBAAiB,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,KAAK;YACpB,MAAM,qBAAqB,CACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAClC,GAAG,cAAc;gBACjB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,GAAG,EAAE,KAAK,CAAC,SAAS;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;aACtC,CAAC,CACL,CAAC;QACN,CAAC;QAED,KAAK,CAAC,mCAAmC,CAAC,KAAK;YAC3C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;gBACzC,GAAG,cAAc;gBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE,GAAG;aAChB,CAAC,CACL,CAAC;YACF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3D,OAAO,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,KAAK,iBAAiB,CAAC;YAClF,CAAC,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,WAAW;iBAC5B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACT,OAAO,aAAa,CAAC,GAAqB,CAAC,CAAC;YAChD,CAAC,CAAC;iBACD,MAAM,CAAC,SAAS,CAAC,CAAC;YACvB,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;gBACrC,MAAM,qBAAqB,CACvB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CACpF,CAAC;YACN,CAAC;QACL,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,KAAK;YACxB,MAAM,qBAAqB,CACvB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;gBACxC,GAAG,cAAc;gBACjB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,WAAW,EAAE,KAAK,CAAC,YAAY;aAClC,CAAC,CACL,CAAC;QACN,CAAC;QAED,KAAK,CAAC,2BAA2B,CAAC,KAAK;YACnC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBAClC,GAAG,cAAc;gBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,mBAAmB;gBAC1B,WAAW,EAAE,KAAK,CAAC,YAAY;gBAC/B,QAAQ,EAAE,GAAG;aAChB,CAAC,CACL,CAAC;YACF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACzD,OAAO,WAAW,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,CAAC;YAClD,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,GAAqB,CAAC,CAAC;QAChF,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,MAAM;YACzB,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACzB,GAAG,cAAc;gBACjB,MAAM;aACT,CAAC,CACL,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,iBAAiB;YAClC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACnB,GAAG,cAAc;gBACjB,WAAW,EAAE,iBAAiB;aACjC,CAAC,CACL,CAAC;YACF,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,iBAAiB;YACtC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACnB,GAAG,cAAc;gBACjB,WAAW,EAAE,iBAAiB;aACjC,CAAC,CACL,CAAC;YACF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO;gBACH,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;gBAC9B,YAAY,EAAE,MAAM,oBAAoB,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC5D,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG;gBAC7B,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACtC,OAAO,MAAM,CAAC,GAAG,CAAC;gBACtB,CAAC,CAAC;gBACF,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;aAC3B,CAAC;QACN,CAAC;QAED,KAAK,CAAC,sBAAsB,CAAC,SAAS;YAClC,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,oCAAoC,EAAE;gBACtE,GAAG,cAAc;gBACjB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,GAAG;aAChB,CAAC,CACL,CAAC;YACF,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,KAAK,CAAC,qBAAqB,CAAC,KAAK;YAC7B,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjD,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChG,qBAAqB,CACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;oBACxC,GAAG,cAAc;oBACjB,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,GAAG;iBAChB,CAAC,CACL;aACJ,CAAC,CAAC;YACH,OAAO;gBACH,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS;gBACpD,UAAU,EAAE,KAAK;gBACjB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAmB,EAAE,EAAE;oBACpD,OAAO;wBACH,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;wBACvC,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,GAAG,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;qBACjC,CAAC;gBACN,CAAC,CAAC;aACL,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { validateReleasePullRequestPublishPolicy } from "./release-pull-request-policy.js";
|
|
2
|
+
function selectSingleReleasePullRequest(pullRequests, commitSha) {
|
|
3
|
+
const pullRequest = pullRequests.at(0);
|
|
4
|
+
const secondPullRequest = pullRequests.at(1);
|
|
5
|
+
if (secondPullRequest !== undefined) {
|
|
6
|
+
throw new Error(`Commit ${commitSha} is associated with multiple release PRs`);
|
|
7
|
+
}
|
|
8
|
+
return pullRequest;
|
|
9
|
+
}
|
|
10
|
+
function toPublishInput(pullRequest, repository) {
|
|
11
|
+
return {
|
|
12
|
+
author: pullRequest.author,
|
|
13
|
+
baseRef: pullRequest.baseRef,
|
|
14
|
+
changedFiles: pullRequest.changedFiles,
|
|
15
|
+
headRef: pullRequest.headRef,
|
|
16
|
+
headRepository: pullRequest.headRepository,
|
|
17
|
+
labels: pullRequest.labels,
|
|
18
|
+
mergeCommitSha: pullRequest.mergeCommitSha,
|
|
19
|
+
merged: pullRequest.merged,
|
|
20
|
+
repository,
|
|
21
|
+
subject: pullRequest.subject,
|
|
22
|
+
title: pullRequest.title
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function isAuthorizedPullRequest(input) {
|
|
26
|
+
let authorized = true;
|
|
27
|
+
try {
|
|
28
|
+
validateReleasePullRequestPublishPolicy(toPublishInput(input.pullRequest, input.repository), input.config, input.expectedMergeCommitSha);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
authorized = false;
|
|
32
|
+
}
|
|
33
|
+
return authorized;
|
|
34
|
+
}
|
|
35
|
+
export function authorizeReleasePublishFromCommit(input) {
|
|
36
|
+
const releasePullRequests = input.pullRequests.filter((pullRequest) => {
|
|
37
|
+
return isAuthorizedPullRequest({
|
|
38
|
+
config: input.config,
|
|
39
|
+
expectedMergeCommitSha: input.commitSha,
|
|
40
|
+
pullRequest,
|
|
41
|
+
repository: input.repository
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
const releasePullRequest = selectSingleReleasePullRequest(releasePullRequests, input.commitSha);
|
|
45
|
+
if (releasePullRequest === undefined) {
|
|
46
|
+
return { shouldPublish: false };
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
publishCommitSha: input.commitSha,
|
|
50
|
+
releaseCommitSha: input.commitSha,
|
|
51
|
+
releasePullRequestNumber: releasePullRequest.number,
|
|
52
|
+
shouldPublish: true
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function authorizeReleasePublishFromPullRequest(input) {
|
|
56
|
+
if (input.pullRequest.mergeCommitSha === undefined) {
|
|
57
|
+
throw new Error(`Pull request #${input.pullRequest.number} is not a merged release PR`);
|
|
58
|
+
}
|
|
59
|
+
validateReleasePullRequestPublishPolicy(toPublishInput(input.pullRequest, input.repository), input.config, input.pullRequest.mergeCommitSha);
|
|
60
|
+
return {
|
|
61
|
+
publishCommitSha: input.pullRequest.mergeCommitSha,
|
|
62
|
+
releaseCommitSha: input.pullRequest.mergeCommitSha,
|
|
63
|
+
releasePullRequestNumber: input.pullRequest.number,
|
|
64
|
+
shouldPublish: true
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=release-publish-authorization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-publish-authorization.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-publish-authorization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const workflowRunLookupAttempts = 30;
|
|
2
|
+
const workflowRunCompletionAttempts = 120;
|
|
3
|
+
const workflowPollIntervalMilliseconds = 10_000;
|
|
4
|
+
function createRetryAttempts(count) {
|
|
5
|
+
return Array.from({ length: count }, (_value, index) => {
|
|
6
|
+
return index;
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
function isLastAttempt(attempt, count) {
|
|
10
|
+
return attempt === count - 1;
|
|
11
|
+
}
|
|
12
|
+
async function waitForDispatchedWorkflowRun(input) {
|
|
13
|
+
for (const attempt of createRetryAttempts(workflowRunLookupAttempts)) {
|
|
14
|
+
const runId = await input.client.findDispatchedWorkflowRunId({
|
|
15
|
+
branch: input.config.branch,
|
|
16
|
+
headSha: input.headSha,
|
|
17
|
+
workflowFile: input.ciConfig.workflowFile
|
|
18
|
+
});
|
|
19
|
+
if (runId !== undefined) {
|
|
20
|
+
return runId;
|
|
21
|
+
}
|
|
22
|
+
if (!isLastAttempt(attempt, workflowRunLookupAttempts)) {
|
|
23
|
+
await input.sleep(workflowPollIntervalMilliseconds);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Release workflow run was not created for ${input.headSha}`);
|
|
27
|
+
}
|
|
28
|
+
async function waitForWorkflowCompletion(input) {
|
|
29
|
+
for (const attempt of createRetryAttempts(workflowRunCompletionAttempts)) {
|
|
30
|
+
const result = await input.client.readWorkflowRunResult(input.runId);
|
|
31
|
+
if (result.conclusion !== undefined) {
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
if (!isLastAttempt(attempt, workflowRunCompletionAttempts)) {
|
|
35
|
+
await input.sleep(workflowPollIntervalMilliseconds);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Release workflow run ${input.runId} did not complete`);
|
|
39
|
+
}
|
|
40
|
+
function formatWorkflowStatusFailure(context, conclusion) {
|
|
41
|
+
if (conclusion === undefined) {
|
|
42
|
+
return `Missing dispatched release CI job: ${context}.`;
|
|
43
|
+
}
|
|
44
|
+
return `Dispatched release CI job ${conclusion}.`;
|
|
45
|
+
}
|
|
46
|
+
async function mirrorWorkflowStatus(input) {
|
|
47
|
+
const job = input.runResult.jobs.find((candidate) => {
|
|
48
|
+
return candidate.name === input.context;
|
|
49
|
+
});
|
|
50
|
+
if (job?.conclusion === 'success') {
|
|
51
|
+
await input.client.createStatus({
|
|
52
|
+
commitSha: input.headSha,
|
|
53
|
+
context: input.context,
|
|
54
|
+
description: 'Dispatched release CI job success.',
|
|
55
|
+
state: 'success',
|
|
56
|
+
targetUrl: job.url
|
|
57
|
+
});
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
await input.client.createStatus({
|
|
61
|
+
commitSha: input.headSha,
|
|
62
|
+
context: input.context,
|
|
63
|
+
description: formatWorkflowStatusFailure(input.context, job?.conclusion),
|
|
64
|
+
state: 'failure',
|
|
65
|
+
targetUrl: job?.url
|
|
66
|
+
});
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
async function mirrorWorkflowStatuses(input) {
|
|
70
|
+
const statuses = await Promise.all(input.ciConfig.requiredStatusContexts.map(async (context) => {
|
|
71
|
+
return mirrorWorkflowStatus({ ...input, context });
|
|
72
|
+
}));
|
|
73
|
+
return statuses.every(Boolean);
|
|
74
|
+
}
|
|
75
|
+
async function createPendingWorkflowStatuses(input) {
|
|
76
|
+
for (const context of input.ciConfig.requiredStatusContexts) {
|
|
77
|
+
await input.client.createStatus({
|
|
78
|
+
commitSha: input.headSha,
|
|
79
|
+
context,
|
|
80
|
+
description: 'Waiting for dispatched release CI.',
|
|
81
|
+
state: 'pending',
|
|
82
|
+
targetUrl: undefined
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export async function runConfiguredGitHubActionsCi(input) {
|
|
87
|
+
const { githubActionsCi } = input.config;
|
|
88
|
+
if (githubActionsCi === undefined) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
await createPendingWorkflowStatuses({ ...input, ciConfig: githubActionsCi });
|
|
92
|
+
await input.client.dispatchWorkflow({ ref: input.config.branch, workflowFile: githubActionsCi.workflowFile });
|
|
93
|
+
const runId = await waitForDispatchedWorkflowRun({ ...input, ciConfig: githubActionsCi });
|
|
94
|
+
const runResult = await waitForWorkflowCompletion({ client: input.client, runId, sleep: input.sleep });
|
|
95
|
+
if (githubActionsCi.deleteActionRequiredPullRequestRuns) {
|
|
96
|
+
await input.client.deleteActionRequiredPullRequestRuns({ branch: input.config.branch, headSha: input.headSha });
|
|
97
|
+
}
|
|
98
|
+
return mirrorWorkflowStatuses({
|
|
99
|
+
ciConfig: githubActionsCi,
|
|
100
|
+
client: input.client,
|
|
101
|
+
headSha: input.headSha,
|
|
102
|
+
runResult
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=release-pull-request-ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-pull-request-ci.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-ci.ts"],"names":[],"mappings":"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"}
|