apify-test-tools 0.9.1-beta.0 → 0.9.1-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.
- package/.github/CODEOWNERS +1 -2
- package/bin/build-from-local.ts +13 -22
- package/bin/build.ts +66 -70
- package/dist/bin/build-from-local.d.ts.map +1 -1
- package/dist/bin/build-from-local.js +12 -16
- package/dist/bin/build-from-local.js.map +1 -1
- package/dist/bin/build.d.ts +6 -11
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +37 -50
- package/dist/bin/build.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/.github/CODEOWNERS
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
* @ruocco-l
|
|
2
|
-
* @metalwarrior665
|
|
1
|
+
* @ruocco-l @metalwarrior665
|
package/bin/build-from-local.ts
CHANGED
|
@@ -2,9 +2,10 @@ import fs from 'node:fs/promises';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
|
|
5
|
-
import type { ActorVersionSourceFile } from 'apify-client';
|
|
5
|
+
import type { ActorVersion, ActorVersionSourceFile } from 'apify-client';
|
|
6
|
+
import { ActorSourceType } from 'apify-client';
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
+
import { dryRunBuildData, LOCAL_SOURCE_VERSION_NUMBER, runAndSummarizeBuilds } from './build.js';
|
|
8
9
|
import { buildDockerIgnoreMatcher } from './dockerignore.js';
|
|
9
10
|
import { isPathWithinScope } from './path-utils.js';
|
|
10
11
|
import type { ActorConfig, BuildData } from './types.js';
|
|
@@ -197,26 +198,16 @@ export const runBuildsFromLocal = async ({
|
|
|
197
198
|
for (const { actorFullName, folder } of actorConfigs) {
|
|
198
199
|
console.error(` ${actorFullName} (${folder})`);
|
|
199
200
|
}
|
|
200
|
-
return actorConfigs.map(({ actorFullName }) => (
|
|
201
|
-
buildId: 'dry-run',
|
|
202
|
-
actorRawId: 'dry-run',
|
|
203
|
-
buildNumber: '0.98.0',
|
|
204
|
-
actorFullName,
|
|
205
|
-
}));
|
|
201
|
+
return actorConfigs.map(({ actorFullName }) => dryRunBuildData(actorFullName, LOCAL_SOURCE_VERSION_NUMBER));
|
|
206
202
|
}
|
|
207
203
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
return builder.startActorBuildFromSourceFiles(sourceFiles);
|
|
218
|
-
}),
|
|
219
|
-
);
|
|
220
|
-
|
|
221
|
-
return waitAndSummarizeBuilds(startedBuilds, buildersByActorFullName, 'LOCAL BUILDS');
|
|
204
|
+
return runAndSummarizeBuilds(actorConfigs, 'LOCAL BUILDS', async (actorConfig, builder) => {
|
|
205
|
+
const sourceFiles = await collectSourceFiles(actorConfig.actorFullName, actorConfig.folder);
|
|
206
|
+
const actorVersion: ActorVersion = {
|
|
207
|
+
versionNumber: LOCAL_SOURCE_VERSION_NUMBER,
|
|
208
|
+
sourceFiles,
|
|
209
|
+
sourceType: ActorSourceType.SourceFiles,
|
|
210
|
+
};
|
|
211
|
+
return builder.createVersionAndBuild(LOCAL_SOURCE_VERSION_NUMBER, actorVersion, false);
|
|
212
|
+
});
|
|
222
213
|
};
|
package/bin/build.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { ApifyClient } from 'apify-client';
|
|
3
|
-
|
|
4
|
-
import { ACTOR_SOURCE_TYPES } from '@apify/consts';
|
|
1
|
+
import type { ActorVersion, Build } from 'apify-client';
|
|
2
|
+
import { ActorSourceType, ApifyClient } from 'apify-client';
|
|
5
3
|
|
|
6
4
|
import type { ActorConfig, BuildData } from './types.js';
|
|
7
5
|
|
|
@@ -12,6 +10,11 @@ type BuildPrActorOptions = {
|
|
|
12
10
|
actorConfig: ActorConfig;
|
|
13
11
|
useDockerCache: boolean;
|
|
14
12
|
};
|
|
13
|
+
|
|
14
|
+
// Fixed version number used to build from local source files, since there is no real version to track.
|
|
15
|
+
export const LOCAL_SOURCE_VERSION_NUMBER = '0.98';
|
|
16
|
+
const DEFAULT_TEST_VERSION_NUMBER = '0.99';
|
|
17
|
+
|
|
15
18
|
export class ApifyBuilder {
|
|
16
19
|
private constructor(
|
|
17
20
|
private readonly apifyClient: ApifyClient,
|
|
@@ -57,12 +60,11 @@ export class ApifyBuilder {
|
|
|
57
60
|
return { defaultBuildNumber, defaultVersionNumber, defaultBuildTag };
|
|
58
61
|
};
|
|
59
62
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}: BuildPrActorOptions): Promise<BuildData> => {
|
|
63
|
+
createVersionAndBuild = async (
|
|
64
|
+
versionNumber: string,
|
|
65
|
+
actorVersion: ActorVersion,
|
|
66
|
+
useCache: boolean,
|
|
67
|
+
): Promise<BuildData> => {
|
|
66
68
|
const actorClient = this.apifyClient.actor(this.actorFullName);
|
|
67
69
|
const actorInfo = await actorClient.get();
|
|
68
70
|
if (!actorInfo) {
|
|
@@ -73,17 +75,6 @@ export class ApifyBuilder {
|
|
|
73
75
|
);
|
|
74
76
|
}
|
|
75
77
|
|
|
76
|
-
// NOTE: I couldn't find this type, so I had to extract it :(
|
|
77
|
-
type ActorVersion = Parameters<ReturnType<typeof actorClient.version>['update']>[0];
|
|
78
|
-
const actorVersion: ActorVersion = {
|
|
79
|
-
buildTag,
|
|
80
|
-
versionNumber,
|
|
81
|
-
gitRepoUrl,
|
|
82
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
83
|
-
// @ts-ignore: coudn't find this type either :(
|
|
84
|
-
sourceType: ACTOR_SOURCE_TYPES.GIT_REPO,
|
|
85
|
-
};
|
|
86
|
-
|
|
87
78
|
// Prepare version
|
|
88
79
|
const versionExists = !actorInfo.versions.find((version) => version.versionNumber === versionNumber);
|
|
89
80
|
if (versionExists) {
|
|
@@ -95,45 +86,12 @@ export class ApifyBuilder {
|
|
|
95
86
|
}
|
|
96
87
|
|
|
97
88
|
// We also get back actId so the testing actor can both match by actor ID and name
|
|
98
|
-
const { id, actId, buildNumber } = await actorClient.build(versionNumber, { useCache
|
|
89
|
+
const { id, actId, buildNumber } = await actorClient.build(versionNumber, { useCache });
|
|
99
90
|
|
|
100
91
|
console.error(`[${this.actorFullName}]: ${id} (${buildNumber})`);
|
|
101
92
|
return { buildId: id, actorRawId: actId, buildNumber, actorFullName: this.actorFullName };
|
|
102
93
|
};
|
|
103
94
|
|
|
104
|
-
startActorBuildFromSourceFiles = async (sourceFiles: ActorVersionSourceFile[]): Promise<BuildData> => {
|
|
105
|
-
const ZIP_VERSION = '0.98';
|
|
106
|
-
const actorClient = this.apifyClient.actor(this.actorFullName);
|
|
107
|
-
const actorInfo = await actorClient.get();
|
|
108
|
-
if (!actorInfo) {
|
|
109
|
-
throw new Error(
|
|
110
|
-
`No actor named '${this.actorFullName}' was found on the platform. If this` +
|
|
111
|
-
' is unexpected, make sure the actor you are targeting is spelled the' +
|
|
112
|
-
' same as the folder in the repository.',
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
type ActorVersion = Parameters<ReturnType<typeof actorClient.version>['update']>[0];
|
|
117
|
-
const actorVersion: ActorVersion = {
|
|
118
|
-
versionNumber: ZIP_VERSION,
|
|
119
|
-
sourceFiles,
|
|
120
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
121
|
-
// @ts-ignore: couldn't find this type :(
|
|
122
|
-
sourceType: ACTOR_SOURCE_TYPES.SOURCE_FILES,
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
const versionExists = !actorInfo.versions.find((v) => v.versionNumber === ZIP_VERSION);
|
|
126
|
-
if (versionExists) {
|
|
127
|
-
await actorClient.versions().create(actorVersion);
|
|
128
|
-
} else {
|
|
129
|
-
await actorClient.version(ZIP_VERSION).update(actorVersion);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const { id, actId, buildNumber } = await actorClient.build(ZIP_VERSION, { useCache: false });
|
|
133
|
-
console.error(`[${this.actorFullName}]: ${id} (${buildNumber})`);
|
|
134
|
-
return { buildId: id, actorRawId: actId, buildNumber, actorFullName: this.actorFullName };
|
|
135
|
-
};
|
|
136
|
-
|
|
137
95
|
waitForBuildToFinish = async (buildId: string): Promise<Build> => {
|
|
138
96
|
const build = await this.apifyClient.build(buildId).waitForFinish();
|
|
139
97
|
const versionNumber = build.buildNumber;
|
|
@@ -281,6 +239,33 @@ export const waitAndSummarizeBuilds = async (
|
|
|
281
239
|
return startedBuilds;
|
|
282
240
|
};
|
|
283
241
|
|
|
242
|
+
export const runAndSummarizeBuilds = async (
|
|
243
|
+
actorConfigs: ActorConfig[],
|
|
244
|
+
label: string,
|
|
245
|
+
buildOneActor: (actorConfig: ActorConfig, builder: ApifyBuilder) => Promise<BuildData>,
|
|
246
|
+
): Promise<BuildData[]> => {
|
|
247
|
+
const buildersByActorFullName = new Map<string, ApifyBuilder>(
|
|
248
|
+
actorConfigs.map((actorConfig) => [actorConfig.actorFullName, ApifyBuilder.fromActorConfig(actorConfig)]),
|
|
249
|
+
);
|
|
250
|
+
console.error('=========================================');
|
|
251
|
+
console.error(`STARTED ${label}:`);
|
|
252
|
+
const startedBuilds = await Promise.all(
|
|
253
|
+
actorConfigs.map(async (actorConfig) =>
|
|
254
|
+
buildOneActor(actorConfig, buildersByActorFullName.get(actorConfig.actorFullName)!),
|
|
255
|
+
),
|
|
256
|
+
);
|
|
257
|
+
|
|
258
|
+
return waitAndSummarizeBuilds(startedBuilds, buildersByActorFullName, label);
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
// Placeholder BuildData for dry runs, since no real build was triggered.
|
|
262
|
+
export const dryRunBuildData = (actorFullName: string, versionNumber: string): BuildData => ({
|
|
263
|
+
buildId: 'dry-run',
|
|
264
|
+
actorRawId: 'dry-run',
|
|
265
|
+
buildNumber: versionNumber,
|
|
266
|
+
actorFullName,
|
|
267
|
+
});
|
|
268
|
+
|
|
284
269
|
type RunBuildsOptions = {
|
|
285
270
|
actorConfigs: ActorConfig[];
|
|
286
271
|
isLatest?: boolean;
|
|
@@ -297,7 +282,7 @@ export const runBuilds = async ({
|
|
|
297
282
|
isLatest = false,
|
|
298
283
|
dryRun,
|
|
299
284
|
useDockerCache,
|
|
300
|
-
}: RunBuildsOptions) => {
|
|
285
|
+
}: RunBuildsOptions): Promise<BuildData[]> => {
|
|
301
286
|
const buildConfigs: BuildPrActorOptions[] = [];
|
|
302
287
|
|
|
303
288
|
for (const actorConfig of actorConfigs) {
|
|
@@ -310,7 +295,7 @@ export const runBuilds = async ({
|
|
|
310
295
|
versionNumber = defaultVersionNumber;
|
|
311
296
|
buildTag = defaultBuildTag;
|
|
312
297
|
} else {
|
|
313
|
-
versionNumber =
|
|
298
|
+
versionNumber = DEFAULT_TEST_VERSION_NUMBER;
|
|
314
299
|
}
|
|
315
300
|
|
|
316
301
|
// Depending on if these are miniactors or standaloneActors
|
|
@@ -322,23 +307,34 @@ export const runBuilds = async ({
|
|
|
322
307
|
}
|
|
323
308
|
|
|
324
309
|
if (dryRun) {
|
|
325
|
-
|
|
310
|
+
console.error('[DRY RUN] Would build:');
|
|
311
|
+
for (const { actorConfig, versionNumber } of buildConfigs) {
|
|
312
|
+
console.error(` ${actorConfig.actorFullName} (${versionNumber})`);
|
|
313
|
+
}
|
|
314
|
+
return buildConfigs.map(({ actorConfig, versionNumber }) =>
|
|
315
|
+
dryRunBuildData(actorConfig.actorFullName, versionNumber),
|
|
316
|
+
);
|
|
326
317
|
}
|
|
327
318
|
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
);
|
|
331
|
-
console.error('=========================================');
|
|
332
|
-
console.error('STARTED BUILDS:');
|
|
333
|
-
const startedBuilds = await Promise.all(
|
|
334
|
-
buildConfigs.map(async (buildConfig) => {
|
|
335
|
-
const builder = buildersByActorFullName.get(buildConfig.actorConfig.actorFullName)!;
|
|
336
|
-
const buildData = await builder.startActorBuild(buildConfig);
|
|
337
|
-
return buildData;
|
|
338
|
-
}),
|
|
319
|
+
const buildConfigsByActorFullName = new Map(
|
|
320
|
+
buildConfigs.map((buildConfig) => [buildConfig.actorConfig.actorFullName, buildConfig]),
|
|
339
321
|
);
|
|
340
322
|
|
|
341
|
-
return
|
|
323
|
+
return runAndSummarizeBuilds(actorConfigs, 'BUILDS', async (actorConfig, builder) => {
|
|
324
|
+
const {
|
|
325
|
+
buildTag,
|
|
326
|
+
versionNumber,
|
|
327
|
+
gitRepoUrl,
|
|
328
|
+
useDockerCache: useCache,
|
|
329
|
+
} = buildConfigsByActorFullName.get(actorConfig.actorFullName)!;
|
|
330
|
+
const actorVersion: ActorVersion = {
|
|
331
|
+
buildTag,
|
|
332
|
+
versionNumber,
|
|
333
|
+
gitRepoUrl,
|
|
334
|
+
sourceType: ActorSourceType.GitRepo,
|
|
335
|
+
};
|
|
336
|
+
return builder.createVersionAndBuild(versionNumber, actorVersion, useCache);
|
|
337
|
+
});
|
|
342
338
|
};
|
|
343
339
|
|
|
344
340
|
export const deleteOldBuilds = async (actorConfigs: ActorConfig[]) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-from-local.d.ts","sourceRoot":"","sources":["../../bin/build-from-local.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"build-from-local.d.ts","sourceRoot":"","sources":["../../bin/build-from-local.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAMzE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUzD,eAAO,MAAM,kBAAkB,GAAU,WAAW,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,sBAAsB,EAAE,CAmC9G,CAAC;AAWF,eAAO,MAAM,sBAAsB,GAAI,kBAAkB,MAAM,EAAE,UAAU,MAAM,KAAG,MAAM,EAoBzF,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,CAkBtB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import {
|
|
4
|
+
import { ActorSourceType } from 'apify-client';
|
|
5
|
+
import { dryRunBuildData, LOCAL_SOURCE_VERSION_NUMBER, runAndSummarizeBuilds } from './build.js';
|
|
5
6
|
import { buildDockerIgnoreMatcher } from './dockerignore.js';
|
|
6
7
|
import { isPathWithinScope } from './path-utils.js';
|
|
7
8
|
import { getGitignoredPaths, isOutsideDir, listRepoFilePaths, toActorVersionSourceFile } from './utils.js';
|
|
@@ -149,21 +150,16 @@ export const runBuildsFromLocal = async ({ actorConfigs, dryRun, }) => {
|
|
|
149
150
|
for (const { actorFullName, folder } of actorConfigs) {
|
|
150
151
|
console.error(` ${actorFullName} (${folder})`);
|
|
151
152
|
}
|
|
152
|
-
return actorConfigs.map(({ actorFullName }) => (
|
|
153
|
-
buildId: 'dry-run',
|
|
154
|
-
actorRawId: 'dry-run',
|
|
155
|
-
buildNumber: '0.98.0',
|
|
156
|
-
actorFullName,
|
|
157
|
-
}));
|
|
153
|
+
return actorConfigs.map(({ actorFullName }) => dryRunBuildData(actorFullName, LOCAL_SOURCE_VERSION_NUMBER));
|
|
158
154
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
155
|
+
return runAndSummarizeBuilds(actorConfigs, 'LOCAL BUILDS', async (actorConfig, builder) => {
|
|
156
|
+
const sourceFiles = await collectSourceFiles(actorConfig.actorFullName, actorConfig.folder);
|
|
157
|
+
const actorVersion = {
|
|
158
|
+
versionNumber: LOCAL_SOURCE_VERSION_NUMBER,
|
|
159
|
+
sourceFiles,
|
|
160
|
+
sourceType: ActorSourceType.SourceFiles,
|
|
161
|
+
};
|
|
162
|
+
return builder.createVersionAndBuild(LOCAL_SOURCE_VERSION_NUMBER, actorVersion, false);
|
|
163
|
+
});
|
|
168
164
|
};
|
|
169
165
|
//# 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":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"build-from-local.js","sourceRoot":"","sources":["../../bin/build-from-local.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/build.d.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ActorVersion, Build } from 'apify-client';
|
|
2
2
|
import type { ActorConfig, BuildData } from './types.js';
|
|
3
|
-
|
|
4
|
-
buildTag?: string;
|
|
5
|
-
versionNumber: string;
|
|
6
|
-
gitRepoUrl: string;
|
|
7
|
-
actorConfig: ActorConfig;
|
|
8
|
-
useDockerCache: boolean;
|
|
9
|
-
};
|
|
3
|
+
export declare const LOCAL_SOURCE_VERSION_NUMBER = "0.98";
|
|
10
4
|
export declare class ApifyBuilder {
|
|
11
5
|
private readonly apifyClient;
|
|
12
6
|
private readonly actorFullName;
|
|
@@ -16,8 +10,7 @@ export declare class ApifyBuilder {
|
|
|
16
10
|
defaultVersionNumber: string;
|
|
17
11
|
defaultBuildTag: string;
|
|
18
12
|
}>;
|
|
19
|
-
|
|
20
|
-
startActorBuildFromSourceFiles: (sourceFiles: ActorVersionSourceFile[]) => Promise<BuildData>;
|
|
13
|
+
createVersionAndBuild: (versionNumber: string, actorVersion: ActorVersion, useCache: boolean) => Promise<BuildData>;
|
|
21
14
|
waitForBuildToFinish: (buildId: string) => Promise<Build>;
|
|
22
15
|
static fromActorConfig: (actorConfig: ActorConfig) => ApifyBuilder;
|
|
23
16
|
/**
|
|
@@ -27,6 +20,8 @@ export declare class ApifyBuilder {
|
|
|
27
20
|
deleteOldBuilds(): Promise<void>;
|
|
28
21
|
}
|
|
29
22
|
export declare const waitAndSummarizeBuilds: (startedBuilds: BuildData[], buildersMap: Map<string, ApifyBuilder>, label: string) => Promise<BuildData[]>;
|
|
23
|
+
export declare const runAndSummarizeBuilds: (actorConfigs: ActorConfig[], label: string, buildOneActor: (actorConfig: ActorConfig, builder: ApifyBuilder) => Promise<BuildData>) => Promise<BuildData[]>;
|
|
24
|
+
export declare const dryRunBuildData: (actorFullName: string, versionNumber: string) => BuildData;
|
|
30
25
|
type RunBuildsOptions = {
|
|
31
26
|
actorConfigs: ActorConfig[];
|
|
32
27
|
isLatest?: boolean;
|
|
@@ -35,7 +30,7 @@ type RunBuildsOptions = {
|
|
|
35
30
|
dryRun: boolean;
|
|
36
31
|
useDockerCache: boolean;
|
|
37
32
|
};
|
|
38
|
-
export declare const runBuilds: ({ repoUrl, branch, actorConfigs, isLatest, dryRun, useDockerCache, }: RunBuildsOptions) => Promise<BuildData[]
|
|
33
|
+
export declare const runBuilds: ({ repoUrl, branch, actorConfigs, isLatest, dryRun, useDockerCache, }: RunBuildsOptions) => Promise<BuildData[]>;
|
|
39
34
|
export declare const deleteOldBuilds: (actorConfigs: ActorConfig[]) => Promise<void>;
|
|
40
35
|
export {};
|
|
41
36
|
//# sourceMappingURL=build.d.ts.map
|
package/dist/bin/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWzD,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAGlD,qBAAa,YAAY;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAFlC,OAAO;IAMP,uBAAuB,QAAa,OAAO,CAAC;QACxC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;KAC3B,CAAC,CAgCA;IAEF,qBAAqB,GACjB,eAAe,MAAM,EACrB,cAAc,YAAY,EAC1B,UAAU,OAAO,KAClB,OAAO,CAAC,SAAS,CAAC,CA0BnB;IAEF,oBAAoB,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,CAmB5D;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;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,sEAO7B,gBAAgB,KAAG,OAAO,CAAC,SAAS,EAAE,CAqDxC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,cAAc,WAAW,EAAE,kBAIhE,CAAC"}
|
package/dist/bin/build.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { ApifyClient } from 'apify-client';
|
|
2
|
-
|
|
1
|
+
import { ActorSourceType, ApifyClient } from 'apify-client';
|
|
2
|
+
// Fixed version number used to build from local source files, since there is no real version to track.
|
|
3
|
+
export const LOCAL_SOURCE_VERSION_NUMBER = '0.98';
|
|
4
|
+
const DEFAULT_TEST_VERSION_NUMBER = '0.99';
|
|
3
5
|
export class ApifyBuilder {
|
|
4
6
|
apifyClient;
|
|
5
7
|
actorFullName;
|
|
@@ -31,7 +33,7 @@ export class ApifyBuilder {
|
|
|
31
33
|
console.error(`Default version for ${this.actorFullName} is ${defaultVersionNumber}`);
|
|
32
34
|
return { defaultBuildNumber, defaultVersionNumber, defaultBuildTag };
|
|
33
35
|
};
|
|
34
|
-
|
|
36
|
+
createVersionAndBuild = async (versionNumber, actorVersion, useCache) => {
|
|
35
37
|
const actorClient = this.apifyClient.actor(this.actorFullName);
|
|
36
38
|
const actorInfo = await actorClient.get();
|
|
37
39
|
if (!actorInfo) {
|
|
@@ -39,14 +41,6 @@ export class ApifyBuilder {
|
|
|
39
41
|
' is unexpected, make sure the actor you are targeting is spelled the' +
|
|
40
42
|
' same as the folder in the repository.');
|
|
41
43
|
}
|
|
42
|
-
const actorVersion = {
|
|
43
|
-
buildTag,
|
|
44
|
-
versionNumber,
|
|
45
|
-
gitRepoUrl,
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
47
|
-
// @ts-ignore: coudn't find this type either :(
|
|
48
|
-
sourceType: ACTOR_SOURCE_TYPES.GIT_REPO,
|
|
49
|
-
};
|
|
50
44
|
// Prepare version
|
|
51
45
|
const versionExists = !actorInfo.versions.find((version) => version.versionNumber === versionNumber);
|
|
52
46
|
if (versionExists) {
|
|
@@ -58,34 +52,7 @@ export class ApifyBuilder {
|
|
|
58
52
|
await version.update(actorVersion);
|
|
59
53
|
}
|
|
60
54
|
// We also get back actId so the testing actor can both match by actor ID and name
|
|
61
|
-
const { id, actId, buildNumber } = await actorClient.build(versionNumber, { useCache
|
|
62
|
-
console.error(`[${this.actorFullName}]: ${id} (${buildNumber})`);
|
|
63
|
-
return { buildId: id, actorRawId: actId, buildNumber, actorFullName: this.actorFullName };
|
|
64
|
-
};
|
|
65
|
-
startActorBuildFromSourceFiles = async (sourceFiles) => {
|
|
66
|
-
const ZIP_VERSION = '0.98';
|
|
67
|
-
const actorClient = this.apifyClient.actor(this.actorFullName);
|
|
68
|
-
const actorInfo = await actorClient.get();
|
|
69
|
-
if (!actorInfo) {
|
|
70
|
-
throw new Error(`No actor named '${this.actorFullName}' was found on the platform. If this` +
|
|
71
|
-
' is unexpected, make sure the actor you are targeting is spelled the' +
|
|
72
|
-
' same as the folder in the repository.');
|
|
73
|
-
}
|
|
74
|
-
const actorVersion = {
|
|
75
|
-
versionNumber: ZIP_VERSION,
|
|
76
|
-
sourceFiles,
|
|
77
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
78
|
-
// @ts-ignore: couldn't find this type :(
|
|
79
|
-
sourceType: ACTOR_SOURCE_TYPES.SOURCE_FILES,
|
|
80
|
-
};
|
|
81
|
-
const versionExists = !actorInfo.versions.find((v) => v.versionNumber === ZIP_VERSION);
|
|
82
|
-
if (versionExists) {
|
|
83
|
-
await actorClient.versions().create(actorVersion);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
await actorClient.version(ZIP_VERSION).update(actorVersion);
|
|
87
|
-
}
|
|
88
|
-
const { id, actId, buildNumber } = await actorClient.build(ZIP_VERSION, { useCache: false });
|
|
55
|
+
const { id, actId, buildNumber } = await actorClient.build(versionNumber, { useCache });
|
|
89
56
|
console.error(`[${this.actorFullName}]: ${id} (${buildNumber})`);
|
|
90
57
|
return { buildId: id, actorRawId: actId, buildNumber, actorFullName: this.actorFullName };
|
|
91
58
|
};
|
|
@@ -200,6 +167,20 @@ export const waitAndSummarizeBuilds = async (startedBuilds, buildersMap, label)
|
|
|
200
167
|
console.error('=========================================');
|
|
201
168
|
return startedBuilds;
|
|
202
169
|
};
|
|
170
|
+
export const runAndSummarizeBuilds = async (actorConfigs, label, buildOneActor) => {
|
|
171
|
+
const buildersByActorFullName = new Map(actorConfigs.map((actorConfig) => [actorConfig.actorFullName, ApifyBuilder.fromActorConfig(actorConfig)]));
|
|
172
|
+
console.error('=========================================');
|
|
173
|
+
console.error(`STARTED ${label}:`);
|
|
174
|
+
const startedBuilds = await Promise.all(actorConfigs.map(async (actorConfig) => buildOneActor(actorConfig, buildersByActorFullName.get(actorConfig.actorFullName))));
|
|
175
|
+
return waitAndSummarizeBuilds(startedBuilds, buildersByActorFullName, label);
|
|
176
|
+
};
|
|
177
|
+
// Placeholder BuildData for dry runs, since no real build was triggered.
|
|
178
|
+
export const dryRunBuildData = (actorFullName, versionNumber) => ({
|
|
179
|
+
buildId: 'dry-run',
|
|
180
|
+
actorRawId: 'dry-run',
|
|
181
|
+
buildNumber: versionNumber,
|
|
182
|
+
actorFullName,
|
|
183
|
+
});
|
|
203
184
|
export const runBuilds = async ({ repoUrl, branch, actorConfigs, isLatest = false, dryRun, useDockerCache, }) => {
|
|
204
185
|
const buildConfigs = [];
|
|
205
186
|
for (const actorConfig of actorConfigs) {
|
|
@@ -211,7 +192,7 @@ export const runBuilds = async ({ repoUrl, branch, actorConfigs, isLatest = fals
|
|
|
211
192
|
buildTag = defaultBuildTag;
|
|
212
193
|
}
|
|
213
194
|
else {
|
|
214
|
-
versionNumber =
|
|
195
|
+
versionNumber = DEFAULT_TEST_VERSION_NUMBER;
|
|
215
196
|
}
|
|
216
197
|
// Depending on if these are miniactors or standaloneActors
|
|
217
198
|
let gitRepoUrl = `${repoUrl}#${branch}`;
|
|
@@ -221,17 +202,23 @@ export const runBuilds = async ({ repoUrl, branch, actorConfigs, isLatest = fals
|
|
|
221
202
|
buildConfigs.push({ actorConfig, gitRepoUrl, versionNumber, buildTag, useDockerCache });
|
|
222
203
|
}
|
|
223
204
|
if (dryRun) {
|
|
224
|
-
|
|
205
|
+
console.error('[DRY RUN] Would build:');
|
|
206
|
+
for (const { actorConfig, versionNumber } of buildConfigs) {
|
|
207
|
+
console.error(` ${actorConfig.actorFullName} (${versionNumber})`);
|
|
208
|
+
}
|
|
209
|
+
return buildConfigs.map(({ actorConfig, versionNumber }) => dryRunBuildData(actorConfig.actorFullName, versionNumber));
|
|
225
210
|
}
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
211
|
+
const buildConfigsByActorFullName = new Map(buildConfigs.map((buildConfig) => [buildConfig.actorConfig.actorFullName, buildConfig]));
|
|
212
|
+
return runAndSummarizeBuilds(actorConfigs, 'BUILDS', async (actorConfig, builder) => {
|
|
213
|
+
const { buildTag, versionNumber, gitRepoUrl, useDockerCache: useCache, } = buildConfigsByActorFullName.get(actorConfig.actorFullName);
|
|
214
|
+
const actorVersion = {
|
|
215
|
+
buildTag,
|
|
216
|
+
versionNumber,
|
|
217
|
+
gitRepoUrl,
|
|
218
|
+
sourceType: ActorSourceType.GitRepo,
|
|
219
|
+
};
|
|
220
|
+
return builder.createVersionAndBuild(versionNumber, actorVersion, useCache);
|
|
221
|
+
});
|
|
235
222
|
};
|
|
236
223
|
export const deleteOldBuilds = async (actorConfigs) => {
|
|
237
224
|
for (const actorConfig of actorConfigs) {
|
package/dist/bin/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"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"}
|