Skip to content

Commit f86a95c

Browse files
committed
feat: pom extractor
Signed-off-by: Umberto Sgueglia <usgueglia@contractor.linuxfoundation.org>
1 parent 13a1bb4 commit f86a95c

11 files changed

Lines changed: 946 additions & 6 deletions

File tree

pnpm-lock.yaml

Lines changed: 66 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/services/pom-fetcher.yaml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
version: '3.1'
2+
3+
x-env-args: &env-args
4+
DOCKER_BUILDKIT: 1
5+
NODE_ENV: docker
6+
SERVICE: pom-fetcher
7+
SHELL: /bin/sh
8+
SUPPRESS_NO_CONFIG_WARNING: 'true'
9+
POM_FETCHER_BATCH_SIZE: '200'
10+
POM_FETCHER_CONCURRENCY: '10'
11+
POM_FETCHER_STALE_DAYS: '7'
12+
POM_FETCHER_IDLE_SLEEP_SEC: '3600'
13+
14+
services:
15+
pom-fetcher:
16+
build:
17+
context: ../../
18+
dockerfile: ./scripts/services/docker/Dockerfile.packages-worker
19+
command: 'pnpm run start:pom-fetcher'
20+
working_dir: /usr/crowd/app/services/apps/packages_worker
21+
env_file:
22+
- ../../backend/.env.dist.local
23+
- ../../backend/.env.dist.composed
24+
- ../../backend/.env.override.local
25+
- ../../backend/.env.override.composed
26+
environment:
27+
<<: *env-args
28+
restart: always
29+
networks:
30+
- crowd-bridge
31+
32+
pom-fetcher-dev:
33+
build:
34+
context: ../../
35+
dockerfile: ./scripts/services/docker/Dockerfile.packages-worker
36+
command: 'pnpm run dev:pom-fetcher'
37+
working_dir: /usr/crowd/app/services/apps/packages_worker
38+
# user: '${USER_ID}:${GROUP_ID}'
39+
env_file:
40+
- ../../backend/.env.dist.local
41+
- ../../backend/.env.dist.composed
42+
- ../../backend/.env.override.local
43+
- ../../backend/.env.override.composed
44+
environment:
45+
<<: *env-args
46+
hostname: pom-fetcher
47+
networks:
48+
- crowd-bridge
49+
volumes:
50+
- ../../services/libs/audit-logs/src:/usr/crowd/app/services/libs/audit-logs/src
51+
- ../../services/libs/common/src:/usr/crowd/app/services/libs/common/src
52+
- ../../services/libs/common_services/src:/usr/crowd/app/services/libs/common_services/src
53+
- ../../services/libs/data-access-layer/src:/usr/crowd/app/services/libs/data-access-layer/src
54+
- ../../services/libs/database/src:/usr/crowd/app/services/libs/database/src
55+
- ../../services/libs/integrations/src:/usr/crowd/app/services/libs/integrations/src
56+
- ../../services/libs/logging/src:/usr/crowd/app/services/libs/logging/src
57+
- ../../services/libs/nango/src:/usr/crowd/app/services/libs/nango/src
58+
- ../../services/libs/opensearch/src:/usr/crowd/app/services/libs/opensearch/src
59+
- ../../services/libs/queue/src:/usr/crowd/app/services/libs/queue/src
60+
- ../../services/libs/redis/src:/usr/crowd/app/services/libs/redis/src
61+
- ../../services/libs/snowflake/src:/usr/crowd/app/services/libs/snowflake/src
62+
- ../../services/libs/telemetry/src:/usr/crowd/app/services/libs/telemetry/src
63+
- ../../services/libs/temporal/src:/usr/crowd/app/services/libs/temporal/src
64+
- ../../services/libs/types/src:/usr/crowd/app/services/libs/types/src
65+
- ../../services/apps/packages_worker/src:/usr/crowd/app/services/apps/packages_worker/src
66+
67+
networks:
68+
crowd-bridge:
69+
external: true
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { getServiceLogger } from '@crowd/logging'
2+
3+
import { getPomFetcherConfig } from '../config'
4+
import { getPackagesDb } from '../db'
5+
import { runPomEnrichmentLoop } from '../pom-fetcher/runPomEnrichmentLoop'
6+
7+
const log = getServiceLogger()
8+
9+
let shuttingDown = false
10+
11+
const shutdown = async () => {
12+
if (shuttingDown) return
13+
shuttingDown = true
14+
log.info('Shutting down pom-fetcher...')
15+
}
16+
17+
process.on('SIGINT', shutdown)
18+
process.on('SIGTERM', shutdown)
19+
20+
const main = async () => {
21+
log.info('pom-fetcher starting...')
22+
23+
const config = getPomFetcherConfig()
24+
log.info(
25+
{ batchSize: config.batchSize, concurrency: config.concurrency, staleDays: config.staleDays },
26+
'Config loaded',
27+
)
28+
29+
const qx = await getPackagesDb()
30+
await qx.selectOne('SELECT 1')
31+
log.info('Connected to packages-db.')
32+
33+
await runPomEnrichmentLoop(qx, config, () => shuttingDown)
34+
35+
log.info('pom-fetcher stopped.')
36+
process.exit(0)
37+
}
38+
39+
main().catch((err) => {
40+
log.error({ err }, 'pom-fetcher fatal error')
41+
process.exit(1)
42+
})

services/apps/packages_worker/src/config.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,12 @@ export function getEnricherConfig() {
3232
idleSleepSec: requireEnvInt('ENRICHER_IDLE_SLEEP_SEC'),
3333
}
3434
}
35+
36+
export function getPomFetcherConfig() {
37+
return {
38+
batchSize: parseInt(process.env.POM_FETCHER_BATCH_SIZE ?? '200', 10),
39+
concurrency: parseInt(process.env.POM_FETCHER_CONCURRENCY ?? '10', 10),
40+
staleDays: parseInt(process.env.POM_FETCHER_STALE_DAYS ?? '7', 10),
41+
idleSleepSec: parseInt(process.env.POM_FETCHER_IDLE_SLEEP_SEC ?? '3600', 10),
42+
}
43+
}

0 commit comments

Comments
 (0)