@memberjunction/cli 5.37.0 → 5.38.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/README.md +74 -0
- package/dist/baseline/cli-helpers.d.ts +12 -0
- package/dist/baseline/cli-helpers.d.ts.map +1 -0
- package/dist/baseline/cli-helpers.js +40 -0
- package/dist/baseline/cli-helpers.js.map +1 -0
- package/dist/baseline/comparator.d.ts +26 -0
- package/dist/baseline/comparator.d.ts.map +1 -0
- package/dist/baseline/comparator.js +527 -0
- package/dist/baseline/comparator.js.map +1 -0
- package/dist/baseline/connection.d.ts +39 -0
- package/dist/baseline/connection.d.ts.map +1 -0
- package/dist/baseline/connection.js +104 -0
- package/dist/baseline/connection.js.map +1 -0
- package/dist/baseline/data-dumper.d.ts +23 -0
- package/dist/baseline/data-dumper.d.ts.map +1 -0
- package/dist/baseline/data-dumper.js +94 -0
- package/dist/baseline/data-dumper.js.map +1 -0
- package/dist/baseline/emitter.d.ts +36 -0
- package/dist/baseline/emitter.d.ts.map +1 -0
- package/dist/baseline/emitter.js +512 -0
- package/dist/baseline/emitter.js.map +1 -0
- package/dist/baseline/index.d.ts +18 -0
- package/dist/baseline/index.d.ts.map +1 -0
- package/dist/baseline/index.js +14 -0
- package/dist/baseline/index.js.map +1 -0
- package/dist/baseline/introspector-mssql.d.ts +15 -0
- package/dist/baseline/introspector-mssql.d.ts.map +1 -0
- package/dist/baseline/introspector-mssql.js +673 -0
- package/dist/baseline/introspector-mssql.js.map +1 -0
- package/dist/baseline/introspector-postgres.d.ts +14 -0
- package/dist/baseline/introspector-postgres.d.ts.map +1 -0
- package/dist/baseline/introspector-postgres.js +277 -0
- package/dist/baseline/introspector-postgres.js.map +1 -0
- package/dist/baseline/report.d.ts +7 -0
- package/dist/baseline/report.d.ts.map +1 -0
- package/dist/baseline/report.js +105 -0
- package/dist/baseline/report.js.map +1 -0
- package/dist/baseline/types.d.ts +286 -0
- package/dist/baseline/types.d.ts.map +1 -0
- package/dist/baseline/types.js +10 -0
- package/dist/baseline/types.js.map +1 -0
- package/dist/baseline/util.d.ts +112 -0
- package/dist/baseline/util.d.ts.map +1 -0
- package/dist/baseline/util.js +325 -0
- package/dist/baseline/util.js.map +1 -0
- package/dist/commands/baseline/build.d.ts +29 -0
- package/dist/commands/baseline/build.d.ts.map +1 -0
- package/dist/commands/baseline/build.js +188 -0
- package/dist/commands/baseline/build.js.map +1 -0
- package/dist/commands/baseline/compare.d.ts +19 -0
- package/dist/commands/baseline/compare.d.ts.map +1 -0
- package/dist/commands/baseline/compare.js +133 -0
- package/dist/commands/baseline/compare.js.map +1 -0
- package/dist/commands/baseline/roundtrip.d.ts +23 -0
- package/dist/commands/baseline/roundtrip.d.ts.map +1 -0
- package/dist/commands/baseline/roundtrip.js +245 -0
- package/dist/commands/baseline/roundtrip.js.map +1 -0
- package/dist/commands/test/compare.d.ts +3 -0
- package/dist/commands/test/compare.d.ts.map +1 -1
- package/dist/commands/test/compare.js +23 -3
- package/dist/commands/test/compare.js.map +1 -1
- package/dist/commands/test/regression/build.d.ts +14 -0
- package/dist/commands/test/regression/build.d.ts.map +1 -0
- package/dist/commands/test/regression/build.js +48 -0
- package/dist/commands/test/regression/build.js.map +1 -0
- package/dist/commands/test/regression/compare.d.ts +15 -0
- package/dist/commands/test/regression/compare.d.ts.map +1 -0
- package/dist/commands/test/regression/compare.js +66 -0
- package/dist/commands/test/regression/compare.js.map +1 -0
- package/dist/commands/test/regression/down.d.ts +10 -0
- package/dist/commands/test/regression/down.d.ts.map +1 -0
- package/dist/commands/test/regression/down.js +29 -0
- package/dist/commands/test/regression/down.js.map +1 -0
- package/dist/commands/test/regression/export.d.ts +11 -0
- package/dist/commands/test/regression/export.d.ts.map +1 -0
- package/dist/commands/test/regression/export.js +56 -0
- package/dist/commands/test/regression/export.js.map +1 -0
- package/dist/commands/test/regression/gen-forms.d.ts +7 -0
- package/dist/commands/test/regression/gen-forms.d.ts.map +1 -0
- package/dist/commands/test/regression/gen-forms.js +18 -0
- package/dist/commands/test/regression/gen-forms.js.map +1 -0
- package/dist/commands/test/regression/index.d.ts +7 -0
- package/dist/commands/test/regression/index.d.ts.map +1 -0
- package/dist/commands/test/regression/index.js +33 -0
- package/dist/commands/test/regression/index.js.map +1 -0
- package/dist/commands/test/regression/init.d.ts +21 -0
- package/dist/commands/test/regression/init.d.ts.map +1 -0
- package/dist/commands/test/regression/init.js +111 -0
- package/dist/commands/test/regression/init.js.map +1 -0
- package/dist/commands/test/regression/remote.d.ts +23 -0
- package/dist/commands/test/regression/remote.d.ts.map +1 -0
- package/dist/commands/test/regression/remote.js +140 -0
- package/dist/commands/test/regression/remote.js.map +1 -0
- package/dist/commands/test/regression/up.d.ts +21 -0
- package/dist/commands/test/regression/up.d.ts.map +1 -0
- package/dist/commands/test/regression/up.js +111 -0
- package/dist/commands/test/regression/up.js.map +1 -0
- package/dist/commands/test/run.d.ts +1 -0
- package/dist/commands/test/run.d.ts.map +1 -1
- package/dist/commands/test/run.js +6 -0
- package/dist/commands/test/run.js.map +1 -1
- package/dist/commands/test/suite.d.ts +5 -0
- package/dist/commands/test/suite.d.ts.map +1 -1
- package/dist/commands/test/suite.js +27 -0
- package/dist/commands/test/suite.js.map +1 -1
- package/dist/commands/translate-sql/index.d.ts.map +1 -1
- package/dist/commands/translate-sql/index.js +3 -2
- package/dist/commands/translate-sql/index.js.map +1 -1
- package/dist/init-templates/bring-your-own-app/README.md +74 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/.mj-sync.json +10 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/test-suites/.byo-suite.json +51 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/test-suites/.mj-sync.json +12 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/tests/.T01-counter-increment.json +63 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/tests/.T02-contact-form-submit.json +63 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/tests/.mj-sync.json +12 -0
- package/dist/init-templates/bring-your-own-app/docker-compose.app.yml +76 -0
- package/dist/init-templates/bring-your-own-app/target.json +23 -0
- package/dist/init-templates/generic-web/README.md +115 -0
- package/dist/init-templates/generic-web/metadata/.mj-sync.json +10 -0
- package/dist/init-templates/generic-web/metadata/test-suites/.generic-web-suite.json +48 -0
- package/dist/init-templates/generic-web/metadata/test-suites/.mj-sync.json +12 -0
- package/dist/init-templates/generic-web/metadata/tests/.GW01-home-loads.json +74 -0
- package/dist/init-templates/generic-web/metadata/tests/.GW02-search-array-map.json +82 -0
- package/dist/init-templates/generic-web/metadata/tests/.mj-sync.json +12 -0
- package/dist/init-templates/generic-web/oracles/mdn-oracles.cjs +121 -0
- package/dist/init-templates/generic-web/target.json +25 -0
- package/dist/init-templates/github-actions/README.md +26 -0
- package/dist/init-templates/github-actions/regression.yml +52 -0
- package/dist/init-templates/remote-mj/README.md +95 -0
- package/dist/init-templates/remote-mj/target.json +22 -0
- package/dist/init-templates/static-file-server/Dockerfile +23 -0
- package/dist/init-templates/static-file-server/README.md +88 -0
- package/dist/init-templates/static-file-server/docker-compose.app.yml +44 -0
- package/dist/init-templates/static-file-server/metadata/.mj-sync.json +10 -0
- package/dist/init-templates/static-file-server/metadata/test-suites/.mj-sync.json +12 -0
- package/dist/init-templates/static-file-server/metadata/test-suites/.static-server-suite.json +27 -0
- package/dist/init-templates/static-file-server/metadata/tests/.SS01-home-loads.json +45 -0
- package/dist/init-templates/static-file-server/metadata/tests/.SS02-navigate-about.json +45 -0
- package/dist/init-templates/static-file-server/metadata/tests/.mj-sync.json +12 -0
- package/dist/init-templates/static-file-server/public/about.html +12 -0
- package/dist/init-templates/static-file-server/public/index.html +27 -0
- package/dist/init-templates/static-file-server/target.json +16 -0
- package/dist/lib/regression/docker-helpers.d.ts +98 -0
- package/dist/lib/regression/docker-helpers.d.ts.map +1 -0
- package/dist/lib/regression/docker-helpers.js +184 -0
- package/dist/lib/regression/docker-helpers.js.map +1 -0
- package/oclif.manifest.json +1356 -509
- package/package.json +22 -17
- package/regression-compose/docker-compose.bacpac-standalone.yml +109 -0
- package/regression-compose/docker-compose.standalone.yml +50 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.38.0",
|
|
5
5
|
"description": "MemberJunction command line tools",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"oclif"
|
|
@@ -24,10 +24,11 @@
|
|
|
24
24
|
"files": [
|
|
25
25
|
"/bin",
|
|
26
26
|
"/dist",
|
|
27
|
-
"/oclif.manifest.json"
|
|
27
|
+
"/oclif.manifest.json",
|
|
28
|
+
"/regression-compose"
|
|
28
29
|
],
|
|
29
30
|
"scripts": {
|
|
30
|
-
"build": "tsc && tsc-alias -f && oclif manifest",
|
|
31
|
+
"build": "tsc && tsc-alias -f && oclif manifest && node scripts/copy-regression-assets.mjs",
|
|
31
32
|
"prepack": "npm run build && oclif readme",
|
|
32
33
|
"postpack": "rimraf oclif.manifest.json",
|
|
33
34
|
"version": "oclif readme && git add README.md",
|
|
@@ -54,23 +55,23 @@
|
|
|
54
55
|
},
|
|
55
56
|
"dependencies": {
|
|
56
57
|
"@inquirer/prompts": "^8.2.0",
|
|
57
|
-
"@memberjunction/ai-cli": "5.
|
|
58
|
-
"@memberjunction/codegen-lib": "5.
|
|
59
|
-
"@memberjunction/config": "5.
|
|
60
|
-
"@memberjunction/core": "5.
|
|
61
|
-
"@memberjunction/generic-database-provider": "5.
|
|
62
|
-
"@memberjunction/installer": "5.
|
|
63
|
-
"@memberjunction/db-auto-doc": "5.
|
|
64
|
-
"@memberjunction/metadata-sync": "5.
|
|
65
|
-
"@memberjunction/open-app-engine": "5.
|
|
66
|
-
"@memberjunction/query-gen": "5.
|
|
67
|
-
"@memberjunction/server-bootstrap-lite": "5.
|
|
58
|
+
"@memberjunction/ai-cli": "5.38.0",
|
|
59
|
+
"@memberjunction/codegen-lib": "5.38.0",
|
|
60
|
+
"@memberjunction/config": "5.38.0",
|
|
61
|
+
"@memberjunction/core": "5.38.0",
|
|
62
|
+
"@memberjunction/generic-database-provider": "5.38.0",
|
|
63
|
+
"@memberjunction/installer": "5.38.0",
|
|
64
|
+
"@memberjunction/db-auto-doc": "5.38.0",
|
|
65
|
+
"@memberjunction/metadata-sync": "5.38.0",
|
|
66
|
+
"@memberjunction/open-app-engine": "5.38.0",
|
|
67
|
+
"@memberjunction/query-gen": "5.38.0",
|
|
68
|
+
"@memberjunction/server-bootstrap-lite": "5.38.0",
|
|
68
69
|
"@memberjunction/skyway-core": "^0.6.1",
|
|
69
70
|
"@memberjunction/skyway-postgres": "^0.6.1",
|
|
70
71
|
"@memberjunction/skyway-sqlserver": "^0.6.1",
|
|
71
|
-
"@memberjunction/sql-converter": "5.
|
|
72
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
73
|
-
"@memberjunction/testing-cli": "5.
|
|
72
|
+
"@memberjunction/sql-converter": "5.38.0",
|
|
73
|
+
"@memberjunction/sqlserver-dataprovider": "5.38.0",
|
|
74
|
+
"@memberjunction/testing-cli": "5.38.0",
|
|
74
75
|
"@oclif/core": "^3.27.0",
|
|
75
76
|
"@oclif/plugin-help": "^6.2.37",
|
|
76
77
|
"@oclif/plugin-version": "^2.2.36",
|
|
@@ -83,7 +84,10 @@
|
|
|
83
84
|
"fast-glob": "^3.3.3",
|
|
84
85
|
"figlet": "^1.10.0",
|
|
85
86
|
"fs-extra": "^11.3.3",
|
|
87
|
+
"mssql": "^11.0.1",
|
|
86
88
|
"ora-classic": "^5.4.2",
|
|
89
|
+
"pg": "^8.13.1",
|
|
90
|
+
"pg-query-stream": "~4.8.0",
|
|
87
91
|
"recast": "^0.23.11",
|
|
88
92
|
"simple-git": "^3.30.0",
|
|
89
93
|
"zod": "~3.24.4"
|
|
@@ -92,6 +96,7 @@
|
|
|
92
96
|
"@oclif/prettier-config": "^0.2.1",
|
|
93
97
|
"@types/figlet": "^1.7.0",
|
|
94
98
|
"@types/fs-extra": "^11.0.4",
|
|
99
|
+
"@types/pg": "^8.11.10",
|
|
95
100
|
"oclif": "^4.22.73",
|
|
96
101
|
"rimraf": "6.1.2",
|
|
97
102
|
"tsx": "^4.21.0",
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Bacpac standalone — run the FULL MJ stack from PUBLISHED images (no monorepo)
|
|
2
|
+
# against a database imported from a .bacpac. Driven by `mj test regression up
|
|
3
|
+
# --bacpac=<file>` when outside the monorepo.
|
|
4
|
+
#
|
|
5
|
+
# ┌─ sqlserver ──┐
|
|
6
|
+
# │ └─ bacpac-import (one-shot, amd64) ── SqlPackage import into DB
|
|
7
|
+
# │ └─ api (memberjunction/api) ── boots → mj migrate + codegen (= upgrade)
|
|
8
|
+
# │ └─ explorer (memberjunction/explorer) ── nginx, /api→api, runtime Auth0
|
|
9
|
+
# │ └─ test-runner ── push prompts+suite, drive explorer URL, reports
|
|
10
|
+
#
|
|
11
|
+
# PREREQUISITE: `memberjunction/explorer` is not published yet (a separate
|
|
12
|
+
# workstream — runtime-configurable Explorer image). Until it exists, the
|
|
13
|
+
# `explorer` service can't pull and external bacpac stays dormant. Everything
|
|
14
|
+
# else (Mode B/C/D via docker-compose.standalone.yml) is independent of it.
|
|
15
|
+
name: mj-regression-bacpac
|
|
16
|
+
|
|
17
|
+
x-db: &db-conn
|
|
18
|
+
DB_HOST: sqlserver
|
|
19
|
+
DB_PORT: "1433"
|
|
20
|
+
DB_USERNAME: sa
|
|
21
|
+
DB_PASSWORD: "${TEST_SA_PASSWORD:-TestPassword123!}"
|
|
22
|
+
DB_DATABASE: "${DB_DATABASE:-MemberJunction_Imported}"
|
|
23
|
+
DB_TRUST_SERVER_CERTIFICATE: "true"
|
|
24
|
+
MJ_BASE_ENCRYPTION_KEY: "${MJ_BASE_ENCRYPTION_KEY:-}"
|
|
25
|
+
|
|
26
|
+
services:
|
|
27
|
+
sqlserver:
|
|
28
|
+
image: mcr.microsoft.com/mssql/server:2022-latest
|
|
29
|
+
platform: linux/amd64
|
|
30
|
+
environment:
|
|
31
|
+
ACCEPT_EULA: "Y"
|
|
32
|
+
MSSQL_SA_PASSWORD: "${TEST_SA_PASSWORD:-TestPassword123!}"
|
|
33
|
+
healthcheck:
|
|
34
|
+
test: /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$MSSQL_SA_PASSWORD" -Q "SELECT 1" -C -No
|
|
35
|
+
interval: 10s
|
|
36
|
+
timeout: 5s
|
|
37
|
+
retries: 15
|
|
38
|
+
start_period: 30s
|
|
39
|
+
|
|
40
|
+
bacpac-import:
|
|
41
|
+
image: ${MJ_IMAGE:-memberjunction/agentic-test-runner:latest}
|
|
42
|
+
platform: linux/amd64 # SqlPackage is x64-only
|
|
43
|
+
depends_on:
|
|
44
|
+
sqlserver:
|
|
45
|
+
condition: service_healthy
|
|
46
|
+
environment:
|
|
47
|
+
<<: *db-conn
|
|
48
|
+
BACPAC_FILE: "/app/bacpac/${BACPAC_FILE:-db.bacpac}"
|
|
49
|
+
BACPAC_UPGRADE: "${BACPAC_UPGRADE:-true}"
|
|
50
|
+
volumes:
|
|
51
|
+
- ${BACPAC_DIR:-./bacpac}:/app/bacpac:ro
|
|
52
|
+
command: ["import-bacpac"]
|
|
53
|
+
|
|
54
|
+
api:
|
|
55
|
+
image: ${MJ_API_IMAGE:-memberjunction/api:latest}
|
|
56
|
+
depends_on:
|
|
57
|
+
bacpac-import:
|
|
58
|
+
condition: service_completed_successfully
|
|
59
|
+
# MJAPI's entrypoint runs `mj migrate` + `mj codegen` on boot → this IS the
|
|
60
|
+
# bacpac "upgrade" step. (BACPAC_UPGRADE=false is advisory here; skipping
|
|
61
|
+
# migrate needs a SKIP_MIGRATIONS flag on the api image — see plan.)
|
|
62
|
+
environment:
|
|
63
|
+
<<: *db-conn
|
|
64
|
+
healthcheck:
|
|
65
|
+
test: ["CMD-SHELL", "curl -fsS http://localhost:4000/healthcheck || exit 1"]
|
|
66
|
+
interval: 10s
|
|
67
|
+
timeout: 5s
|
|
68
|
+
retries: 30
|
|
69
|
+
start_period: 60s
|
|
70
|
+
|
|
71
|
+
explorer:
|
|
72
|
+
image: ${MJ_EXPLORER_IMAGE:-memberjunction/explorer:latest} # ⟵ PREREQUISITE
|
|
73
|
+
depends_on:
|
|
74
|
+
api:
|
|
75
|
+
condition: service_healthy
|
|
76
|
+
environment:
|
|
77
|
+
# Runtime config consumed by the (future) runtime-configurable Explorer image.
|
|
78
|
+
AUTH0_DOMAIN: "${AUTH0_DOMAIN:-}"
|
|
79
|
+
AUTH0_CLIENTID: "${AUTH0_CLIENTID:-}"
|
|
80
|
+
API_SERVICE: "api" # nginx proxies /api/ → http://api:4000
|
|
81
|
+
healthcheck:
|
|
82
|
+
test: ["CMD-SHELL", "curl -fsS http://localhost:4200/ || exit 1"]
|
|
83
|
+
interval: 10s
|
|
84
|
+
timeout: 5s
|
|
85
|
+
retries: 30
|
|
86
|
+
start_period: 30s
|
|
87
|
+
|
|
88
|
+
test-runner:
|
|
89
|
+
image: ${MJ_IMAGE:-memberjunction/agentic-test-runner:latest}
|
|
90
|
+
depends_on:
|
|
91
|
+
explorer:
|
|
92
|
+
condition: service_healthy
|
|
93
|
+
env_file:
|
|
94
|
+
- path: ${USER_ENV_FILE:-/dev/null}
|
|
95
|
+
required: false
|
|
96
|
+
environment:
|
|
97
|
+
<<: *db-conn
|
|
98
|
+
# AI vendor keys (Gemini is the primary model; Anthropic is failover).
|
|
99
|
+
AI_VENDOR_API_KEY__GeminiLLM: "${AI_VENDOR_API_KEY__GeminiLLM:-}"
|
|
100
|
+
AI_VENDOR_API_KEY__AnthropicLLM: "${AI_VENDOR_API_KEY__AnthropicLLM:-}"
|
|
101
|
+
TEST_SUITE_NAME: "${TEST_SUITE_NAME:-}"
|
|
102
|
+
EXTRA_METADATA_DIRS: "/work/metadata"
|
|
103
|
+
MAX_PARALLEL_WORKERS: "${MAX_PARALLEL_WORKERS:-4}"
|
|
104
|
+
shm_size: '2gb'
|
|
105
|
+
volumes:
|
|
106
|
+
- ${TARGET_DIR:-./bacpac}:/work:ro
|
|
107
|
+
- ./test-results:/app/test-results
|
|
108
|
+
# baseUrl comes from the target; default points at the in-network explorer.
|
|
109
|
+
command: ["run", "--target=/work/${TARGET_FILE:-target.json}"]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Standalone compose — run the regression suite from OUTSIDE the MJ monorepo,
|
|
2
|
+
# using the PUBLISHED agentic-test-runner image. No source build.
|
|
3
|
+
#
|
|
4
|
+
# Driven by `mj test regression remote --target=<file>` when not in the monorepo,
|
|
5
|
+
# or directly:
|
|
6
|
+
# TARGET_DIR=$(pwd)/my-suite TARGET_FILE=target.json USER_ENV_FILE=$(pwd)/.env \
|
|
7
|
+
# docker compose -f docker-compose.standalone.yml up
|
|
8
|
+
#
|
|
9
|
+
# Mode D (bring-your-own-app) — layer your app's compose so it boots on the same
|
|
10
|
+
# network; point the target's baseUrl at its in-network hostname:
|
|
11
|
+
# docker compose -f docker-compose.standalone.yml -f your-app.compose.yml up
|
|
12
|
+
#
|
|
13
|
+
# Provider DB: the test engine needs an MJ database (DB_*) to load test defs +
|
|
14
|
+
# Computer Use prompts and record results — your instance under test, or a
|
|
15
|
+
# throwaway. Auth `env:` references in the target resolve from USER_ENV_FILE.
|
|
16
|
+
name: mj-regression-standalone
|
|
17
|
+
|
|
18
|
+
services:
|
|
19
|
+
test-runner:
|
|
20
|
+
image: ${MJ_IMAGE:-memberjunction/agentic-test-runner:latest}
|
|
21
|
+
# Inject the user's whole .env (DB_*, auth env: refs, AI keys) into the
|
|
22
|
+
# container. Absolute path so it resolves regardless of cwd; optional so a
|
|
23
|
+
# missing file is fine (vars can come from the environment block below).
|
|
24
|
+
env_file:
|
|
25
|
+
- path: ${USER_ENV_FILE:-/dev/null}
|
|
26
|
+
required: false
|
|
27
|
+
environment:
|
|
28
|
+
# Provider DB (override via your .env / environment).
|
|
29
|
+
DB_HOST: "${DB_HOST:-host.docker.internal}"
|
|
30
|
+
DB_PORT: "${DB_PORT:-1433}"
|
|
31
|
+
DB_DATABASE: "${DB_DATABASE:-}"
|
|
32
|
+
DB_USERNAME: "${DB_USERNAME:-}"
|
|
33
|
+
DB_PASSWORD: "${DB_PASSWORD:-}"
|
|
34
|
+
DB_TRUST_SERVER_CERTIFICATE: "${DB_TRUST_SERVER_CERTIFICATE:-true}"
|
|
35
|
+
MJ_BASE_ENCRYPTION_KEY: "${MJ_BASE_ENCRYPTION_KEY:-}"
|
|
36
|
+
# AI vendor keys (Gemini is the primary model; Anthropic is failover).
|
|
37
|
+
AI_VENDOR_API_KEY__GeminiLLM: "${AI_VENDOR_API_KEY__GeminiLLM:-}"
|
|
38
|
+
AI_VENDOR_API_KEY__AnthropicLLM: "${AI_VENDOR_API_KEY__AnthropicLLM:-}"
|
|
39
|
+
TEST_SUITE_NAME: "${TEST_SUITE_NAME:-}"
|
|
40
|
+
MAX_PARALLEL_WORKERS: "${MAX_PARALLEL_WORKERS:-4}"
|
|
41
|
+
extra_hosts:
|
|
42
|
+
# Lets DB_HOST=host.docker.internal reach a DB published on the host (Linux too).
|
|
43
|
+
- "host.docker.internal:host-gateway"
|
|
44
|
+
shm_size: '2gb'
|
|
45
|
+
volumes:
|
|
46
|
+
# Your suite dir: target.json + metadata/ (tests + test-suites). Mounted at
|
|
47
|
+
# /work; the target's extraMetadataDirs should point at /work/metadata.
|
|
48
|
+
- ${TARGET_DIR:-./bacpac}:/work:ro
|
|
49
|
+
- ./test-results:/app/test-results
|
|
50
|
+
command: ["run", "--target=/work/${TARGET_FILE:-target.json}"]
|