apify-test-tools 0.8.1 → 0.8.3-beta.0
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/workflows/on_pull_request.yaml +1 -3
- package/CHANGELOG.md +16 -0
- package/bin/build.ts +7 -56
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +5 -41
- package/dist/bin/build.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +61 -61
|
@@ -12,9 +12,7 @@ jobs:
|
|
|
12
12
|
name: PR title check
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
|
-
- uses:
|
|
16
|
-
env:
|
|
17
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
15
|
+
- uses: apify/actions/pr-title-check@v1.3.0
|
|
18
16
|
|
|
19
17
|
code_checks:
|
|
20
18
|
name: Code checks
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
<!-- git-cliff-unreleased-start -->
|
|
6
|
+
## 0.8.3 - **not yet released**
|
|
7
|
+
|
|
8
|
+
### 🐛 Bug Fixes
|
|
9
|
+
|
|
10
|
+
- Add error explaining to build manually ([#99](https://github.com/apify/apify-test-tools/pull/99)) ([20eb7f5](https://github.com/apify/apify-test-tools/commit/20eb7f5e0493ea77e8d93f94c350d425a43cd570)) by [@gytelio](https://github.com/gytelio), closes [#98](https://github.com/apify/apify-test-tools/issues/98)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<!-- git-cliff-unreleased-end -->
|
|
14
|
+
## [0.8.2](https://github.com/apify/apify-test-tools/releases/tag/v0.8.2) (2026-06-25)
|
|
15
|
+
|
|
16
|
+
### Change
|
|
17
|
+
|
|
18
|
+
- Stop autobuilding Actors on circ_le account ([#97](https://github.com/apify/apify-test-tools/pull/97)) ([39ce2e2](https://github.com/apify/apify-test-tools/commit/39ce2e225f0d13f3888deb6422cad90f2106190c)) by [@metalwarrior665](https://github.com/metalwarrior665)
|
|
19
|
+
|
|
20
|
+
|
|
5
21
|
## [0.8.1](https://github.com/apify/apify-test-tools/releases/tag/v0.8.1) (2026-06-10)
|
|
6
22
|
|
|
7
23
|
### 🐛 Bug Fixes
|
package/bin/build.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { ApifyClient } from 'apify-client';
|
|
|
4
4
|
import { ACTOR_SOURCE_TYPES } from '@apify/consts';
|
|
5
5
|
|
|
6
6
|
import type { ActorConfig, BuildData } from './types.js';
|
|
7
|
-
import { getEnvVar } from './utils.js';
|
|
8
7
|
|
|
9
8
|
type BuildPrActorOptions = {
|
|
10
9
|
buildTag?: string;
|
|
@@ -45,6 +44,12 @@ class ApifyBuilder {
|
|
|
45
44
|
);
|
|
46
45
|
}
|
|
47
46
|
// I reported that buildNumber should probably not be optional
|
|
47
|
+
if (!actorInfo.taggedBuilds?.[defaultBuildTag]?.buildNumber) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
`[${this.actorName}] No build found for tag "${defaultBuildTag}". ` +
|
|
50
|
+
`The first build must be triggered manually on the platform before CI can take over.`,
|
|
51
|
+
);
|
|
52
|
+
}
|
|
48
53
|
const defaultBuildNumber = actorInfo.taggedBuilds![defaultBuildTag].buildNumber!;
|
|
49
54
|
const defaultVersionNumber = defaultBuildNumber.match(/(\d+\.\d+)\.\d+/)![1];
|
|
50
55
|
console.error(`Default version for ${this.actorName} is ${defaultVersionNumber}`);
|
|
@@ -243,9 +248,7 @@ export const runBuilds = async ({
|
|
|
243
248
|
}: RunBuildsOptions) => {
|
|
244
249
|
const buildConfigs: BuildPrActorOptions[] = [];
|
|
245
250
|
|
|
246
|
-
const
|
|
247
|
-
|
|
248
|
-
for (const { actorName, folder } of actorConfigs.concat(circleActors)) {
|
|
251
|
+
for (const { actorName, folder } of actorConfigs) {
|
|
249
252
|
let versionNumber: string;
|
|
250
253
|
let buildTag: string | undefined;
|
|
251
254
|
|
|
@@ -301,55 +304,3 @@ export const deleteOldBuilds = async (actorConfigs: ActorConfig[]) => {
|
|
|
301
304
|
await ApifyBuilder.fromActorName(actorName).deleteOldBuilds();
|
|
302
305
|
}
|
|
303
306
|
};
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* We will read all Actors in the circ_le account and build those that match by name pattern
|
|
307
|
-
* There are many ways to approach this, a more robust one would be to have a map of Actors
|
|
308
|
-
* which would allow to have more than one special user per Actor
|
|
309
|
-
* But since that use-case might never be needed, I went with the simplest solution that doesn't require maintaining the map
|
|
310
|
-
* NOTE: One issue is that if any Actor is renamed, we will not match it in the circ_le account nor throw any error
|
|
311
|
-
*/
|
|
312
|
-
const findCircleApifyManaged = async (actorConfigs: ActorConfig[]): Promise<ActorConfig[]> => {
|
|
313
|
-
// This token is hardcoded in the runner Actor, locally you have to inject it
|
|
314
|
-
const client = new ApifyClient({ token: getEnvVar('APIFY_TOKEN_CIRC_LE') });
|
|
315
|
-
|
|
316
|
-
const { items: circleActors } = await client.actors().list();
|
|
317
|
-
|
|
318
|
-
const actorsToBuild = circleActors
|
|
319
|
-
.map<ActorConfig | undefined>((circleActor) => {
|
|
320
|
-
// They prefix all with apify-managed---, I communicated with Jacques to keep doing that
|
|
321
|
-
let actorConfigFound = actorConfigs.find(
|
|
322
|
-
(actorConfig) =>
|
|
323
|
-
circleActor.name.replace('apify-managed---', '') === actorConfig.actorName.split('/')[1],
|
|
324
|
-
);
|
|
325
|
-
|
|
326
|
-
// Hack for bad naming of circ_le/apify-managed-google-search, we don't want to rename now to break customers
|
|
327
|
-
if (!actorConfigFound && circleActor.name === 'apify-managed-google-search') {
|
|
328
|
-
actorConfigFound = actorConfigs.find(
|
|
329
|
-
(actorConfig) => actorConfig.actorName.split('/')[1] === 'google-search-scraper',
|
|
330
|
-
);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
if (actorConfigFound) {
|
|
334
|
-
return {
|
|
335
|
-
// We point the circle Actor to the repo folder
|
|
336
|
-
actorName: `${circleActor.username}/${circleActor.name}`,
|
|
337
|
-
folder: actorConfigFound.folder,
|
|
338
|
-
isStandalone: actorConfigFound.isStandalone,
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
return undefined;
|
|
342
|
-
})
|
|
343
|
-
.filter((config) => config !== undefined);
|
|
344
|
-
|
|
345
|
-
console.error(
|
|
346
|
-
`Found ${actorsToBuild.length} circ_le actors that match Actors we built out of total ${circleActors.length} circ_le actors`,
|
|
347
|
-
);
|
|
348
|
-
console.error(`All circ_le actors: ${circleActors.map((actor) => actor.name).join(', ')}`);
|
|
349
|
-
console.error(`circ_le Actors to build: ${actorsToBuild.map((actor) => actor.actorName).join(', ')}`);
|
|
350
|
-
|
|
351
|
-
if (actorsToBuild.length === 0) {
|
|
352
|
-
console.error('No circ_le actors to build');
|
|
353
|
-
}
|
|
354
|
-
return actorsToBuild;
|
|
355
|
-
};
|
package/dist/bin/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD,KAAK,mBAAmB,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AA0NF,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,iDAoDlB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,cAAc,WAAW,EAAE,kBAIhE,CAAC"}
|
package/dist/bin/build.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ApifyClient } from 'apify-client';
|
|
2
2
|
import { ACTOR_SOURCE_TYPES } from '@apify/consts';
|
|
3
|
-
import { getEnvVar } from './utils.js';
|
|
4
3
|
class ApifyBuilder {
|
|
5
4
|
apifyClient;
|
|
6
5
|
actorName;
|
|
@@ -23,6 +22,10 @@ class ApifyBuilder {
|
|
|
23
22
|
`we want to have a default as tag so this is often an accidental misconfiguration from the dev`);
|
|
24
23
|
}
|
|
25
24
|
// I reported that buildNumber should probably not be optional
|
|
25
|
+
if (!actorInfo.taggedBuilds?.[defaultBuildTag]?.buildNumber) {
|
|
26
|
+
throw new Error(`[${this.actorName}] No build found for tag "${defaultBuildTag}". ` +
|
|
27
|
+
`The first build must be triggered manually on the platform before CI can take over.`);
|
|
28
|
+
}
|
|
26
29
|
const defaultBuildNumber = actorInfo.taggedBuilds[defaultBuildTag].buildNumber;
|
|
27
30
|
const defaultVersionNumber = defaultBuildNumber.match(/(\d+\.\d+)\.\d+/)[1];
|
|
28
31
|
console.error(`Default version for ${this.actorName} is ${defaultVersionNumber}`);
|
|
@@ -158,8 +161,7 @@ class ApifyBuilder {
|
|
|
158
161
|
}
|
|
159
162
|
export const runBuilds = async ({ repoUrl, branch, actorConfigs, isLatest = false, dryRun, useDockerCache, }) => {
|
|
160
163
|
const buildConfigs = [];
|
|
161
|
-
const
|
|
162
|
-
for (const { actorName, folder } of actorConfigs.concat(circleActors)) {
|
|
164
|
+
for (const { actorName, folder } of actorConfigs) {
|
|
163
165
|
let versionNumber;
|
|
164
166
|
let buildTag;
|
|
165
167
|
if (isLatest) {
|
|
@@ -206,42 +208,4 @@ export const deleteOldBuilds = async (actorConfigs) => {
|
|
|
206
208
|
await ApifyBuilder.fromActorName(actorName).deleteOldBuilds();
|
|
207
209
|
}
|
|
208
210
|
};
|
|
209
|
-
/**
|
|
210
|
-
* We will read all Actors in the circ_le account and build those that match by name pattern
|
|
211
|
-
* There are many ways to approach this, a more robust one would be to have a map of Actors
|
|
212
|
-
* which would allow to have more than one special user per Actor
|
|
213
|
-
* But since that use-case might never be needed, I went with the simplest solution that doesn't require maintaining the map
|
|
214
|
-
* NOTE: One issue is that if any Actor is renamed, we will not match it in the circ_le account nor throw any error
|
|
215
|
-
*/
|
|
216
|
-
const findCircleApifyManaged = async (actorConfigs) => {
|
|
217
|
-
// This token is hardcoded in the runner Actor, locally you have to inject it
|
|
218
|
-
const client = new ApifyClient({ token: getEnvVar('APIFY_TOKEN_CIRC_LE') });
|
|
219
|
-
const { items: circleActors } = await client.actors().list();
|
|
220
|
-
const actorsToBuild = circleActors
|
|
221
|
-
.map((circleActor) => {
|
|
222
|
-
// They prefix all with apify-managed---, I communicated with Jacques to keep doing that
|
|
223
|
-
let actorConfigFound = actorConfigs.find((actorConfig) => circleActor.name.replace('apify-managed---', '') === actorConfig.actorName.split('/')[1]);
|
|
224
|
-
// Hack for bad naming of circ_le/apify-managed-google-search, we don't want to rename now to break customers
|
|
225
|
-
if (!actorConfigFound && circleActor.name === 'apify-managed-google-search') {
|
|
226
|
-
actorConfigFound = actorConfigs.find((actorConfig) => actorConfig.actorName.split('/')[1] === 'google-search-scraper');
|
|
227
|
-
}
|
|
228
|
-
if (actorConfigFound) {
|
|
229
|
-
return {
|
|
230
|
-
// We point the circle Actor to the repo folder
|
|
231
|
-
actorName: `${circleActor.username}/${circleActor.name}`,
|
|
232
|
-
folder: actorConfigFound.folder,
|
|
233
|
-
isStandalone: actorConfigFound.isStandalone,
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
return undefined;
|
|
237
|
-
})
|
|
238
|
-
.filter((config) => config !== undefined);
|
|
239
|
-
console.error(`Found ${actorsToBuild.length} circ_le actors that match Actors we built out of total ${circleActors.length} circ_le actors`);
|
|
240
|
-
console.error(`All circ_le actors: ${circleActors.map((actor) => actor.name).join(', ')}`);
|
|
241
|
-
console.error(`circ_le Actors to build: ${actorsToBuild.map((actor) => actor.actorName).join(', ')}`);
|
|
242
|
-
if (actorsToBuild.length === 0) {
|
|
243
|
-
console.error('No circ_le actors to build');
|
|
244
|
-
}
|
|
245
|
-
return actorsToBuild;
|
|
246
|
-
};
|
|
247
211
|
//# sourceMappingURL=build.js.map
|
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;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../bin/build.ts"],"names":[],"mappings":"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"}
|