apify-test-tools 0.10.2-beta.2 → 0.10.2-beta.4
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/.github/cli/apify-test-tools.mjs +140 -140
- package/.github/scripts/run-with-apify-tokens.mjs +1 -1
- package/.github/workflows/public_pr-build-test.yaml +25 -25
- package/.github/workflows/public_push-build-latest.yaml +20 -4
- package/CHANGELOG.md +2 -0
- package/README.md +119 -14
- package/bin/affected-actors.ts +157 -0
- package/bin/build.ts +55 -38
- package/bin/diff-changes.ts +25 -17
- package/bin/git.ts +44 -44
- package/bin/main.ts +132 -106
- package/bin/slack.ts +24 -0
- package/bin/stdin-input.ts +65 -0
- package/dist/bin/affected-actors.d.ts +45 -0
- package/dist/bin/affected-actors.d.ts.map +1 -0
- package/dist/bin/affected-actors.js +87 -0
- package/dist/bin/affected-actors.js.map +1 -0
- package/dist/bin/build.d.ts +12 -5
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +45 -23
- package/dist/bin/build.js.map +1 -1
- package/dist/bin/diff-changes.d.ts +8 -2
- package/dist/bin/diff-changes.d.ts.map +1 -1
- package/dist/bin/diff-changes.js +16 -16
- package/dist/bin/diff-changes.js.map +1 -1
- package/dist/bin/git.d.ts +19 -14
- package/dist/bin/git.d.ts.map +1 -1
- package/dist/bin/git.js +37 -35
- package/dist/bin/git.js.map +1 -1
- package/dist/bin/main.js +110 -86
- package/dist/bin/main.js.map +1 -1
- package/dist/bin/slack.d.ts +8 -0
- package/dist/bin/slack.d.ts.map +1 -1
- package/dist/bin/slack.js +18 -0
- package/dist/bin/slack.js.map +1 -1
- package/dist/bin/stdin-input.d.ts +17 -0
- package/dist/bin/stdin-input.d.ts.map +1 -0
- package/dist/bin/stdin-input.js +54 -0
- package/dist/bin/stdin-input.js.map +1 -0
- package/dist/test/bundle/cli-bundle.test.js +36 -6
- package/dist/test/bundle/cli-bundle.test.js.map +1 -1
- package/dist/test/e2e/cli-bundle.e2e.test.js +16 -9
- package/dist/test/e2e/cli-bundle.e2e.test.js.map +1 -1
- package/dist/test/unit/bin/affected-actors.test.d.ts +2 -0
- package/dist/test/unit/bin/affected-actors.test.d.ts.map +1 -0
- package/dist/test/unit/bin/affected-actors.test.js +154 -0
- package/dist/test/unit/bin/affected-actors.test.js.map +1 -0
- package/dist/test/unit/bin/build-cli.test.d.ts +2 -0
- package/dist/test/unit/bin/build-cli.test.d.ts.map +1 -0
- package/dist/test/unit/bin/build-cli.test.js +52 -0
- package/dist/test/unit/bin/build-cli.test.js.map +1 -0
- package/dist/test/unit/bin/build.test.js +61 -4
- package/dist/test/unit/bin/build.test.js.map +1 -1
- package/dist/test/unit/bin/diff-changes.test.js +78 -49
- package/dist/test/unit/bin/diff-changes.test.js.map +1 -1
- package/dist/test/unit/bin/git.test.js +39 -54
- package/dist/test/unit/bin/git.test.js.map +1 -1
- package/dist/test/unit/bin/slack.test.js +39 -1
- package/dist/test/unit/bin/slack.test.js.map +1 -1
- package/dist/test/unit/bin/stdin-input.test.d.ts +2 -0
- package/dist/test/unit/bin/stdin-input.test.d.ts.map +1 -0
- package/dist/test/unit/bin/stdin-input.test.js +50 -0
- package/dist/test/unit/bin/stdin-input.test.js.map +1 -0
- package/dist/test/unit/should-built-and-test.test.js +23 -17
- package/dist/test/unit/should-built-and-test.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/test/bundle/cli-bundle.test.ts +59 -6
- package/test/e2e/cli-bundle.e2e.test.ts +26 -11
- package/test/unit/bin/affected-actors.test.ts +184 -0
- package/test/unit/bin/build-cli.test.ts +61 -0
- package/test/unit/bin/build.test.ts +71 -3
- package/test/unit/bin/diff-changes.test.ts +87 -49
- package/test/unit/bin/git.test.ts +44 -55
- package/test/unit/bin/slack.test.ts +44 -1
- package/test/unit/bin/stdin-input.test.ts +61 -0
- package/test/unit/should-built-and-test.test.ts +27 -17
package/dist/bin/main.js
CHANGED
|
@@ -3,13 +3,14 @@ import process from 'node:process';
|
|
|
3
3
|
import yargs from 'yargs';
|
|
4
4
|
// eslint-disable-next-line import/extensions --- With .js, it cannot find types
|
|
5
5
|
import { hideBin } from 'yargs/helpers';
|
|
6
|
-
import {
|
|
6
|
+
import { getAffectedActors, toAffectedActorsDocument } from './affected-actors.js';
|
|
7
|
+
import { buildActors, DEFAULT_VERSION_KEYWORD, deleteOldBuilds, TEST_VERSION_NUMBER } from './build.js';
|
|
7
8
|
import { runBuildsFromLocal } from './build-from-local.js';
|
|
8
|
-
import {
|
|
9
|
-
import { getBranchOnlyChangedFiles, getChangedFiles, getCommits, getCurrentBranch, getReleaseChanges, getRepoName, hasMergeFromTarget, resolveReleaseBaseCommit, resolveRepoUrl, } from './git.js';
|
|
9
|
+
import { getChangedFiles, getCommits, getCurrentBranch } from './git.js';
|
|
10
10
|
import { logger, logLevels } from './logger.js';
|
|
11
11
|
import { writeJson } from './output.js';
|
|
12
|
-
import {
|
|
12
|
+
import { announceRelease } from './slack.js';
|
|
13
|
+
import { parseBuildInput, parseReleaseChanges, readStdin } from './stdin-input.js';
|
|
13
14
|
import { reportTestResults } from './test-report.js';
|
|
14
15
|
import { readConfigFile } from './utils/config/load-config.js';
|
|
15
16
|
/**
|
|
@@ -44,6 +45,22 @@ const actorSelectionOptions = {
|
|
|
44
45
|
actors: { type: 'string', array: true, default: [] },
|
|
45
46
|
ignore: { type: 'string', array: true, default: [] },
|
|
46
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Commit range for get-affected-actors, which always ends at the checked-out HEAD. `base` and `since` combine:
|
|
50
|
+
* `base` alone is a branch's own commits (a PR), `since` alone is everything after a commit (a release), both is
|
|
51
|
+
* a branch after its last validated commit.
|
|
52
|
+
*/
|
|
53
|
+
const affectedRangeOptions = {
|
|
54
|
+
base: { type: 'string', describe: 'Only count commits on HEAD that are not on this branch' },
|
|
55
|
+
since: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
describe: 'Only count commits after this one. Ignored with --base if it is not on the branch',
|
|
58
|
+
},
|
|
59
|
+
'test-files-glob': {
|
|
60
|
+
type: 'string',
|
|
61
|
+
describe: 'Glob (from the repo root) of test files that count as changes even when .dockerignore lists them',
|
|
62
|
+
},
|
|
63
|
+
};
|
|
47
64
|
/**
|
|
48
65
|
* For commands that change something (builds, deletes, Slack posts). A dry run still does every read and check
|
|
49
66
|
* the real run does, credentials included, and only skips the writes. So it needs the same tokens, though
|
|
@@ -56,9 +73,30 @@ const dryRunOptions = {
|
|
|
56
73
|
describe: 'Do every read and check (tokens included) but change nothing; print what would be done',
|
|
57
74
|
},
|
|
58
75
|
};
|
|
59
|
-
/** Flags
|
|
76
|
+
/** Flags of `build`, which builds exactly the Actors it is given. */
|
|
60
77
|
const buildOptions = {
|
|
61
|
-
'
|
|
78
|
+
'version-number': {
|
|
79
|
+
type: 'string',
|
|
80
|
+
demandOption: true,
|
|
81
|
+
describe: `Version to build, like 0.1, or "${DEFAULT_VERSION_KEYWORD}" for each Actor's default version`,
|
|
82
|
+
coerce: (value) => {
|
|
83
|
+
if (value !== DEFAULT_VERSION_KEYWORD && !/^\d+\.\d+$/.test(value)) {
|
|
84
|
+
throw new Error(`--version-number must look like 0.1 or be "${DEFAULT_VERSION_KEYWORD}", got "${value}"`);
|
|
85
|
+
}
|
|
86
|
+
return value;
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
/** Range of build-for-test: the checked-out branch's own commits, after its last validated one. */
|
|
91
|
+
const buildForTestOptions = {
|
|
92
|
+
'target-branch': { type: 'string', demandOption: true },
|
|
93
|
+
'base-commit': { type: 'string' },
|
|
94
|
+
'test-files-glob': { type: 'string' },
|
|
95
|
+
};
|
|
96
|
+
/** Where `release` and `notify-release` post the release. */
|
|
97
|
+
const releaseSlackOptions = {
|
|
98
|
+
'report-slack-channel': { type: 'string', describe: 'Channel for the full report: commits and changed files' },
|
|
99
|
+
'release-slack-channel': { type: 'string', describe: 'Channel for the changelog additions only' },
|
|
62
100
|
};
|
|
63
101
|
/** Global flags, available to every command. */
|
|
64
102
|
const globalOptions = {
|
|
@@ -69,41 +107,6 @@ const globalOptions = {
|
|
|
69
107
|
describe: 'Minimum diagnostic level written to stderr; silent disables logging',
|
|
70
108
|
},
|
|
71
109
|
};
|
|
72
|
-
const resolveChangedActors = async (config, { isLatest }) => {
|
|
73
|
-
const actorConfigs = await readConfigFile(config);
|
|
74
|
-
// This is an optimization for the common case where a branch only has cosmetic changes but had to smerge in
|
|
75
|
-
// functional changes from master (being up-to-date is a CI requirement). Master is already validated, and
|
|
76
|
-
// since the branch has no functional changes of its own, there is nothing new to validate.
|
|
77
|
-
// Exception: if the branch has any functional changes alongside the merge, we must re-test — even
|
|
78
|
-
// individually validated changes can have novel interactions when combined.
|
|
79
|
-
if (await hasMergeFromTarget(config.sourceBranch, config.targetBranch)) {
|
|
80
|
-
logger.info('[MERGE-FROM-TARGET-OPTIMIZATION]: There is merge from target branch, checking if there are no functional changes in our own branch. If so, we can skip tests');
|
|
81
|
-
const branchOnlyFiles = await getBranchOnlyChangedFiles(config.sourceBranch, config.targetBranch);
|
|
82
|
-
// Omit baseCommit to get full branch history. Validated functional commits can still interact with merged ones
|
|
83
|
-
const allBranchCommits = await getCommits({ ...config, baseCommit: undefined });
|
|
84
|
-
const branchOnlyActorsChanged = await getChangedActors({
|
|
85
|
-
filepathsChanged: branchOnlyFiles,
|
|
86
|
-
actorConfigs,
|
|
87
|
-
commits: allBranchCommits,
|
|
88
|
-
testFilesGlob: config.testFilesGlob,
|
|
89
|
-
});
|
|
90
|
-
if (branchOnlyActorsChanged.length === 0) {
|
|
91
|
-
logger.info('[MERGE-FROM-TARGET-OPTIMIZATION]: Branch itself has no functional changes, skipping tests');
|
|
92
|
-
return [];
|
|
93
|
-
}
|
|
94
|
-
logger.info(`[MERGE-FROM-TARGET-OPTIMIZATION]: Branch has ${branchOnlyActorsChanged.length} functional changes, cannot optimize, we continue with full check`);
|
|
95
|
-
}
|
|
96
|
-
// If the optimization doesn't apply, we check all branch commits including merges for full coverage. We don't reuse the merge optimization results because here we can apply baseCommit and check merge commits (they might be functional or just cosmetic)
|
|
97
|
-
const commits = await getCommits(config);
|
|
98
|
-
const changedFiles = await getChangedFiles(commits);
|
|
99
|
-
return getChangedActors({
|
|
100
|
-
filepathsChanged: changedFiles,
|
|
101
|
-
actorConfigs,
|
|
102
|
-
isLatest,
|
|
103
|
-
commits,
|
|
104
|
-
testFilesGlob: config.testFilesGlob,
|
|
105
|
-
});
|
|
106
|
-
};
|
|
107
110
|
await yargs()
|
|
108
111
|
.scriptName('public-actors-utils')
|
|
109
112
|
.options(globalOptions)
|
|
@@ -127,9 +130,8 @@ await yargs()
|
|
|
127
130
|
const actorConfigs = await readConfigFile({ actors, ignore });
|
|
128
131
|
writeJson(actorConfigs);
|
|
129
132
|
})
|
|
130
|
-
.command('get-affected-actors', '', (y) => y.options(
|
|
131
|
-
|
|
132
|
-
writeJson(actorsChanged);
|
|
133
|
+
.command('get-affected-actors', 'Find the Actors whose context changed in a commit range ending at the checked-out HEAD', (y) => y.options(affectedRangeOptions).options(actorSelectionOptions), async (args) => {
|
|
134
|
+
writeJson(toAffectedActorsDocument(await getAffectedActors(args)));
|
|
133
135
|
})
|
|
134
136
|
.command('report-tests', '', (y) => y
|
|
135
137
|
.options(dryRunOptions)
|
|
@@ -139,72 +141,94 @@ await yargs()
|
|
|
139
141
|
.option('workflow-name', { type: 'string' }), async (args) => {
|
|
140
142
|
await reportTestResults(args);
|
|
141
143
|
})
|
|
142
|
-
.command('build', '', (y) => y
|
|
143
|
-
|
|
144
|
+
.command('build', 'Build the Actors listed on stdin, as {"actors": [{"actorFullName": ...}]}, from the checked-out branch', (y) => y.options(buildOptions).options(repoUrlOptions).options(dryRunOptions), async (args) => {
|
|
145
|
+
const input = parseBuildInput(await readStdin());
|
|
146
|
+
const names = input.actors.map(({ actorFullName }) => actorFullName);
|
|
147
|
+
// An empty --actors selects every Actor, but an empty list here means there is nothing to build
|
|
148
|
+
const actorConfigs = names.length > 0 ? await readConfigFile({ actors: names, ignore: [] }) : [];
|
|
149
|
+
const builds = await buildActors({
|
|
150
|
+
actorConfigs,
|
|
151
|
+
versionNumber: args.versionNumber,
|
|
152
|
+
repoUrl: args.repoUrl,
|
|
153
|
+
dryRun: args.dryRun,
|
|
154
|
+
});
|
|
155
|
+
writeJson(builds);
|
|
156
|
+
})
|
|
157
|
+
.command('build-for-test', 'Build the Actors the checked-out branch changed functionally, for testing', (y) => y
|
|
158
|
+
.options(buildForTestOptions)
|
|
144
159
|
.options(actorSelectionOptions)
|
|
145
|
-
.options(buildOptions)
|
|
146
160
|
.options(repoUrlOptions)
|
|
147
|
-
.options(dryRunOptions)
|
|
148
|
-
.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
161
|
+
.options(dryRunOptions), async (config) => {
|
|
162
|
+
logger.info('[BUILD-FOR-TEST]: Same as get-affected-actors --base <target-branch> [--since <base-commit>] ' +
|
|
163
|
+
`| jq '{ actors: .functionallyChangedActors }' | build --version-number ${TEST_VERSION_NUMBER}`);
|
|
164
|
+
// Cosmetic-only changes don't need testing, so they don't need a build either
|
|
165
|
+
const { functionallyChangedActors } = await getAffectedActors({
|
|
166
|
+
base: config.targetBranch,
|
|
167
|
+
since: config.baseCommit,
|
|
168
|
+
testFilesGlob: config.testFilesGlob,
|
|
169
|
+
actors: config.actors,
|
|
170
|
+
ignore: config.ignore,
|
|
171
|
+
});
|
|
172
|
+
const builds = await buildActors({
|
|
173
|
+
actorConfigs: functionallyChangedActors,
|
|
174
|
+
versionNumber: TEST_VERSION_NUMBER,
|
|
175
|
+
repoUrl: config.repoUrl,
|
|
154
176
|
dryRun: config.dryRun,
|
|
155
|
-
useDockerCache: config.useDockerCache,
|
|
156
177
|
});
|
|
157
178
|
writeJson(builds);
|
|
158
179
|
})
|
|
159
|
-
.command('release', '', (y) => y
|
|
180
|
+
.command('release', 'Build the default version of the Actors changed since the last release and announce it on Slack', (y) => y
|
|
160
181
|
.options(actorSelectionOptions)
|
|
161
|
-
.options(buildOptions)
|
|
162
182
|
.options(repoUrlOptions)
|
|
163
183
|
.options(dryRunOptions)
|
|
164
184
|
// The last commit that is already released, everything after it up to HEAD gets released.
|
|
165
185
|
// Required, see the README section "Releasing Actors" for how to set it for each merge strategy.
|
|
166
186
|
.option('base-commit', { type: 'string', demandOption: true })
|
|
167
|
-
.
|
|
168
|
-
.
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
187
|
+
.options(releaseSlackOptions), async (args) => {
|
|
188
|
+
logger.info('[RELEASE]: Same as get-affected-actors --since <base-commit> > affected.json, then ' +
|
|
189
|
+
"jq '{ actors: (.functionallyChangedActors + .cosmeticallyChangedActors) }' affected.json " +
|
|
190
|
+
`| build --version-number ${DEFAULT_VERSION_KEYWORD}, then notify-release < affected.json`);
|
|
191
|
+
// Fail before anything else on a detached HEAD: there is no branch to release
|
|
192
|
+
await getCurrentBranch();
|
|
193
|
+
const { commits, changedFiles, changelog, functionallyChangedActors, cosmeticallyChangedActors } = await getAffectedActors({
|
|
194
|
+
since: args.baseCommit,
|
|
195
|
+
actors: args.actors,
|
|
196
|
+
ignore: args.ignore,
|
|
197
|
+
});
|
|
198
|
+
if (commits.length === 0) {
|
|
199
|
+
logger.info(`HEAD is the base commit ${args.baseCommit}, there is nothing new to release`);
|
|
174
200
|
return;
|
|
175
201
|
}
|
|
176
|
-
const { commits, changedFiles, changelog } = changes;
|
|
177
|
-
const { repoUrl, shouldVerifyRepoUrl } = await resolveRepoUrl(args.repoUrl);
|
|
178
|
-
const isLatest = true;
|
|
179
|
-
const actorConfigs = await readConfigFile(args);
|
|
180
|
-
const actorsChanged = await getChangedActors({
|
|
181
|
-
filepathsChanged: changedFiles,
|
|
182
|
-
actorConfigs,
|
|
183
|
-
isLatest,
|
|
184
|
-
commits,
|
|
185
|
-
});
|
|
186
202
|
const { dryRun, reportSlackChannel, releaseSlackChannel } = args;
|
|
187
|
-
const builds = await
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
branch,
|
|
203
|
+
const builds = await buildActors({
|
|
204
|
+
// A release ships cosmetic changes (README, input schema descriptions, ...) too
|
|
205
|
+
actorConfigs: [...functionallyChangedActors, ...cosmeticallyChangedActors],
|
|
206
|
+
versionNumber: DEFAULT_VERSION_KEYWORD,
|
|
207
|
+
repoUrl: args.repoUrl,
|
|
193
208
|
dryRun,
|
|
194
|
-
useDockerCache: args.useDockerCache,
|
|
195
209
|
});
|
|
196
210
|
logger.info(JSON.stringify(builds));
|
|
197
|
-
await
|
|
198
|
-
changedFiles,
|
|
211
|
+
await announceRelease({
|
|
199
212
|
commits,
|
|
213
|
+
changedFiles,
|
|
200
214
|
changelog,
|
|
201
|
-
|
|
215
|
+
repoUrl: args.repoUrl,
|
|
202
216
|
dryRun,
|
|
203
|
-
// The newest commit, same as the pushed head commit
|
|
204
|
-
author: commits[commits.length - 1].author,
|
|
205
217
|
reportSlackChannel,
|
|
206
218
|
releaseSlackChannel,
|
|
207
219
|
});
|
|
220
|
+
})
|
|
221
|
+
.command('notify-release', 'Announce a release on Slack, from the get-affected-actors output on stdin', (y) => y.options(releaseSlackOptions).options(repoUrlOptions).options(dryRunOptions), async (args) => {
|
|
222
|
+
const { commits, changedFiles, changelog } = parseReleaseChanges(await readStdin());
|
|
223
|
+
await announceRelease({
|
|
224
|
+
commits,
|
|
225
|
+
changedFiles,
|
|
226
|
+
changelog,
|
|
227
|
+
repoUrl: args.repoUrl,
|
|
228
|
+
dryRun: args.dryRun,
|
|
229
|
+
reportSlackChannel: args.reportSlackChannel,
|
|
230
|
+
releaseSlackChannel: args.releaseSlackChannel,
|
|
231
|
+
});
|
|
208
232
|
})
|
|
209
233
|
.command('build-from-local', '', (y) => y.options(actorSelectionOptions).options(dryRunOptions), async ({ actors, ignore, dryRun }) => {
|
|
210
234
|
const actorConfigs = await readConfigFile({ actors, ignore });
|
package/dist/bin/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../bin/main.ts"],"names":[],"mappings":";AAEA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,gFAAgF;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../bin/main.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/slack.d.ts
CHANGED
|
@@ -17,6 +17,14 @@ type NotifyToSlackOptions = {
|
|
|
17
17
|
export declare const getSlackClient: (tokenEnvVar: string, dryRun: boolean) => Promise<WebClient>;
|
|
18
18
|
export declare const sendingLabel: (dryRun: boolean) => "[DRY RUN] Would send" | "Sending";
|
|
19
19
|
export declare const notifyToSlack: ({ changedFiles, commits, changelog, repository, dryRun, author, releaseSlackChannel, reportSlackChannel, }: NotifyToSlackOptions) => Promise<void>;
|
|
20
|
+
type AnnounceReleaseOptions = Omit<NotifyToSlackOptions, 'author' | 'repository'> & {
|
|
21
|
+
repoUrl?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Posts what a release changed: its commits, changed files and changelog, as get-affected-actors reports them.
|
|
25
|
+
* Posts nothing when there are no commits, which means there is nothing new to release.
|
|
26
|
+
*/
|
|
27
|
+
export declare const announceRelease: ({ commits, repoUrl, ...options }: AnnounceReleaseOptions) => Promise<void>;
|
|
20
28
|
export declare const sendSlackMessage: (slack: WebClient, channel: string, text: string, blocks: string[]) => Promise<void>;
|
|
21
29
|
export {};
|
|
22
30
|
//# sourceMappingURL=slack.d.ts.map
|
package/dist/bin/slack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,aAAa,MAAM,EAAE,QAAQ,OAAO,KAAG,OAAO,CAAC,SAAS,CAW5F,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,OAAO,uCAAkD,CAAC;AAK/F,eAAO,MAAM,aAAa,GAAU,4GASjC,oBAAoB,kBAgDtB,CAAC;AAEF,KAAK,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,YAAY,CAAC,GAAG;IAEhF,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,kCAAkC,sBAAsB,kBAY7F,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,OAAO,SAAS,EAAE,SAAS,MAAM,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,kBASvG,CAAC"}
|
package/dist/bin/slack.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WebClient } from '@slack/web-api';
|
|
2
|
+
import { getRepoName, resolveRepoUrl } from './git.js';
|
|
2
3
|
import { logger } from './logger.js';
|
|
3
4
|
import { getEnvVar } from './utils.js';
|
|
4
5
|
/**
|
|
@@ -62,6 +63,23 @@ export const notifyToSlack = async ({ changedFiles, commits, changelog, reposito
|
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* Posts what a release changed: its commits, changed files and changelog, as get-affected-actors reports them.
|
|
68
|
+
* Posts nothing when there are no commits, which means there is nothing new to release.
|
|
69
|
+
*/
|
|
70
|
+
export const announceRelease = async ({ commits, repoUrl, ...options }) => {
|
|
71
|
+
if (commits.length === 0) {
|
|
72
|
+
logger.info('No new commits, so there is no release to announce');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
await notifyToSlack({
|
|
76
|
+
...options,
|
|
77
|
+
commits,
|
|
78
|
+
repository: getRepoName((await resolveRepoUrl(repoUrl)).repoUrl),
|
|
79
|
+
// The newest commit, same as the pushed head commit
|
|
80
|
+
author: commits[commits.length - 1].author,
|
|
81
|
+
});
|
|
82
|
+
};
|
|
65
83
|
export const sendSlackMessage = async (slack, channel, text, blocks) => {
|
|
66
84
|
const { ts } = await slack.chat.postMessage({ text, channel });
|
|
67
85
|
if (blocks.length > 0 && ts) {
|
package/dist/bin/slack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const readStdin: () => Promise<string>;
|
|
2
|
+
export declare const parseBuildInput: (raw: string) => {
|
|
3
|
+
actors: {
|
|
4
|
+
actorFullName: string;
|
|
5
|
+
}[];
|
|
6
|
+
};
|
|
7
|
+
export declare const parseReleaseChanges: (raw: string) => {
|
|
8
|
+
commits: {
|
|
9
|
+
sha: string;
|
|
10
|
+
author: string;
|
|
11
|
+
date: string;
|
|
12
|
+
message: string;
|
|
13
|
+
}[];
|
|
14
|
+
changedFiles: string[];
|
|
15
|
+
changelog: string | null;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=stdin-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdin-input.d.ts","sourceRoot":"","sources":["../../bin/stdin-input.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,MAAM,CAUhD,CAAC;AAiCF,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM;;;;CAIrC,CAAC;AASP,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM;;;;;;;;;CAIzC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
import z, { prettifyError } from 'zod';
|
|
3
|
+
export const readStdin = async () => {
|
|
4
|
+
// Nothing piped in: fail right away instead of waiting for someone to type
|
|
5
|
+
if (process.stdin.isTTY) {
|
|
6
|
+
throw new Error('Expected JSON on stdin, but nothing was piped in.');
|
|
7
|
+
}
|
|
8
|
+
let raw = '';
|
|
9
|
+
for await (const chunk of process.stdin) {
|
|
10
|
+
raw += chunk;
|
|
11
|
+
}
|
|
12
|
+
return raw;
|
|
13
|
+
};
|
|
14
|
+
const parseStdinJson = (raw, schema, { expected, example }) => {
|
|
15
|
+
// Empty input is an error, not "nothing to do": it is what a failed command earlier in the pipe leaves behind
|
|
16
|
+
if (!raw.trim()) {
|
|
17
|
+
throw new Error(`Expected ${expected} as JSON on stdin, got nothing (${example}).`);
|
|
18
|
+
}
|
|
19
|
+
let json;
|
|
20
|
+
try {
|
|
21
|
+
json = JSON.parse(raw);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
throw new Error(`The input on stdin is not valid JSON: ${error.message}`);
|
|
25
|
+
}
|
|
26
|
+
const result = schema.safeParse(json);
|
|
27
|
+
if (!result.success) {
|
|
28
|
+
throw new Error(`The input on stdin is not ${expected} (${example}):\n${prettifyError(result.error)}`);
|
|
29
|
+
}
|
|
30
|
+
return result.data;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* What `build` reads: the Actors to build. Only their names are read, the config file stays the source of truth
|
|
34
|
+
* for everything else about them. Other fields are ignored, so a get-affected-actors document only needs its Actor
|
|
35
|
+
* list picked, e.g. `jq '{ actors: .functionallyChangedActors }'`.
|
|
36
|
+
*/
|
|
37
|
+
const buildInputSchema = z.object({
|
|
38
|
+
actors: z.array(z.object({ actorFullName: z.string() })),
|
|
39
|
+
});
|
|
40
|
+
export const parseBuildInput = (raw) => parseStdinJson(raw, buildInputSchema, {
|
|
41
|
+
expected: 'the Actors to build',
|
|
42
|
+
example: `e.g. echo '{"actors":[{"actorFullName":"owner/name"}]}' | apify-test-tools build --version-number 0.1`,
|
|
43
|
+
});
|
|
44
|
+
/** What `notify-release` reads: the parts of a get-affected-actors document that describe what changed. */
|
|
45
|
+
const releaseChangesSchema = z.object({
|
|
46
|
+
commits: z.array(z.object({ sha: z.string(), author: z.string(), date: z.string(), message: z.string() })),
|
|
47
|
+
changedFiles: z.array(z.string()),
|
|
48
|
+
changelog: z.string().nullable(),
|
|
49
|
+
});
|
|
50
|
+
export const parseReleaseChanges = (raw) => parseStdinJson(raw, releaseChangesSchema, {
|
|
51
|
+
expected: 'the output of get-affected-actors',
|
|
52
|
+
example: 'e.g. apify-test-tools get-affected-actors --since <sha> | apify-test-tools notify-release',
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=stdin-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdin-input.js","sourceRoot":"","sources":["../../bin/stdin-input.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,CAAC,EAAE,EAAE,aAAa,EAAgB,MAAM,KAAK,CAAC;AAErD,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;IACjD,2EAA2E;IAC3E,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,GAAG,IAAI,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACnB,GAAW,EACX,MAAkB,EAClB,EAAE,QAAQ,EAAE,OAAO,EAAyC,EAC9D,EAAE;IACA,8GAA8G;IAC9G,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,mCAAmC,OAAO,IAAI,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAA0C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,KAAK,OAAO,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CAC3C,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE;IAClC,QAAQ,EAAE,qBAAqB;IAC/B,OAAO,EAAE,uGAAuG;CACnH,CAAC,CAAC;AAEP,2GAA2G;AAC3G,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1G,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE,CAC/C,cAAc,CAAC,GAAG,EAAE,oBAAoB,EAAE;IACtC,QAAQ,EAAE,mCAAmC;IAC7C,OAAO,EAAE,2FAA2F;CACvG,CAAC,CAAC"}
|
|
@@ -27,10 +27,16 @@ const writeRepoFile = async (file, content) => {
|
|
|
27
27
|
await mkdir(path.dirname(path.join(repoDir, file)), { recursive: true });
|
|
28
28
|
await writeFile(path.join(repoDir, file), content);
|
|
29
29
|
};
|
|
30
|
-
const
|
|
31
|
-
const result = spawnSync(process.execPath, [bundlePath, ...args], {
|
|
30
|
+
const runCliWithInput = (input, ...args) => {
|
|
31
|
+
const result = spawnSync(process.execPath, [bundlePath, ...args], {
|
|
32
|
+
cwd: repoDir,
|
|
33
|
+
env: cliEnv,
|
|
34
|
+
encoding: 'utf8',
|
|
35
|
+
input,
|
|
36
|
+
});
|
|
32
37
|
return { status: result.status, stdout: result.stdout, stderr: result.stderr };
|
|
33
38
|
};
|
|
39
|
+
const runCli = (...args) => runCliWithInput('', ...args);
|
|
34
40
|
const gitRange = ['--source-branch', 'feature', '--target-branch', 'main'];
|
|
35
41
|
describe('CLI bundle', () => {
|
|
36
42
|
// Two Actors on `main`; `feature` changes only tester/foo and the root README.
|
|
@@ -74,7 +80,9 @@ describe('CLI bundle', () => {
|
|
|
74
80
|
'get-affected-actors',
|
|
75
81
|
'report-tests',
|
|
76
82
|
'build',
|
|
83
|
+
'build-for-test',
|
|
77
84
|
'release',
|
|
85
|
+
'notify-release',
|
|
78
86
|
'build-from-local',
|
|
79
87
|
'delete-old-builds',
|
|
80
88
|
]) {
|
|
@@ -108,17 +116,39 @@ describe('CLI bundle', () => {
|
|
|
108
116
|
]);
|
|
109
117
|
});
|
|
110
118
|
it('get-affected-actors returns only the Actor whose files changed', () => {
|
|
111
|
-
|
|
119
|
+
// `feature` is checked out, and the range always ends at HEAD
|
|
120
|
+
const { status, stdout, stderr } = runCli('get-affected-actors', '--base', 'main');
|
|
112
121
|
expect(status, stderr).toBe(0);
|
|
113
|
-
expect(JSON.parse(stdout)).toMatchObject(
|
|
122
|
+
expect(JSON.parse(stdout)).toMatchObject({
|
|
123
|
+
version: 1,
|
|
124
|
+
head: headSha,
|
|
125
|
+
functionallyChangedActors: [{ actorFullName: 'tester/foo' }],
|
|
126
|
+
// The root README isn't in tester/bar's folder, so it doesn't count for it
|
|
127
|
+
cosmeticallyChangedActors: [],
|
|
128
|
+
});
|
|
114
129
|
});
|
|
115
130
|
it('build --dry-run with nothing to build needs no token', () => {
|
|
116
|
-
const { status, stdout, stderr } =
|
|
131
|
+
const { status, stdout, stderr } = runCliWithInput(JSON.stringify({ actors: [] }), 'build', '--version-number', '0.99', '--dry-run');
|
|
117
132
|
expect(status, stderr).toBe(0);
|
|
118
133
|
expect(JSON.parse(stdout)).toEqual({ dryRun: true, builds: [] });
|
|
119
134
|
});
|
|
120
135
|
it('build --dry-run fails cleanly when the Actor token is missing', () => {
|
|
121
|
-
const { status, stderr } =
|
|
136
|
+
const { status, stderr } = runCliWithInput(JSON.stringify({ actors: [{ actorFullName: 'tester/foo' }] }), 'build', '--version-number', '0.99', '--dry-run');
|
|
137
|
+
expect(status).toBe(1);
|
|
138
|
+
expect(stderr).toContain('Env var FOO_TOKEN is not set (needed for actor "tester/foo")');
|
|
139
|
+
});
|
|
140
|
+
it('build fails on empty input instead of building nothing', () => {
|
|
141
|
+
const { status, stderr } = runCli('build', '--version-number', '0.99', '--dry-run');
|
|
142
|
+
expect(status).toBe(1);
|
|
143
|
+
expect(stderr).toContain('got nothing');
|
|
144
|
+
});
|
|
145
|
+
it('build-for-test --dry-run with nothing to build needs no token', () => {
|
|
146
|
+
const { status, stdout, stderr } = runCli('build-for-test', '--target-branch', 'main', '--actors', 'tester/bar', '--dry-run');
|
|
147
|
+
expect(status, stderr).toBe(0);
|
|
148
|
+
expect(JSON.parse(stdout)).toEqual({ dryRun: true, builds: [] });
|
|
149
|
+
});
|
|
150
|
+
it('build-for-test --dry-run fails cleanly when the Actor token is missing', () => {
|
|
151
|
+
const { status, stderr } = runCli('build-for-test', '--target-branch', 'main', '--dry-run');
|
|
122
152
|
expect(status).toBe(1);
|
|
123
153
|
expect(stderr).toContain('Env var FOO_TOKEN is not set (needed for actor "tester/foo")');
|
|
124
154
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-bundle.test.js","sourceRoot":"","sources":["../../../test/bundle/cli-bundle.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEnE,iGAAiG;AACjG,mGAAmG;AACnG,iGAAiG;AACjG,iGAAiG;AACjG,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErG,+FAA+F;AAC/F,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;AACnE,MAAM,MAAM,GAAG;IACX,GAAG,MAAM;IACT,eAAe,EAAE,QAAQ;IACzB,gBAAgB,EAAE,oBAAoB;IACtC,kBAAkB,EAAE,QAAQ;IAC5B,mBAAmB,EAAE,oBAAoB;CAC5C,CAAC;AAEF,IAAI,OAAe,CAAC;AACpB,IAAI,OAAe,CAAC;AACpB,IAAI,OAAe,CAAC;AAEpB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAErH,MAAM,aAAa,GAAG,KAAK,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE;IAC1D,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"cli-bundle.test.js","sourceRoot":"","sources":["../../../test/bundle/cli-bundle.test.ts"],"names":[],"mappings":"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"}
|