apify-test-tools 0.10.2-beta.1 → 0.10.2-beta.2

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.
Files changed (70) hide show
  1. package/.gitattributes +2 -0
  2. package/.github/actions/checkout-restore-dependencies/action.yaml +13 -29
  3. package/.github/cli/apify-test-tools.mjs +362 -0
  4. package/.github/scripts/run-with-apify-tokens.mjs +2 -2
  5. package/.github/workflows/_check_code.yaml +25 -0
  6. package/.github/workflows/_move_major_tag.yaml +3 -81
  7. package/.github/workflows/_tests.yaml +34 -0
  8. package/.github/workflows/_update_release_metadata.yaml +0 -12
  9. package/.github/workflows/manual_move_major_tag.yaml +3 -3
  10. package/.github/workflows/manual_release_stable.yaml +3 -13
  11. package/.github/workflows/on_master.yaml +9 -5
  12. package/.github/workflows/on_pull_request.yaml +3 -48
  13. package/.github/workflows/public_platform-tests.yaml +1 -1
  14. package/.github/workflows/public_pr-build-test.yaml +2 -2
  15. package/.github/workflows/public_push-build-latest.yaml +2 -2
  16. package/.husky/pre-commit +5 -0
  17. package/.prettierignore +3 -0
  18. package/CHANGELOG.md +4 -0
  19. package/CONTRIBUTING.md +8 -18
  20. package/README.md +39 -44
  21. package/bin/build-from-local.ts +47 -13
  22. package/bin/build.ts +35 -19
  23. package/bin/main.ts +20 -5
  24. package/bin/slack.ts +28 -6
  25. package/bin/test-report.ts +6 -9
  26. package/bin/types.ts +9 -0
  27. package/dist/bin/build-from-local.d.ts +10 -2
  28. package/dist/bin/build-from-local.d.ts.map +1 -1
  29. package/dist/bin/build-from-local.js +29 -11
  30. package/dist/bin/build-from-local.js.map +1 -1
  31. package/dist/bin/build.d.ts +15 -5
  32. package/dist/bin/build.d.ts.map +1 -1
  33. package/dist/bin/build.js +24 -15
  34. package/dist/bin/build.js.map +1 -1
  35. package/dist/bin/main.js +18 -4
  36. package/dist/bin/main.js.map +1 -1
  37. package/dist/bin/slack.d.ts +8 -1
  38. package/dist/bin/slack.d.ts.map +1 -1
  39. package/dist/bin/slack.js +26 -5
  40. package/dist/bin/slack.js.map +1 -1
  41. package/dist/bin/test-report.d.ts.map +1 -1
  42. package/dist/bin/test-report.js +6 -8
  43. package/dist/bin/test-report.js.map +1 -1
  44. package/dist/bin/types.d.ts +8 -0
  45. package/dist/bin/types.d.ts.map +1 -1
  46. package/dist/test/bundle/cli-bundle.test.d.ts +2 -0
  47. package/dist/test/bundle/cli-bundle.test.d.ts.map +1 -0
  48. package/dist/test/bundle/cli-bundle.test.js +162 -0
  49. package/dist/test/bundle/cli-bundle.test.js.map +1 -0
  50. package/dist/test/e2e/cli-bundle.e2e.test.d.ts +2 -0
  51. package/dist/test/e2e/cli-bundle.e2e.test.d.ts.map +1 -0
  52. package/dist/test/e2e/cli-bundle.e2e.test.js +172 -0
  53. package/dist/test/e2e/cli-bundle.e2e.test.js.map +1 -0
  54. package/dist/test/unit/bin/build-from-local.test.js +53 -1
  55. package/dist/test/unit/bin/build-from-local.test.js.map +1 -1
  56. package/dist/test/unit/bin/build.test.js +113 -3
  57. package/dist/test/unit/bin/build.test.js.map +1 -1
  58. package/dist/test/unit/bin/slack.test.d.ts +2 -0
  59. package/dist/test/unit/bin/slack.test.d.ts.map +1 -0
  60. package/dist/test/unit/bin/slack.test.js +54 -0
  61. package/dist/test/unit/bin/slack.test.js.map +1 -0
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +13 -3
  64. package/test/bundle/cli-bundle.test.ts +192 -0
  65. package/test/e2e/cli-bundle.e2e.test.ts +237 -0
  66. package/test/unit/bin/build-from-local.test.ts +55 -0
  67. package/test/unit/bin/build.test.ts +135 -3
  68. package/test/unit/bin/slack.test.ts +65 -0
  69. package/.github/scripts/check-package-version-bump.mjs +0 -74
  70. package/.github/workflows-package-version +0 -1
@@ -6,11 +6,11 @@ import AdmZip from 'adm-zip';
6
6
  import type * as ApifyClientTypes from 'apify-client';
7
7
  import { ActorSourceType } from 'apify-client';
8
8
 
9
- import { dryRunBuildData, LOCAL_SOURCE_VERSION_NUMBER, runAndSummarizeBuilds } from './build.js';
9
+ import { ApifyBuilder, LOCAL_SOURCE_VERSION_NUMBER, runAndSummarizeBuilds } from './build.js';
10
10
  import { loadDockerIgnore } from './dockerignore.js';
11
11
  import { logger } from './logger.js';
12
12
  import { isPathWithinScope } from './path-utils.js';
13
- import type { ActorConfig, BuildData } from './types.js';
13
+ import type { ActorConfig, BuildData, DryRunPlan } from './types.js';
14
14
  import type { SourceFile } from './utils.js';
15
15
  import { getGitignoredPaths, isOutsideDir, listRepoFilePaths, readSourceFile } from './utils.js';
16
16
  import type { RelativeDir } from './utils/path/repo-relative.js';
@@ -179,32 +179,66 @@ export const rewriteActorJsonPaths = async (
179
179
  await fs.writeFile(path.join(newActorDir, 'actor.json'), JSON.stringify(rewritten, null, 4));
180
180
  };
181
181
 
182
+ type LocalBuildPlan = {
183
+ actorFullName: string;
184
+ versionNumber: string;
185
+ folder: string;
186
+ fileCount: number;
187
+ zipSizeBytes: number;
188
+ };
189
+
182
190
  export const runBuildsFromLocal = async ({
183
191
  actorConfigs,
184
192
  dryRun,
185
193
  }: {
186
194
  actorConfigs: ActorConfig[];
187
195
  dryRun: boolean;
188
- }): Promise<BuildData[]> => {
196
+ }): Promise<BuildData[] | DryRunPlan<LocalBuildPlan>> => {
197
+ // Read-only preparation shared with the real build, so a dry run fails on a missing token, an unknown
198
+ // Actor or unreadable sources just like the build would
199
+ const preparedBuilds = await Promise.all(
200
+ actorConfigs.map(async (actorConfig) => {
201
+ const actorInfo = await ApifyBuilder.fromActorConfig(actorConfig).getActorInfo();
202
+ // Zipped and uploaded like `apify push` does, since inline SOURCE_FILES are capped at ~9 MB.
203
+ const zip = new AdmZip();
204
+ const sourceFiles = await collectSourceFiles(actorConfig);
205
+ for (const { name, content } of sourceFiles) {
206
+ zip.addFile(name, content);
207
+ }
208
+ return { actorConfig, actorInfo, fileCount: sourceFiles.length, zipBuffer: zip.toBuffer() };
209
+ }),
210
+ );
211
+
189
212
  if (dryRun) {
190
213
  logger.info('[DRY RUN] Would build from local source:');
191
- for (const { actorFullName, folder } of actorConfigs) {
192
- logger.info(` ${actorFullName} (${folder})`);
214
+ for (const { actorConfig, fileCount, zipBuffer } of preparedBuilds) {
215
+ logger.info(
216
+ ` ${actorConfig.actorFullName} (${actorConfig.folder}): ${fileCount} files, ${zipBuffer.length} bytes zipped`,
217
+ );
193
218
  }
194
- return actorConfigs.map(({ actorFullName }) => dryRunBuildData(actorFullName, LOCAL_SOURCE_VERSION_NUMBER));
219
+ return {
220
+ dryRun: true,
221
+ builds: preparedBuilds.map(({ actorConfig, fileCount, zipBuffer }) => ({
222
+ actorFullName: actorConfig.actorFullName,
223
+ versionNumber: LOCAL_SOURCE_VERSION_NUMBER,
224
+ folder: actorConfig.folder.path,
225
+ fileCount,
226
+ zipSizeBytes: zipBuffer.length,
227
+ })),
228
+ };
195
229
  }
196
230
 
231
+ const preparedByActorFullName = new Map(
232
+ preparedBuilds.map((prepared) => [prepared.actorConfig.actorFullName, prepared]),
233
+ );
234
+
197
235
  return runAndSummarizeBuilds(actorConfigs, 'LOCAL BUILDS', async (actorConfig, builder) => {
198
- // Zipped and uploaded like `apify push` does, since inline SOURCE_FILES are capped at ~9 MB.
199
- const zip = new AdmZip();
200
- for (const { name, content } of await collectSourceFiles(actorConfig)) {
201
- zip.addFile(name, content);
202
- }
236
+ const { actorInfo, zipBuffer } = preparedByActorFullName.get(actorConfig.actorFullName)!;
203
237
  const actorVersion: ApifyClientTypes.ActorVersion = {
204
238
  versionNumber: LOCAL_SOURCE_VERSION_NUMBER,
205
- tarballUrl: await builder.uploadSourceZip(LOCAL_SOURCE_VERSION_NUMBER, zip.toBuffer()),
239
+ tarballUrl: await builder.uploadSourceZip(LOCAL_SOURCE_VERSION_NUMBER, zipBuffer),
206
240
  sourceType: ActorSourceType.Tarball,
207
241
  };
208
- return builder.createVersionAndBuild(LOCAL_SOURCE_VERSION_NUMBER, actorVersion, false);
242
+ return builder.createVersionAndBuild(LOCAL_SOURCE_VERSION_NUMBER, actorVersion, false, actorInfo);
209
243
  });
210
244
  };
package/bin/build.ts CHANGED
@@ -3,7 +3,7 @@ import { ActorSourceType, ApifyClient } from 'apify-client';
3
3
 
4
4
  import { normalizeRepoUrl } from './git.js';
5
5
  import { logger } from './logger.js';
6
- import type { ActorConfig, BuildData } from './types.js';
6
+ import type { ActorConfig, BuildData, DryRunPlan } from './types.js';
7
7
 
8
8
  type BuildPrActorOptions = {
9
9
  buildTag?: string;
@@ -179,7 +179,7 @@ export class ApifyBuilder {
179
179
  * Deletes build of all versions. Apify API doesn't allow to delete default build and we explicitly skip it
180
180
  * We delete devel builds faster because we used the for every PR until recently so just to get rid of them faster
181
181
  */
182
- async deleteOldBuilds(): Promise<void> {
182
+ async deleteOldBuilds({ dryRun }: { dryRun: boolean }): Promise<void> {
183
183
  // Even though we don't version our current Actors, if we ever such Actors to GitHub CI, we would accidentally delete old supported versions
184
184
  // This hardcoded solution is not ideal, but it should prevent most imaginable cases
185
185
  // All currently popular versioned Actors use `version-${number}` format
@@ -258,9 +258,15 @@ export class ApifyBuilder {
258
258
  });
259
259
 
260
260
  logger.info(
261
- `[DELETE OLD BUILDS][${this.actorFullName}]: Deleting ${buildsToDelete.length} old builds that are non-default and ` +
262
- `older than 30 days from total ${items.length}`,
261
+ `[DELETE OLD BUILDS][${this.actorFullName}]: ${dryRun ? '[DRY RUN] Would delete' : 'Deleting'} ${buildsToDelete.length} ` +
262
+ `old builds that are non-default and older than 30 days from total ${items.length}`,
263
263
  );
264
+ if (dryRun) {
265
+ for (const build of buildsToDelete) {
266
+ logger.info(` ${build.buildNumber} (${build.id}, started ${build.startedAt.toISOString()})`);
267
+ }
268
+ return;
269
+ }
264
270
  for (const build of buildsToDelete) {
265
271
  await this.apifyClient.build(build.id).delete();
266
272
  }
@@ -310,13 +316,13 @@ export const runAndSummarizeBuilds = async (
310
316
  return waitAndSummarizeBuilds(startedBuilds, buildersByActorFullName, label);
311
317
  };
312
318
 
313
- // Placeholder BuildData for dry runs, since no real build was triggered.
314
- export const dryRunBuildData = (actorFullName: string, versionNumber: string): BuildData => ({
315
- buildId: 'dry-run',
316
- actorRawId: 'dry-run',
317
- buildNumber: versionNumber,
318
- actorFullName,
319
- });
319
+ type GitBuildPlan = {
320
+ actorFullName: string;
321
+ versionNumber: string;
322
+ buildTag?: string;
323
+ gitRepoUrl: string;
324
+ useDockerCache: boolean;
325
+ };
320
326
 
321
327
  type RunBuildsOptions = {
322
328
  actorConfigs: ActorConfig[];
@@ -337,7 +343,7 @@ export const runBuilds = async ({
337
343
  isLatest = false,
338
344
  dryRun,
339
345
  useDockerCache,
340
- }: RunBuildsOptions): Promise<BuildData[]> => {
346
+ }: RunBuildsOptions): Promise<BuildData[] | DryRunPlan<GitBuildPlan>> => {
341
347
  // Fetched once per Actor and reused for the checks, the version numbers and the build itself
342
348
  const buildConfigs: BuildPrActorOptions[] = await Promise.all(
343
349
  actorConfigs.map(async (actorConfig) => {
@@ -366,14 +372,24 @@ export const runBuilds = async ({
366
372
  }),
367
373
  );
368
374
 
375
+ // Everything above only reads, so a dry run has checked what the real run would, short of writing
369
376
  if (dryRun) {
370
377
  logger.info('[DRY RUN] Would build:');
371
- for (const { actorConfig, versionNumber } of buildConfigs) {
372
- logger.info(` ${actorConfig.actorFullName} (${versionNumber})`);
378
+ for (const { actorConfig, versionNumber, gitRepoUrl } of buildConfigs) {
379
+ logger.info(` ${actorConfig.actorFullName} (${versionNumber}) from ${gitRepoUrl}`);
373
380
  }
374
- return buildConfigs.map(({ actorConfig, versionNumber }) =>
375
- dryRunBuildData(actorConfig.actorFullName, versionNumber),
376
- );
381
+ return {
382
+ dryRun: true,
383
+ builds: buildConfigs.map(
384
+ ({ actorConfig, versionNumber, buildTag, gitRepoUrl, useDockerCache: useCache }) => ({
385
+ actorFullName: actorConfig.actorFullName,
386
+ versionNumber,
387
+ buildTag,
388
+ gitRepoUrl,
389
+ useDockerCache: useCache,
390
+ }),
391
+ ),
392
+ };
377
393
  }
378
394
 
379
395
  const buildConfigsByActorFullName = new Map(
@@ -398,8 +414,8 @@ export const runBuilds = async ({
398
414
  });
399
415
  };
400
416
 
401
- export const deleteOldBuilds = async (actorConfigs: ActorConfig[]) => {
417
+ export const deleteOldBuilds = async (actorConfigs: ActorConfig[], { dryRun }: { dryRun: boolean }) => {
402
418
  for (const actorConfig of actorConfigs) {
403
- await ApifyBuilder.fromActorConfig(actorConfig).deleteOldBuilds();
419
+ await ApifyBuilder.fromActorConfig(actorConfig).deleteOldBuilds({ dryRun });
404
420
  }
405
421
  };
package/bin/main.ts CHANGED
@@ -64,6 +64,19 @@ const actorSelectionOptions = {
64
64
  ignore: { type: 'string', array: true, default: [] as string[] },
65
65
  } as const satisfies Record<string, Options>;
66
66
 
67
+ /**
68
+ * For commands that change something (builds, deletes, Slack posts). A dry run still does every read and check
69
+ * the real run does, credentials included, and only skips the writes. So it needs the same tokens, though
70
+ * read-only ones are enough. Read-only commands don't take it since they have nothing to skip.
71
+ */
72
+ const dryRunOptions = {
73
+ 'dry-run': {
74
+ type: 'boolean',
75
+ default: false,
76
+ describe: 'Do every read and check (tokens included) but change nothing; print what would be done',
77
+ },
78
+ } as const satisfies Record<string, Options>;
79
+
67
80
  /** Flags for commands that trigger Apify builds. */
68
81
  const buildOptions = {
69
82
  'use-docker-cache': { type: 'boolean', default: false },
@@ -77,7 +90,6 @@ const globalOptions = {
77
90
  default: 'info',
78
91
  describe: 'Minimum diagnostic level written to stderr; silent disables logging',
79
92
  },
80
- 'dry-run': { type: 'boolean', default: false },
81
93
  } as const satisfies Record<string, Options>;
82
94
 
83
95
  const resolveChangedActors = async (config: Config, { isLatest }: { isLatest: boolean }) => {
@@ -179,6 +191,7 @@ await yargs()
179
191
  '',
180
192
  (y) =>
181
193
  y
194
+ .options(dryRunOptions)
182
195
  .option('report-file', { type: 'string', demandOption: true })
183
196
  .option('report-slack-channel', { type: 'string' })
184
197
  .option('job-url', { type: 'string' })
@@ -196,6 +209,7 @@ await yargs()
196
209
  .options(actorSelectionOptions)
197
210
  .options(buildOptions)
198
211
  .options(repoUrlOptions)
212
+ .options(dryRunOptions)
199
213
  .option('test-files-glob', { type: 'string' }),
200
214
  async (config) => {
201
215
  const actorsChanged = await resolveChangedActors(config, { isLatest: false });
@@ -217,6 +231,7 @@ await yargs()
217
231
  .options(actorSelectionOptions)
218
232
  .options(buildOptions)
219
233
  .options(repoUrlOptions)
234
+ .options(dryRunOptions)
220
235
  // The last commit that is already released, everything after it up to HEAD gets released.
221
236
  // Required, see the README section "Releasing Actors" for how to set it for each merge strategy.
222
237
  .option('base-commit', { type: 'string', demandOption: true })
@@ -269,7 +284,7 @@ await yargs()
269
284
  .command(
270
285
  'build-from-local',
271
286
  '',
272
- (y) => y.options(actorSelectionOptions),
287
+ (y) => y.options(actorSelectionOptions).options(dryRunOptions),
273
288
  async ({ actors, ignore, dryRun }) => {
274
289
  const actorConfigs = await readConfigFile({ actors, ignore });
275
290
  const builds = await runBuildsFromLocal({ actorConfigs, dryRun });
@@ -279,10 +294,10 @@ await yargs()
279
294
  .command(
280
295
  'delete-old-builds',
281
296
  '',
282
- (y) => y.options(actorSelectionOptions),
283
- async ({ actors, ignore }) => {
297
+ (y) => y.options(actorSelectionOptions).options(dryRunOptions),
298
+ async ({ actors, ignore, dryRun }) => {
284
299
  const actorConfigs = await readConfigFile({ actors, ignore });
285
- await deleteOldBuilds(actorConfigs);
300
+ await deleteOldBuilds(actorConfigs, { dryRun });
286
301
  },
287
302
  )
288
303
  .strictCommands()
package/bin/slack.ts CHANGED
@@ -15,6 +15,25 @@ type NotifyToSlackOptions = {
15
15
  reportSlackChannel?: string;
16
16
  };
17
17
 
18
+ /**
19
+ * Creates the client the real run posts with. A dry run posts nothing but still requires the token and checks
20
+ * Slack accepts it (`auth.test` is read-only), so it fails wherever the real run would.
21
+ */
22
+ export const getSlackClient = async (tokenEnvVar: string, dryRun: boolean): Promise<WebClient> => {
23
+ const slack = new WebClient(getEnvVar(tokenEnvVar));
24
+ if (dryRun) {
25
+ try {
26
+ await slack.auth.test();
27
+ } catch (err) {
28
+ throw new Error(`${tokenEnvVar} was rejected by Slack: ${(err as Error).message}`);
29
+ }
30
+ logger.info(`[DRY RUN] ${tokenEnvVar} is valid`);
31
+ }
32
+ return slack;
33
+ };
34
+
35
+ export const sendingLabel = (dryRun: boolean) => (dryRun ? '[DRY RUN] Would send' : 'Sending');
36
+
18
37
  // Git authors come as "Name<email>", Slack only needs the name
19
38
  const displayName = (author: string) => author.replace(/\s*<[^>]*>$/, '');
20
39
 
@@ -28,19 +47,23 @@ export const notifyToSlack = async ({
28
47
  releaseSlackChannel,
29
48
  reportSlackChannel,
30
49
  }: NotifyToSlackOptions) => {
31
- const slack = new WebClient(getEnvVar('SLACK_TOKEN_RELEASES_BOT'));
32
-
33
50
  if (!changelog) {
34
51
  logger.warn('No new changelog entries found, did you forget to update it?');
35
52
  }
36
53
 
54
+ if (!releaseSlackChannel && !reportSlackChannel) {
55
+ logger.info('Skipping slack notification, no --release-slack-channel or --report-slack-channel passed');
56
+ return;
57
+ }
58
+ const slack = await getSlackClient('SLACK_TOKEN_RELEASES_BOT', dryRun);
59
+
37
60
  let shortMessage = `*${repository}* – New release (by ${displayName(author)}):\n\n`;
38
61
 
39
62
  // This one is just for broader public that only cares about public facing changes
40
63
  if (changelog && releaseSlackChannel) {
41
64
  shortMessage += `*Additions to the changelog*:\n\n${changelog}\n`;
42
65
  logger.info(`=========================================`);
43
- logger.info(`**Sending slack message to channel**: ${releaseSlackChannel}.\n\n${shortMessage}`);
66
+ logger.info(`**${sendingLabel(dryRun)} slack message to channel**: ${releaseSlackChannel}.\n\n${shortMessage}`);
44
67
  logger.info(`=========================================`);
45
68
  if (!dryRun) {
46
69
  await slack.chat.postMessage({
@@ -62,7 +85,7 @@ export const notifyToSlack = async ({
62
85
  // This one is for devs and project managers that need to know more details
63
86
  if (reportSlackChannel) {
64
87
  logger.info(`=========================================`);
65
- logger.info(`Sending slack message to channel: ${reportSlackChannel}.\n\n${longMessage}`);
88
+ logger.info(`${sendingLabel(dryRun)} slack message to channel: ${reportSlackChannel}.\n\n${longMessage}`);
66
89
  logger.info(`=========================================`);
67
90
  if (!dryRun) {
68
91
  await slack.chat.postMessage({
@@ -73,8 +96,7 @@ export const notifyToSlack = async ({
73
96
  }
74
97
  };
75
98
 
76
- export const sendSlackMessage = async (channel: string, text: string, blocks: string[], token: string) => {
77
- const slack = new WebClient(token);
99
+ export const sendSlackMessage = async (slack: WebClient, channel: string, text: string, blocks: string[]) => {
78
100
  const { ts } = await slack.chat.postMessage({ text, channel });
79
101
  if (blocks.length > 0 && ts) {
80
102
  await slack.chat.postMessage({
@@ -1,8 +1,7 @@
1
1
  import fs from 'node:fs/promises';
2
2
 
3
3
  import { logger } from './logger.js';
4
- import { sendSlackMessage } from './slack.js';
5
- import { getEnvVar } from './utils.js';
4
+ import { getSlackClient, sendingLabel, sendSlackMessage } from './slack.js';
6
5
 
7
6
  interface ReportTestResultsOptions {
8
7
  reportFile: string;
@@ -80,6 +79,9 @@ export const reportTestResults = async ({
80
79
  );
81
80
  return;
82
81
  }
82
+ // Checked before knowing if there's anything to send, so a broken token shows up on a green run
83
+ // (and in dry runs) rather than on the day tests fail
84
+ const slack = await getSlackClient('SLACK_TOKEN_TESTS_BOT', dryRun);
83
85
 
84
86
  if (failedAssertions.length === 0) {
85
87
  return;
@@ -95,16 +97,11 @@ export const reportTestResults = async ({
95
97
  .slice(1)
96
98
  .map(({ message, runLink, actorId }) => `• ${message} --- <${runLink}|${actorId}>`);
97
99
 
98
- logger.info('SLACK:', slackMessage);
100
+ logger.info(`${sendingLabel(dryRun)} slack message to channel ${reportSlackChannel}:`, slackMessage);
99
101
  logger.info('\tblocks:', blocks.join('\n\t\t'));
100
102
 
101
- if (!reportSlackChannel) {
102
- return;
103
- }
104
-
105
103
  if (!dryRun) {
106
- const slackToken = getEnvVar('SLACK_TOKEN_TESTS_BOT');
107
- await sendSlackMessage(reportSlackChannel, slackMessage, blocks, slackToken);
104
+ await sendSlackMessage(slack, reportSlackChannel, slackMessage, blocks);
108
105
  }
109
106
  };
110
107
 
package/bin/types.ts CHANGED
@@ -24,6 +24,15 @@ export interface BuildData {
24
24
  buildNumber: string;
25
25
  }
26
26
 
27
+ /**
28
+ * What a dry run writes to stdout instead of the command's real result. It's an object, not an array, so
29
+ * it can't be mistaken for real builds: `ACTOR_BUILDS` rejects it before any test runs.
30
+ */
31
+ export interface DryRunPlan<T> {
32
+ dryRun: true;
33
+ builds: T[];
34
+ }
35
+
27
36
  export interface ActorConfig {
28
37
  actorFullName: string;
29
38
  folder: ExistingDir;
@@ -1,4 +1,4 @@
1
- import type { ActorConfig, BuildData } from './types.js';
1
+ import type { ActorConfig, BuildData, DryRunPlan } from './types.js';
2
2
  import type { SourceFile } from './utils.js';
3
3
  import type { RelativeDir } from './utils/path/repo-relative.js';
4
4
  export declare const collectSourceFiles: (actorConfig: ActorConfig) => Promise<SourceFile[]>;
@@ -8,8 +8,16 @@ export declare const flattenMonorepoContext: (actorName: string, absActorDir: st
8
8
  filePaths: string[];
9
9
  }>;
10
10
  export declare const rewriteActorJsonPaths: (absActorDir: string, contextAbsDir: string, tempDir: string, actorJson: Record<string, unknown>) => Promise<void>;
11
+ type LocalBuildPlan = {
12
+ actorFullName: string;
13
+ versionNumber: string;
14
+ folder: string;
15
+ fileCount: number;
16
+ zipSizeBytes: number;
17
+ };
11
18
  export declare const runBuildsFromLocal: ({ actorConfigs, dryRun, }: {
12
19
  actorConfigs: ActorConfig[];
13
20
  dryRun: boolean;
14
- }) => Promise<BuildData[]>;
21
+ }) => Promise<BuildData[] | DryRunPlan<LocalBuildPlan>>;
22
+ export {};
15
23
  //# sourceMappingURL=build-from-local.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-from-local.d.ts","sourceRoot":"","sources":["../../bin/build-from-local.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AASjE,eAAO,MAAM,kBAAkB,GAAU,aAAa,WAAW,KAAG,OAAO,CAAC,UAAU,EAAE,CA8BvF,CAAC;AAWF,eAAO,MAAM,sBAAsB,GAAU,kBAAkB,WAAW,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAc9G,CAAC;AAaF,eAAO,MAAM,sBAAsB,GAC/B,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,eAAe,MAAM,EACrB,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,kBAAkB,MAAM,EAAE,KAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAyClD,CAAC;AAcF,eAAO,MAAM,qBAAqB,GAC9B,aAAa,MAAM,EACnB,eAAe,MAAM,EACrB,SAAS,MAAM,EACf,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,IAAI,CAqBd,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,2BAGtC;IACC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACnB,KAAG,OAAO,CAAC,SAAS,EAAE,CAsBtB,CAAC"}
1
+ {"version":3,"file":"build-from-local.d.ts","sourceRoot":"","sources":["../../bin/build-from-local.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AASjE,eAAO,MAAM,kBAAkB,GAAU,aAAa,WAAW,KAAG,OAAO,CAAC,UAAU,EAAE,CA8BvF,CAAC;AAWF,eAAO,MAAM,sBAAsB,GAAU,kBAAkB,WAAW,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAc9G,CAAC;AAaF,eAAO,MAAM,sBAAsB,GAC/B,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,eAAe,MAAM,EACrB,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,kBAAkB,MAAM,EAAE,KAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAyClD,CAAC;AAcF,eAAO,MAAM,qBAAqB,GAC9B,aAAa,MAAM,EACnB,eAAe,MAAM,EACrB,SAAS,MAAM,EACf,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,IAAI,CAqBd,CAAC;AAEF,KAAK,cAAc,GAAG;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,2BAGtC;IACC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACnB,KAAG,OAAO,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAgDnD,CAAC"}
@@ -3,7 +3,7 @@ import os from 'node:os';
3
3
  import path from 'node:path';
4
4
  import AdmZip from 'adm-zip';
5
5
  import { ActorSourceType } from 'apify-client';
6
- import { dryRunBuildData, LOCAL_SOURCE_VERSION_NUMBER, runAndSummarizeBuilds } from './build.js';
6
+ import { ApifyBuilder, LOCAL_SOURCE_VERSION_NUMBER, runAndSummarizeBuilds } from './build.js';
7
7
  import { loadDockerIgnore } from './dockerignore.js';
8
8
  import { logger } from './logger.js';
9
9
  import { isPathWithinScope } from './path-utils.js';
@@ -140,25 +140,43 @@ export const rewriteActorJsonPaths = async (absActorDir, contextAbsDir, tempDir,
140
140
  await fs.writeFile(path.join(newActorDir, 'actor.json'), JSON.stringify(rewritten, null, 4));
141
141
  };
142
142
  export const runBuildsFromLocal = async ({ actorConfigs, dryRun, }) => {
143
+ // Read-only preparation shared with the real build, so a dry run fails on a missing token, an unknown
144
+ // Actor or unreadable sources just like the build would
145
+ const preparedBuilds = await Promise.all(actorConfigs.map(async (actorConfig) => {
146
+ const actorInfo = await ApifyBuilder.fromActorConfig(actorConfig).getActorInfo();
147
+ // Zipped and uploaded like `apify push` does, since inline SOURCE_FILES are capped at ~9 MB.
148
+ const zip = new AdmZip();
149
+ const sourceFiles = await collectSourceFiles(actorConfig);
150
+ for (const { name, content } of sourceFiles) {
151
+ zip.addFile(name, content);
152
+ }
153
+ return { actorConfig, actorInfo, fileCount: sourceFiles.length, zipBuffer: zip.toBuffer() };
154
+ }));
143
155
  if (dryRun) {
144
156
  logger.info('[DRY RUN] Would build from local source:');
145
- for (const { actorFullName, folder } of actorConfigs) {
146
- logger.info(` ${actorFullName} (${folder})`);
157
+ for (const { actorConfig, fileCount, zipBuffer } of preparedBuilds) {
158
+ logger.info(` ${actorConfig.actorFullName} (${actorConfig.folder}): ${fileCount} files, ${zipBuffer.length} bytes zipped`);
147
159
  }
148
- return actorConfigs.map(({ actorFullName }) => dryRunBuildData(actorFullName, LOCAL_SOURCE_VERSION_NUMBER));
160
+ return {
161
+ dryRun: true,
162
+ builds: preparedBuilds.map(({ actorConfig, fileCount, zipBuffer }) => ({
163
+ actorFullName: actorConfig.actorFullName,
164
+ versionNumber: LOCAL_SOURCE_VERSION_NUMBER,
165
+ folder: actorConfig.folder.path,
166
+ fileCount,
167
+ zipSizeBytes: zipBuffer.length,
168
+ })),
169
+ };
149
170
  }
171
+ const preparedByActorFullName = new Map(preparedBuilds.map((prepared) => [prepared.actorConfig.actorFullName, prepared]));
150
172
  return runAndSummarizeBuilds(actorConfigs, 'LOCAL BUILDS', async (actorConfig, builder) => {
151
- // Zipped and uploaded like `apify push` does, since inline SOURCE_FILES are capped at ~9 MB.
152
- const zip = new AdmZip();
153
- for (const { name, content } of await collectSourceFiles(actorConfig)) {
154
- zip.addFile(name, content);
155
- }
173
+ const { actorInfo, zipBuffer } = preparedByActorFullName.get(actorConfig.actorFullName);
156
174
  const actorVersion = {
157
175
  versionNumber: LOCAL_SOURCE_VERSION_NUMBER,
158
- tarballUrl: await builder.uploadSourceZip(LOCAL_SOURCE_VERSION_NUMBER, zip.toBuffer()),
176
+ tarballUrl: await builder.uploadSourceZip(LOCAL_SOURCE_VERSION_NUMBER, zipBuffer),
159
177
  sourceType: ActorSourceType.Tarball,
160
178
  };
161
- return builder.createVersionAndBuild(LOCAL_SOURCE_VERSION_NUMBER, actorVersion, false);
179
+ return builder.createVersionAndBuild(LOCAL_SOURCE_VERSION_NUMBER, actorVersion, false, actorInfo);
162
180
  });
163
181
  };
164
182
  //# sourceMappingURL=build-from-local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-from-local.js","sourceRoot":"","sources":["../../bin/build-from-local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-from-local.js","sourceRoot":"","sources":["../../bin/build-from-local.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type * as ApifyClientTypes from 'apify-client';
2
- import type { ActorConfig, BuildData } from './types.js';
2
+ import type { ActorConfig, BuildData, DryRunPlan } from './types.js';
3
3
  export declare const LOCAL_SOURCE_VERSION_NUMBER = "0.98";
4
4
  /**
5
5
  * Finds the Actor's default version: the one whose build the default build tag points to.
@@ -38,11 +38,19 @@ export declare class ApifyBuilder {
38
38
  * Deletes build of all versions. Apify API doesn't allow to delete default build and we explicitly skip it
39
39
  * We delete devel builds faster because we used the for every PR until recently so just to get rid of them faster
40
40
  */
41
- deleteOldBuilds(): Promise<void>;
41
+ deleteOldBuilds({ dryRun }: {
42
+ dryRun: boolean;
43
+ }): Promise<void>;
42
44
  }
43
45
  export declare const waitAndSummarizeBuilds: (startedBuilds: BuildData[], buildersMap: Map<string, ApifyBuilder>, label: string) => Promise<BuildData[]>;
44
46
  export declare const runAndSummarizeBuilds: (actorConfigs: ActorConfig[], label: string, buildOneActor: (actorConfig: ActorConfig, builder: ApifyBuilder) => Promise<BuildData>) => Promise<BuildData[]>;
45
- export declare const dryRunBuildData: (actorFullName: string, versionNumber: string) => BuildData;
47
+ type GitBuildPlan = {
48
+ actorFullName: string;
49
+ versionNumber: string;
50
+ buildTag?: string;
51
+ gitRepoUrl: string;
52
+ useDockerCache: boolean;
53
+ };
46
54
  type RunBuildsOptions = {
47
55
  actorConfigs: ActorConfig[];
48
56
  isLatest?: boolean;
@@ -52,7 +60,9 @@ type RunBuildsOptions = {
52
60
  dryRun: boolean;
53
61
  useDockerCache: boolean;
54
62
  };
55
- export declare const runBuilds: ({ repoUrl, shouldVerifyRepoUrl, branch, actorConfigs, isLatest, dryRun, useDockerCache, }: RunBuildsOptions) => Promise<BuildData[]>;
56
- export declare const deleteOldBuilds: (actorConfigs: ActorConfig[]) => Promise<void>;
63
+ export declare const runBuilds: ({ repoUrl, shouldVerifyRepoUrl, branch, actorConfigs, isLatest, dryRun, useDockerCache, }: RunBuildsOptions) => Promise<BuildData[] | DryRunPlan<GitBuildPlan>>;
64
+ export declare const deleteOldBuilds: (actorConfigs: ActorConfig[], { dryRun }: {
65
+ dryRun: boolean;
66
+ }) => Promise<void>;
57
67
  export {};
58
68
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,gBAAgB,MAAM,cAAc,CAAC;AAKtD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYzD,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAQlD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,eAAe,MAAM,EAAE,WAAW,gBAAgB,CAAC,KAAK;;;;;CAsB7F,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,GAC3C,eAAe,MAAM,EACrB,gBAAgB,gBAAgB,CAAC,YAAY,GAAG,SAAS,EACzD,SAAS,MAAM,SAoBlB,CAAC;AAEF,qBAAa,YAAY;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAFlC,OAAO;IAKP,YAAY,QAAa,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAQtD;IAEF,uBAAuB;;;;;OAAoF;IAI3G,eAAe,GAAU,eAAe,MAAM,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAY3E;IAGF,qBAAqB,GACjB,eAAe,MAAM,EACrB,cAAc,gBAAgB,CAAC,YAAY,EAC3C,UAAU,OAAO,EACjB,YAAY,gBAAgB,CAAC,KAAK,KACnC,OAAO,CAAC,SAAS,CAAC,CAmBnB;IAEF,oBAAoB,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAmB7E;IAEF,MAAM,CAAC,eAAe,GAAI,aAAa,WAAW,KAAG,YAAY,CAQ/D;IAEF;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAsFzC;AAED,eAAO,MAAM,sBAAsB,GAC/B,eAAe,SAAS,EAAE,EAC1B,aAAa,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACtC,OAAO,MAAM,KACd,OAAO,CAAC,SAAS,EAAE,CAkBrB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAC9B,cAAc,WAAW,EAAE,EAC3B,OAAO,MAAM,EACb,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,SAAS,CAAC,KACvF,OAAO,CAAC,SAAS,EAAE,CAarB,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,eAAe,MAAM,EAAE,eAAe,MAAM,KAAG,SAK7E,CAAC;AAEH,KAAK,gBAAgB,GAAG;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,2FAQ7B,gBAAgB,KAAG,OAAO,CAAC,SAAS,EAAE,CA2DxC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,cAAc,WAAW,EAAE,kBAIhE,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,gBAAgB,MAAM,cAAc,CAAC;AAKtD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAYrE,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAQlD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,eAAe,MAAM,EAAE,WAAW,gBAAgB,CAAC,KAAK;;;;;CAsB7F,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,GAC3C,eAAe,MAAM,EACrB,gBAAgB,gBAAgB,CAAC,YAAY,GAAG,SAAS,EACzD,SAAS,MAAM,SAoBlB,CAAC;AAEF,qBAAa,YAAY;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAFlC,OAAO;IAKP,YAAY,QAAa,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAQtD;IAEF,uBAAuB;;;;;OAAoF;IAI3G,eAAe,GAAU,eAAe,MAAM,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAY3E;IAGF,qBAAqB,GACjB,eAAe,MAAM,EACrB,cAAc,gBAAgB,CAAC,YAAY,EAC3C,UAAU,OAAO,EACjB,YAAY,gBAAgB,CAAC,KAAK,KACnC,OAAO,CAAC,SAAS,CAAC,CAmBnB;IAEF,oBAAoB,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAmB7E;IAEF,MAAM,CAAC,eAAe,GAAI,aAAa,WAAW,KAAG,YAAY,CAQ/D;IAEF;;;OAGG;IACG,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA4FxE;AAED,eAAO,MAAM,sBAAsB,GAC/B,eAAe,SAAS,EAAE,EAC1B,aAAa,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACtC,OAAO,MAAM,KACd,OAAO,CAAC,SAAS,EAAE,CAkBrB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAC9B,cAAc,WAAW,EAAE,EAC3B,OAAO,MAAM,EACb,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,SAAS,CAAC,KACvF,OAAO,CAAC,SAAS,EAAE,CAarB,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,2FAQ7B,gBAAgB,KAAG,OAAO,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAqEnE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,cAAc,WAAW,EAAE,EAAE,YAAY;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,kBAIjG,CAAC"}