@terascope/scripts 2.0.0-dev.9 → 2.0.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.
Files changed (48) hide show
  1. package/dist/src/cmds/k8s-env.d.ts.map +1 -1
  2. package/dist/src/cmds/k8s-env.js +9 -3
  3. package/dist/src/cmds/k8s-env.js.map +1 -1
  4. package/dist/src/cmds/publish.js +2 -2
  5. package/dist/src/cmds/publish.js.map +1 -1
  6. package/dist/src/cmds/test.d.ts +1 -0
  7. package/dist/src/cmds/test.d.ts.map +1 -1
  8. package/dist/src/cmds/test.js +9 -2
  9. package/dist/src/cmds/test.js.map +1 -1
  10. package/dist/src/helpers/config.d.ts +3 -128
  11. package/dist/src/helpers/config.d.ts.map +1 -1
  12. package/dist/src/helpers/config.js +666 -147
  13. package/dist/src/helpers/config.js.map +1 -1
  14. package/dist/src/helpers/images/index.d.ts.map +1 -1
  15. package/dist/src/helpers/images/index.js +9 -12
  16. package/dist/src/helpers/images/index.js.map +1 -1
  17. package/dist/src/helpers/k8s-env/index.d.ts.map +1 -1
  18. package/dist/src/helpers/k8s-env/index.js +15 -39
  19. package/dist/src/helpers/k8s-env/index.js.map +1 -1
  20. package/dist/src/helpers/k8s-env/interfaces.d.ts +2 -1
  21. package/dist/src/helpers/k8s-env/interfaces.d.ts.map +1 -1
  22. package/dist/src/helpers/k8s-env/k8s.d.ts +2 -2
  23. package/dist/src/helpers/k8s-env/k8s.js +1 -1
  24. package/dist/src/helpers/k8s-env/k8s.js.map +1 -1
  25. package/dist/src/helpers/kind.d.ts +1 -1
  26. package/dist/src/helpers/kind.d.ts.map +1 -1
  27. package/dist/src/helpers/kind.js +13 -12
  28. package/dist/src/helpers/kind.js.map +1 -1
  29. package/dist/src/helpers/misc.d.ts.map +1 -1
  30. package/dist/src/helpers/misc.js +2 -1
  31. package/dist/src/helpers/misc.js.map +1 -1
  32. package/dist/src/helpers/scripts.d.ts +10 -16
  33. package/dist/src/helpers/scripts.d.ts.map +1 -1
  34. package/dist/src/helpers/scripts.js +35 -71
  35. package/dist/src/helpers/scripts.js.map +1 -1
  36. package/dist/src/helpers/test-runner/index.d.ts.map +1 -1
  37. package/dist/src/helpers/test-runner/index.js +19 -18
  38. package/dist/src/helpers/test-runner/index.js.map +1 -1
  39. package/dist/src/helpers/test-runner/interfaces.d.ts +1 -0
  40. package/dist/src/helpers/test-runner/interfaces.d.ts.map +1 -1
  41. package/dist/src/helpers/test-runner/services.d.ts.map +1 -1
  42. package/dist/src/helpers/test-runner/services.js +35 -17
  43. package/dist/src/helpers/test-runner/services.js.map +1 -1
  44. package/dist/src/helpers/test-runner/utils.d.ts +3 -2
  45. package/dist/src/helpers/test-runner/utils.d.ts.map +1 -1
  46. package/dist/src/helpers/test-runner/utils.js +34 -24
  47. package/dist/src/helpers/test-runner/utils.js.map +1 -1
  48. package/package.json +5 -2
@@ -1,175 +1,694 @@
1
1
  import ipPkg from 'ip';
2
- import { toBoolean, toSafeString, isCI, toIntegerOrThrow } from '@terascope/core-utils';
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { toSafeString, isCI, toIntegerOrThrow, SchemaValidator, toBoolean } from '@terascope/core-utils';
3
6
  import { Service } from './interfaces.js';
4
- const { address } = ipPkg;
5
- const forceColor = process.env.FORCE_COLOR || '1';
6
- export const FORCE_COLOR = toBoolean(forceColor)
7
- ? '1'
8
- : '0';
9
- /** The timeout for how long a service has to stand up */
10
- export const SERVICE_UP_TIMEOUT = process.env.SERVICE_UP_TIMEOUT ?? '2m';
11
7
  /** Default elasticsearch7 version used to populate the CI cache */
12
- export const __DEFAULT_ELASTICSEARCH7_VERSION = '7.9.3';
8
+ const __DEFAULT_ELASTICSEARCH7_VERSION = '7.9.3';
13
9
  /** Default opensearch1 version used to populate the CI cache */
14
- export const __DEFAULT_OPENSEARCH1_VERSION = '1.3.11';
10
+ const __DEFAULT_OPENSEARCH1_VERSION = '1.3.11';
15
11
  /** Default opensearch2 version used to populate the CI cache */
16
- export const __DEFAULT_OPENSEARCH2_VERSION = '2.15.0';
12
+ const __DEFAULT_OPENSEARCH2_VERSION = '2.15.0';
17
13
  /** Default opensearch3 version used to populate the CI cache */
18
- export const __DEFAULT_OPENSEARCH3_VERSION = '3.1.0';
19
- export const TERASLICE_PORT = process.env.TERASLICE_PORT || '45678';
20
- export const HOST_IP = process.env.HOST_IP || address();
21
- export const USE_EXISTING_SERVICES = toBoolean(process.env.USE_EXISTING_SERVICES);
22
- export const SERVICES_USE_TMPFS = toBoolean(process.env.SERVICES_USE_TMPFS || 'true');
23
- export const SERVICE_HEAP_OPTS = process.env.SERVICE_HEAP_OPTS || '-Xms512m -Xmx512m';
24
- export const DOCKER_NETWORK_NAME = process.env.DOCKER_NETWORK_NAME || undefined;
25
- export const TEST_NAMESPACE = process.env.TEST_NAMESPACE || 'ts_test';
26
- export const ASSET_STORAGE_CONNECTION_TYPE = process.env.ASSET_STORAGE_CONNECTION_TYPE || 'elasticsearch-next';
27
- export const ASSET_STORAGE_CONNECTION = process.env.ASSET_STORAGE_CONNECTION || 'default';
28
- export const ELASTICSEARCH_NAME = process.env.ELASTICSEARCH_NAME || 'elasticsearch';
29
- export const ELASTICSEARCH_HOSTNAME = process.env.ELASTICSEARCH_HOSTNAME || HOST_IP;
30
- export const ELASTICSEARCH_PORT = process.env.ELASTICSEARCH_PORT || '49200';
31
- export const ELASTICSEARCH_HOST = `http://${ELASTICSEARCH_HOSTNAME}:${ELASTICSEARCH_PORT}`;
32
- export const ELASTICSEARCH_VERSION = process.env.ELASTICSEARCH_VERSION
33
- || __DEFAULT_ELASTICSEARCH7_VERSION;
34
- export const ELASTICSEARCH_DOCKER_IMAGE = process.env.ELASTICSEARCH_DOCKER_IMAGE || 'elasticsearch';
35
- export const RESTRAINED_ELASTICSEARCH_PORT = process.env.RESTRAINED_ELASTICSEARCH_PORT || '49202';
36
- export const RESTRAINED_ELASTICSEARCH_HOST = `http://${ELASTICSEARCH_HOSTNAME}:${RESTRAINED_ELASTICSEARCH_PORT}`;
37
- export const KAFKA_NAME = process.env.KAFKA_NAME || 'kafka';
38
- export const KAFKA_HOSTNAME = process.env.KAFKA_HOSTNAME || HOST_IP;
39
- export const KAFKA_PORT = process.env.KAFKA_PORT || '49094';
40
- export const KAFKA_BROKER = `${KAFKA_HOSTNAME}:${KAFKA_PORT}`;
41
- export const KAFKA_VERSION = process.env.KAFKA_VERSION || '3.7.2';
42
- export const KAFKA_DOCKER_IMAGE = process.env.KAFKA_DOCKER_IMAGE || 'apache/kafka';
43
- export const KAFKA_NODE_ID = process.env.KAFKA_NODE_ID || '1';
44
- export const KAFKA_LISTENERS = process.env.KAFKA_LISTENERS || `INTERNAL://0.0.0.0:${KAFKA_PORT}, CONTROLLER://:9093`;
45
- export const KAFKA_ADVERTISED_LISTENERS = process.env.KAFKA_ADVERTISED_LISTENERS || `INTERNAL://${KAFKA_HOSTNAME}:${KAFKA_PORT}`;
46
- export const ENCRYPT_KAFKA = toBoolean(process.env.ENCRYPT_KAFKA ?? false);
47
- export const KAFKA_SECURITY_PROTOCOL = process.env.KAFKA_SECURITY_PROTOCOL || ENCRYPT_KAFKA ? 'SSL' : 'PLAINTEXT';
48
- export const KAFKA_LISTENER_SECURITY_PROTOCOL_MAP = process.env.KAFKA_LISTENER_SECURITY_PROTOCOL_MAP || `INTERNAL:${KAFKA_SECURITY_PROTOCOL}, CONTROLLER:${KAFKA_SECURITY_PROTOCOL}`;
49
- export const KAFKA_SECRETS_DIR = process.env.KAFKA_SECRETS_DIR || '/etc/kafka/secrets';
50
- export const KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR = process.env.KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR || '1';
51
- export const KAFKA_PROCESS_ROLES = process.env.KAFKA_PROCESS_ROLES || 'broker,controller';
52
- export const KAFKA_CONTROLLER_LISTENER_NAMES = process.env.KAFKA_CONTROLLER_LISTENER_NAMES || 'CONTROLLER';
53
- export const KAFKA_CONTROLLER_QUORUM_VOTERS = process.env.KAFKA_CONTROLLER_QUORUM_VOTERS || `1@0.0.0.0:9093`;
54
- export const KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR = process.env.KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR || '1';
55
- export const KAFKA_TRANSACTION_STATE_LOG_MIN_ISR = process.env.KAFKA_TRANSACTION_STATE_LOG_MIN_ISR || '1';
56
- export const KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS = process.env.KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS || '0';
57
- export const KAFKA_INTER_BROKER_LISTENER_NAME = process.env.KAFKA_INTER_BROKER_LISTENER_NAME || 'INTERNAL';
58
- export const MINIO_NAME = process.env.MINIO_NAME || 'minio';
59
- export const MINIO_HOSTNAME = process.env.MINIO_HOSTNAME || HOST_IP;
60
- export const MINIO_PORT = process.env.MINIO_PORT || '49000';
61
- export const MINIO_UI_PORT = process.env.MINIO_UI_PORT || '49001';
62
- export const ENCRYPT_MINIO = toBoolean(process.env.ENCRYPT_MINIO ?? false);
63
- export const MINIO_PROTOCOL = ENCRYPT_MINIO ? 'https' : 'http';
64
- export const MINIO_HOST = `${MINIO_PROTOCOL}://${MINIO_HOSTNAME}:${MINIO_PORT}`;
65
- export const MINIO_VERSION = process.env.MINIO_VERSION || 'RELEASE.2024-08-29T01-40-52Z';
66
- export const MINIO_DOCKER_IMAGE = process.env.MINIO_DOCKER_IMAGE || 'minio/minio';
67
- export const MINIO_ACCESS_KEY = process.env.MINIO_ACCESS_KEY || 'minioadmin';
68
- export const MINIO_SECRET_KEY = process.env.MINIO_SECRET_KEY || 'minioadmin';
69
- export const RABBITMQ_VERSION = process.env.RABBITMQ_VERSION || '3.13.7-management';
70
- export const RABBITMQ_DOCKER_IMAGE = process.env.RABBITMQ_DOCKER_IMAGE || 'rabbitmq';
71
- export const RABBITMQ_NAME = process.env.RABBITMQ_NAME || 'rabbitmq';
72
- export const RABBITMQ_PORT = process.env.RABBITMQ_PORT || 45672;
73
- export const RABBITMQ_MANAGEMENT_PORT = process.env.RABBITMQ_MANAGEMENT_PORT || 55672;
74
- export const RABBITMQ_HOSTNAME = process.env.RABBITMQ_HOSTNAME || HOST_IP;
75
- export const RABBITMQ_HOST = `http://${RABBITMQ_HOSTNAME}:${RABBITMQ_PORT}`;
76
- export const RABBITMQ_MANAGEMENT = `http://${RABBITMQ_HOSTNAME}:${RABBITMQ_MANAGEMENT_PORT}`;
77
- export const RABBITMQ_USER = process.env.RABBITMQ_USER || 'guest';
78
- export const RABBITMQ_PASSWORD = process.env.RABBITMQ_PASSWORD || 'guest';
79
- export const OPENSEARCH_NAME = process.env.OPENSEARCH_NAME || 'opensearch';
80
- export const ENCRYPT_OPENSEARCH = toBoolean(process.env.ENCRYPT_OPENSEARCH ?? false);
81
- export const OPENSEARCH_PROTOCOL = ENCRYPT_OPENSEARCH ? 'https' : 'http';
82
- export const OPENSEARCH_HOSTNAME = process.env.OPENSEARCH_HOSTNAME || HOST_IP;
83
- export const OPENSEARCH_PORT = process.env.OPENSEARCH_PORT || '49210';
84
- export const OPENSEARCH_USER = process.env.OPENSEARCH_USER || 'admin';
85
- export const OPENSEARCH_PASSWORD = process.env.OPENSEARCH_PASSWORD || 'admin';
86
- export const OPENSEARCH_VERSION = process.env.OPENSEARCH_VERSION || __DEFAULT_OPENSEARCH2_VERSION;
87
- export const OPENSEARCH_HOST = `${OPENSEARCH_PROTOCOL}://${OPENSEARCH_USER}:${OPENSEARCH_PASSWORD}@${OPENSEARCH_HOSTNAME}:${OPENSEARCH_PORT}`;
88
- export const OPENSEARCH_DOCKER_IMAGE = process.env.OPENSEARCH_DOCKER_IMAGE || 'opensearchproject/opensearch';
89
- export const RESTRAINED_OPENSEARCH_PORT = process.env.RESTRAINED_OPENSEARCH_PORT || '49206';
90
- export const RESTRAINED_OPENSEARCH_HOST = `http://${OPENSEARCH_USER}:${OPENSEARCH_PASSWORD}@${OPENSEARCH_HOSTNAME}:${RESTRAINED_OPENSEARCH_PORT}`;
91
- export const UTILITY_SVC_NAME = process.env.UTILITY_SVC_NAME || 'utility-svc';
92
- export const UTILITY_SVC_VERSION = process.env.UTILITY_SVC_VERSION || '0.0.1';
93
- export const UTILITY_SVC_DOCKER_IMAGE = process.env.UTILITY_SVC_DOCKER_IMAGE || 'teraslice-utility';
94
- export const UTILITY_SVC_DOCKER_PROJECT_PATH = process.env.UTILITY_SVC_DOCKER_PROJECT_PATH || 'e2e/helm/utility';
95
- export const KIND_DOCKER_IMAGE = process.env.KIND_DOCKER_IMAGE || 'kindest/node';
96
- export const KIND_VERSION = process.env.KIND_VERSION || 'v1.30.0';
97
- export const BASE_DOCKER_IMAGE = process.env.BASE_DOCKER_IMAGE || 'ghcr.io/terascope/node-base';
98
- /**
99
- * When set this will skip git commands. This is useful for Dockerfile when git is not
100
- * available or does not work
101
- */
102
- export const SKIP_GIT_COMMANDS = toBoolean(process.env.SKIP_GIT_COMMANDS ?? false);
14
+ const __DEFAULT_OPENSEARCH3_VERSION = '3.1.0';
15
+ const __DEFAULT_NODE_VERSION = '22';
16
+ const { address } = ipPkg;
17
+ const config = {};
18
+ let validatedConfig;
19
+ // Any var computed by config or used by config to compute another var should not set
20
+ // an env value within 'configSchema' and should set the default to undefined
21
+ const configSchema = {
22
+ // Services
23
+ DEFAULT_ELASTICSEARCH7_VERSION: {
24
+ default: __DEFAULT_ELASTICSEARCH7_VERSION,
25
+ format: String,
26
+ },
27
+ DEFAULT_OPENSEARCH1_VERSION: {
28
+ default: __DEFAULT_OPENSEARCH1_VERSION,
29
+ format: String,
30
+ },
31
+ DEFAULT_OPENSEARCH2_VERSION: {
32
+ default: __DEFAULT_OPENSEARCH2_VERSION,
33
+ format: String,
34
+ },
35
+ DEFAULT_OPENSEARCH3_VERSION: {
36
+ default: __DEFAULT_OPENSEARCH3_VERSION,
37
+ format: String,
38
+ },
39
+ ENABLE_UTILITY_SVC: {
40
+ default: false,
41
+ format: Boolean,
42
+ env: 'ENABLE_UTILITY_SVC'
43
+ },
44
+ ENV_SERVICES: {
45
+ default: undefined,
46
+ format(val) {
47
+ if (Array.isArray(val)) {
48
+ for (const name of val) {
49
+ const servicesArr = Object.values(Service);
50
+ if (!servicesArr.includes(name)) {
51
+ throw new Error(`Invalid ENV_SERVICES value. Must be one of ${servicesArr}`);
52
+ }
53
+ }
54
+ }
55
+ else {
56
+ throw new Error('ENV_SERVICES must be an array');
57
+ }
58
+ }
59
+ },
60
+ TEST_TERASLICE: {
61
+ default: false,
62
+ format: Boolean,
63
+ env: 'TEST_TERASLICE'
64
+ },
65
+ TEST_OPENSEARCH: {
66
+ default: false,
67
+ format: Boolean,
68
+ env: 'TEST_OPENSEARCH'
69
+ },
70
+ TEST_ELASTICSEARCH: {
71
+ default: false,
72
+ format: Boolean,
73
+ env: 'TEST_ELASTICSEARCH'
74
+ },
75
+ TEST_KAFKA: {
76
+ default: false,
77
+ format: Boolean,
78
+ env: 'TEST_KAFKA'
79
+ },
80
+ TEST_MINIO: {
81
+ default: false,
82
+ format: Boolean,
83
+ env: 'TEST_MINIO'
84
+ },
85
+ TEST_RESTRAINED_OPENSEARCH: {
86
+ default: false,
87
+ format: Boolean,
88
+ env: 'TEST_RESTRAINED_OPENSEARCH'
89
+ },
90
+ TEST_RESTRAINED_ELASTICSEARCH: {
91
+ default: false,
92
+ format: Boolean,
93
+ env: 'TEST_RESTRAINED_ELASTICSEARCH'
94
+ },
95
+ TEST_RABBITMQ: {
96
+ default: false,
97
+ format: Boolean,
98
+ env: 'TEST_RABBITMQ'
99
+ },
100
+ // General config
101
+ ATTACH_JEST_DEBUGGER: {
102
+ default: false,
103
+ format: Boolean,
104
+ env: 'ATTACH_JEST_DEBUGGER'
105
+ },
106
+ CERT_PATH: {
107
+ default: undefined,
108
+ format: String,
109
+ },
110
+ CI_COMMIT_REF_SLUG: {
111
+ default: null,
112
+ format: 'optional_string',
113
+ env: 'CI_COMMIT_REF_SLUG'
114
+ },
115
+ DEV_DOCKER_IMAGE: {
116
+ doc: 'Use this to override the default dev docker image tag, if this is set, using DEV_TAG is no longer needed',
117
+ default: null,
118
+ format: 'optional_string',
119
+ env: 'DEV_DOCKER_IMAGE'
120
+ },
121
+ DEV_TAG: {
122
+ default: null,
123
+ format: 'optional_string',
124
+ },
125
+ DOCKER_CACHE_PATH: {
126
+ default: '/tmp/docker_cache',
127
+ format: String,
128
+ env: 'DOCKER_CACHE_PATH'
129
+ },
130
+ DOCKER_IMAGES_PATH: {
131
+ default: undefined,
132
+ format: String,
133
+ },
134
+ DOCKER_IMAGE_LIST_PATH: {
135
+ default: undefined,
136
+ format: String,
137
+ },
138
+ DOCKER_NETWORK_NAME: {
139
+ default: null,
140
+ format: 'optional_string',
141
+ env: 'DOCKER_NETWORK_NAME'
142
+ },
143
+ ENCRYPTION_ENABLED: {
144
+ default: undefined,
145
+ format: Boolean,
146
+ },
147
+ FORCE_COLOR: {
148
+ default: undefined,
149
+ format: ['0', '1'],
150
+ },
151
+ HOST_IP: {
152
+ default: undefined,
153
+ format: String,
154
+ },
155
+ JEST_MAX_WORKERS: {
156
+ default: null,
157
+ format: 'optional_int',
158
+ env: 'JEST_MAX_WORKERS'
159
+ },
160
+ K8S_VERSION: {
161
+ default: null,
162
+ format: 'optional_string',
163
+ env: 'K8S_VERSION'
164
+ },
165
+ MAX_PROJECTS_PER_BATCH: {
166
+ default: undefined,
167
+ format: 'int',
168
+ },
169
+ NODE_VERSION: {
170
+ doc: 'Node version to use. This overrides the value in the Dockerfile',
171
+ default: __DEFAULT_NODE_VERSION,
172
+ format: String,
173
+ env: 'NODE_VERSION'
174
+ },
175
+ NPM_DEFAULT_REGISTRY: {
176
+ default: 'https://registry.npmjs.org/',
177
+ format: String,
178
+ },
179
+ REPORT_COVERAGE: {
180
+ default: false,
181
+ format: Boolean,
182
+ env: 'REPORT_COVERAGE'
183
+ },
184
+ SERVICE_HEAP_OPTS: {
185
+ default: '-Xms512m -Xmx512m',
186
+ format: String,
187
+ env: 'SERVICE_HEAP_OPTS'
188
+ },
189
+ SERVICE_UP_TIMEOUT: {
190
+ doc: 'The timeout for how long a service has to stand up',
191
+ default: '2m',
192
+ format: String,
193
+ env: 'SERVICE_UP_TIMEOUT'
194
+ },
195
+ SERVICES_USE_TMPFS: {
196
+ default: true,
197
+ format: Boolean,
198
+ env: 'SERVICES_USE_TMPFS'
199
+ },
200
+ SKIP_DOCKER_BUILD_IN_E2E: {
201
+ doc: 'Use this to skip the docker build command in e2e tests, this might be '
202
+ + 'useful if you pull down a cache image outside of this and you know it '
203
+ + 'is up-to-date',
204
+ default: false,
205
+ format: Boolean,
206
+ env: 'SKIP_DOCKER_BUILD_IN_E2E'
207
+ },
208
+ SKIP_DOCKER_BUILD_IN_K8S: {
209
+ default: false,
210
+ format: Boolean,
211
+ env: 'SKIP_DOCKER_BUILD_IN_K8S'
212
+ },
213
+ SKIP_E2E_OUTPUT_LOGS: {
214
+ default: undefined,
215
+ format: Boolean,
216
+ },
217
+ SKIP_GIT_COMMANDS: {
218
+ doc: 'When set this will skip git commands. This is useful for Dockerfile when git is not available or does not work',
219
+ default: false,
220
+ format: Boolean,
221
+ env: 'SKIP_GIT_COMMANDS'
222
+ },
223
+ SKIP_IMAGE_DELETION: {
224
+ default: false,
225
+ format: Boolean,
226
+ env: 'SKIP_IMAGE_DELETION'
227
+ },
228
+ TERASLICE_IMAGE: {
229
+ default: null,
230
+ format: 'optional_string',
231
+ env: 'TERASLICE_IMAGE'
232
+ },
233
+ TEST_NAMESPACE: {
234
+ default: 'ts_test',
235
+ format: String,
236
+ env: 'TEST_NAMESPACE'
237
+ },
238
+ USE_EXISTING_SERVICES: {
239
+ default: false,
240
+ format: Boolean,
241
+ env: 'USE_EXISTING_SERVICES'
242
+ },
243
+ USE_HELMFILE: {
244
+ default: false,
245
+ format: Boolean,
246
+ env: 'USE_HELMFILE'
247
+ },
248
+ // Elasticsearch config
249
+ ELASTICSEARCH_DOCKER_IMAGE: {
250
+ default: 'elasticsearch',
251
+ format: String,
252
+ env: 'ELASTICSEARCH_DOCKER_IMAGE'
253
+ },
254
+ ELASTICSEARCH_HOST: {
255
+ default: undefined,
256
+ format: String,
257
+ },
258
+ ELASTICSEARCH_HOSTNAME: {
259
+ default: undefined,
260
+ format: String,
261
+ },
262
+ ELASTICSEARCH_NAME: {
263
+ default: 'elasticsearch',
264
+ format: String,
265
+ env: 'ELASTICSEARCH_NAME'
266
+ },
267
+ ELASTICSEARCH_PORT: {
268
+ default: undefined,
269
+ format: Number,
270
+ },
271
+ ELASTICSEARCH_VERSION: {
272
+ default: __DEFAULT_ELASTICSEARCH7_VERSION,
273
+ format: String,
274
+ env: 'ELASTICSEARCH_VERSION'
275
+ },
276
+ RESTRAINED_ELASTICSEARCH_HOST: {
277
+ default: undefined,
278
+ format: String,
279
+ },
280
+ RESTRAINED_ELASTICSEARCH_PORT: {
281
+ default: undefined,
282
+ format: Number,
283
+ },
284
+ // Kafka config
285
+ ENCRYPT_KAFKA: {
286
+ default: undefined,
287
+ format: Boolean,
288
+ },
289
+ KAFKA_ADVERTISED_LISTENERS: {
290
+ default: undefined,
291
+ format: String,
292
+ },
293
+ KAFKA_BROKER: {
294
+ default: undefined,
295
+ format: String,
296
+ },
297
+ KAFKA_CONTROLLER_LISTENER_NAMES: {
298
+ default: 'CONTROLLER',
299
+ format: String,
300
+ env: 'KAFKA_CONTROLLER_LISTENER_NAMES'
301
+ },
302
+ KAFKA_CONTROLLER_QUORUM_VOTERS: {
303
+ default: '1@0.0.0.0:9093',
304
+ format: String,
305
+ env: 'KAFKA_CONTROLLER_QUORUM_VOTERS'
306
+ },
307
+ KAFKA_DOCKER_IMAGE: {
308
+ default: 'apache/kafka',
309
+ format: String,
310
+ env: 'KAFKA_DOCKER_IMAGE'
311
+ },
312
+ KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: {
313
+ default: '0',
314
+ format: String,
315
+ env: 'KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS'
316
+ },
317
+ KAFKA_HOSTNAME: {
318
+ default: undefined,
319
+ format: String,
320
+ },
321
+ KAFKA_INTER_BROKER_LISTENER_NAME: {
322
+ default: 'INTERNAL',
323
+ format: String,
324
+ env: 'KAFKA_INTER_BROKER_LISTENER_NAME'
325
+ },
326
+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: {
327
+ default: undefined,
328
+ format: String,
329
+ },
330
+ KAFKA_LISTENERS: {
331
+ default: undefined,
332
+ format: String,
333
+ },
334
+ KAFKA_NAME: {
335
+ default: 'kafka',
336
+ format: String,
337
+ env: 'KAFKA_NAME'
338
+ },
339
+ KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: {
340
+ default: '1',
341
+ format: String,
342
+ env: 'KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR'
343
+ },
344
+ KAFKA_NODE_ID: {
345
+ default: '1',
346
+ format: String,
347
+ env: 'KAFKA_NODE_ID'
348
+ },
349
+ KAFKA_PORT: {
350
+ default: undefined,
351
+ format: Number,
352
+ },
353
+ KAFKA_PROCESS_ROLES: {
354
+ default: 'broker,controller',
355
+ format: String,
356
+ env: 'KAFKA_PROCESS_ROLES'
357
+ },
358
+ KAFKA_SECRETS_DIR: {
359
+ default: '/etc/kafka/secrets',
360
+ format: String,
361
+ env: 'KAFKA_SECRETS_DIR'
362
+ },
363
+ KAFKA_SECURITY_PROTOCOL: {
364
+ default: undefined,
365
+ format: String,
366
+ },
367
+ KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: {
368
+ default: '1',
369
+ format: String,
370
+ env: 'KAFKA_TRANSACTION_STATE_LOG_MIN_ISR'
371
+ },
372
+ KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: {
373
+ default: '1',
374
+ format: String,
375
+ env: 'KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR'
376
+ },
377
+ KAFKA_VERSION: {
378
+ default: '3.7.2',
379
+ format: String,
380
+ env: 'KAFKA_VERSION'
381
+ },
382
+ // Kind config
383
+ KIND_DOCKER_IMAGE: {
384
+ default: 'kindest/node',
385
+ format: String,
386
+ env: 'KIND_DOCKER_IMAGE'
387
+ },
388
+ KIND_VERSION: {
389
+ default: 'v1.30.0',
390
+ format: String,
391
+ env: 'KIND_VERSION'
392
+ },
393
+ // Minio config
394
+ ENCRYPT_MINIO: {
395
+ default: undefined,
396
+ format: Boolean,
397
+ },
398
+ MINIO_ACCESS_KEY: {
399
+ default: 'minioadmin',
400
+ format: String,
401
+ env: 'MINIO_ACCESS_KEY'
402
+ },
403
+ MINIO_DOCKER_IMAGE: {
404
+ default: 'minio/minio',
405
+ format: String,
406
+ env: 'MINIO_DOCKER_IMAGE'
407
+ },
408
+ MINIO_HOST: {
409
+ default: undefined,
410
+ format: String,
411
+ },
412
+ MINIO_HOSTNAME: {
413
+ default: undefined,
414
+ format: String,
415
+ },
416
+ MINIO_NAME: {
417
+ default: 'minio',
418
+ format: String,
419
+ env: 'MINIO_NAME'
420
+ },
421
+ MINIO_PORT: {
422
+ default: undefined,
423
+ format: Number,
424
+ },
425
+ MINIO_PROTOCOL: {
426
+ default: undefined,
427
+ format: ['http', 'https'],
428
+ },
429
+ MINIO_SECRET_KEY: {
430
+ default: 'minioadmin',
431
+ format: String,
432
+ env: 'MINIO_SECRET_KEY'
433
+ },
434
+ MINIO_UI_PORT: {
435
+ default: 49001,
436
+ format: Number,
437
+ env: 'MINIO_UI_PORT'
438
+ },
439
+ MINIO_VERSION: {
440
+ default: 'RELEASE.2024-08-29T01-40-52Z',
441
+ format: String,
442
+ env: 'MINIO_VERSION'
443
+ },
444
+ // OpenSearch config
445
+ ENCRYPT_OPENSEARCH: {
446
+ default: undefined,
447
+ format: Boolean,
448
+ },
449
+ OPENSEARCH_DOCKER_IMAGE: {
450
+ default: 'opensearchproject/opensearch',
451
+ format: String,
452
+ env: 'OPENSEARCH_DOCKER_IMAGE'
453
+ },
454
+ OPENSEARCH_HOST: {
455
+ default: undefined,
456
+ format: String,
457
+ },
458
+ OPENSEARCH_HOSTNAME: {
459
+ default: undefined,
460
+ format: String,
461
+ },
462
+ OPENSEARCH_NAME: {
463
+ default: 'opensearch',
464
+ format: String,
465
+ env: 'OPENSEARCH_NAME'
466
+ },
467
+ OPENSEARCH_PASSWORD: {
468
+ default: undefined,
469
+ format: String,
470
+ },
471
+ OPENSEARCH_PORT: {
472
+ default: undefined,
473
+ format: Number,
474
+ },
475
+ OPENSEARCH_PROTOCOL: {
476
+ default: undefined,
477
+ format: ['http', 'https'],
478
+ },
479
+ OPENSEARCH_SSL_HOST: {
480
+ default: undefined,
481
+ format: String,
482
+ },
483
+ OPENSEARCH_USER: {
484
+ default: undefined,
485
+ format: String,
486
+ },
487
+ OPENSEARCH_VERSION: {
488
+ default: __DEFAULT_OPENSEARCH2_VERSION,
489
+ format: String,
490
+ env: 'OPENSEARCH_VERSION'
491
+ },
492
+ RESTRAINED_OPENSEARCH_HOST: {
493
+ default: undefined,
494
+ format: String,
495
+ },
496
+ RESTRAINED_OPENSEARCH_PORT: {
497
+ default: undefined,
498
+ format: Number,
499
+ },
500
+ // RabbitMQ config
501
+ RABBITMQ_DOCKER_IMAGE: {
502
+ default: 'rabbitmq',
503
+ format: String,
504
+ env: 'RABBITMQ_DOCKER_IMAGE'
505
+ },
506
+ RABBITMQ_HOST: {
507
+ default: undefined,
508
+ format: String,
509
+ },
510
+ RABBITMQ_HOSTNAME: {
511
+ default: undefined,
512
+ format: String,
513
+ },
514
+ RABBITMQ_MANAGEMENT: {
515
+ default: undefined,
516
+ format: String,
517
+ },
518
+ RABBITMQ_MANAGEMENT_PORT: {
519
+ default: undefined,
520
+ format: Number,
521
+ },
522
+ RABBITMQ_NAME: {
523
+ default: 'rabbitmq',
524
+ format: String,
525
+ env: 'RABBITMQ_NAME'
526
+ },
527
+ RABBITMQ_PASSWORD: {
528
+ default: 'guest',
529
+ format: String,
530
+ env: 'RABBITMQ_PASSWORD'
531
+ },
532
+ RABBITMQ_PORT: {
533
+ default: undefined,
534
+ format: Number,
535
+ },
536
+ RABBITMQ_USER: {
537
+ default: 'guest',
538
+ format: String,
539
+ env: 'RABBITMQ_USER'
540
+ },
541
+ RABBITMQ_VERSION: {
542
+ default: '3.13.7-management',
543
+ format: String,
544
+ env: 'RABBITMQ_VERSION'
545
+ },
546
+ // Teraslice Config
547
+ ASSET_STORAGE_CONNECTION: {
548
+ default: 'default',
549
+ format: String,
550
+ env: 'ASSET_STORAGE_CONNECTION'
551
+ },
552
+ ASSET_STORAGE_CONNECTION_TYPE: {
553
+ default: 'elasticsearch-next',
554
+ format: String,
555
+ env: 'ASSET_STORAGE_CONNECTION_TYPE'
556
+ },
557
+ CLUSTERING_TYPE: {
558
+ default: 'kubernetesV2',
559
+ format: ['kubernetesV2'],
560
+ env: 'CLUSTERING_TYPE'
561
+ },
562
+ SEARCH_TEST_HOST: {
563
+ default: undefined,
564
+ format: String,
565
+ },
566
+ TERASLICE_PORT: {
567
+ default: 45678,
568
+ format: Number,
569
+ env: 'TERASLICE_PORT'
570
+ },
571
+ TEST_PLATFORM: {
572
+ default: 'native',
573
+ format: ['native', 'kubernetesV2'],
574
+ env: 'TEST_PLATFORM'
575
+ },
576
+ // Utility service config
577
+ UTILITY_SVC_DOCKER_IMAGE: {
578
+ default: 'teraslice-utility',
579
+ format: String,
580
+ env: 'UTILITY_SVC_DOCKER_IMAGE'
581
+ },
582
+ UTILITY_SVC_DOCKER_PROJECT_PATH: {
583
+ default: 'e2e/helm/utility',
584
+ format: String,
585
+ env: 'UTILITY_SVC_DOCKER_PROJECT_PATH'
586
+ },
587
+ UTILITY_SVC_NAME: {
588
+ default: 'utility-svc',
589
+ format: String,
590
+ env: 'UTILITY_SVC_NAME'
591
+ },
592
+ UTILITY_SVC_VERSION: {
593
+ default: '0.0.1',
594
+ format: String,
595
+ env: 'UTILITY_SVC_VERSION'
596
+ },
597
+ };
598
+ const forceColor = process.env.FORCE_COLOR || '1';
599
+ config.FORCE_COLOR = toBoolean(forceColor)
600
+ ? '1'
601
+ : '0';
602
+ config.HOST_IP = process.env.HOST_IP || address();
603
+ config.ELASTICSEARCH_HOSTNAME = process.env.ELASTICSEARCH_HOSTNAME || config.HOST_IP;
604
+ config.ELASTICSEARCH_PORT = Number(process.env.ELASTICSEARCH_PORT) || 49200;
605
+ config.ELASTICSEARCH_HOST = `http://${config.ELASTICSEARCH_HOSTNAME}:${config.ELASTICSEARCH_PORT}`;
606
+ config.RESTRAINED_ELASTICSEARCH_PORT = Number(process.env.RESTRAINED_ELASTICSEARCH_PORT) || 49202;
607
+ config.RESTRAINED_ELASTICSEARCH_HOST = `http://${config.ELASTICSEARCH_HOSTNAME}:${config.RESTRAINED_ELASTICSEARCH_PORT}`;
608
+ config.ENCRYPT_KAFKA = toBoolean(process.env.ENCRYPT_KAFKA) || false;
609
+ config.KAFKA_HOSTNAME = process.env.KAFKA_HOSTNAME || config.HOST_IP;
610
+ config.KAFKA_PORT = Number(process.env.KAFKA_PORT) || 49094;
611
+ config.KAFKA_BROKER = `${config.KAFKA_HOSTNAME}:${config.KAFKA_PORT}`;
612
+ config.KAFKA_ADVERTISED_LISTENERS = process.env.KAFKA_ADVERTISED_LISTENERS || `INTERNAL://${config.KAFKA_HOSTNAME}:${config.KAFKA_PORT}`;
613
+ config.KAFKA_SECURITY_PROTOCOL = process.env.KAFKA_SECURITY_PROTOCOL || (config.ENCRYPT_KAFKA ? 'SSL' : 'PLAINTEXT');
614
+ config.KAFKA_LISTENER_SECURITY_PROTOCOL_MAP = process.env.KAFKA_LISTENER_SECURITY_PROTOCOL_MAP || `INTERNAL:${config.KAFKA_SECURITY_PROTOCOL}, CONTROLLER:PLAINTEXT`;
615
+ config.KAFKA_LISTENERS = process.env.KAFKA_LISTENERS || `INTERNAL://0.0.0.0:${config.KAFKA_PORT}, CONTROLLER://:9093`;
616
+ config.ENCRYPT_MINIO = toBoolean(process.env.ENCRYPT_MINIO) || false;
617
+ config.MINIO_HOSTNAME = process.env.MINIO_HOSTNAME || config.HOST_IP;
618
+ config.MINIO_PORT = Number(process.env.MINIO_PORT) || 49000;
619
+ config.MINIO_PROTOCOL = config.ENCRYPT_MINIO ? 'https' : 'http';
620
+ config.MINIO_HOST = `${config.MINIO_PROTOCOL}://${config.MINIO_HOSTNAME}:${config.MINIO_PORT}`;
621
+ config.RABBITMQ_PORT = Number(process.env.RABBITMQ_PORT) || 45672;
622
+ config.RABBITMQ_MANAGEMENT_PORT = Number(process.env.RABBITMQ_MANAGEMENT_PORT) || 55672;
623
+ config.RABBITMQ_HOSTNAME = process.env.RABBITMQ_HOSTNAME || config.HOST_IP;
624
+ config.RABBITMQ_HOST = `http://${config.RABBITMQ_HOSTNAME}:${config.RABBITMQ_PORT}`;
625
+ config.RABBITMQ_MANAGEMENT = `http://${config.RABBITMQ_HOSTNAME}:${config.RABBITMQ_MANAGEMENT_PORT}`;
626
+ config.ENCRYPT_OPENSEARCH = toBoolean(process.env.ENCRYPT_OPENSEARCH) || false;
627
+ config.OPENSEARCH_PROTOCOL = config.ENCRYPT_OPENSEARCH ? 'https' : 'http';
628
+ config.OPENSEARCH_HOSTNAME = process.env.OPENSEARCH_HOSTNAME || config.HOST_IP;
629
+ config.OPENSEARCH_PORT = Number(process.env.OPENSEARCH_PORT) || 49210;
630
+ config.OPENSEARCH_USER = process.env.OPENSEARCH_USER || 'admin';
631
+ config.OPENSEARCH_PASSWORD = process.env.OPENSEARCH_PASSWORD || 'admin';
632
+ config.OPENSEARCH_HOST = `${config.OPENSEARCH_PROTOCOL}://${config.OPENSEARCH_USER}:${config.OPENSEARCH_PASSWORD}@${config.OPENSEARCH_HOSTNAME}:${config.OPENSEARCH_PORT}`;
633
+ config.OPENSEARCH_SSL_HOST = `https://${config.OPENSEARCH_HOSTNAME}:${config.OPENSEARCH_PORT}`;
634
+ config.RESTRAINED_OPENSEARCH_PORT = Number(process.env.RESTRAINED_OPENSEARCH_PORT) || 49206;
635
+ config.RESTRAINED_OPENSEARCH_HOST = `http://${config.OPENSEARCH_USER}:${config.OPENSEARCH_PASSWORD}@${config.OPENSEARCH_HOSTNAME}:${config.RESTRAINED_OPENSEARCH_PORT}`;
103
636
  // make sure the string doesn't contain unwanted characters
104
- export const DEV_TAG = toSafeString((process.env.DEV_TAG
105
- || process.env.TRAVIS_PULL_REQUEST_BRANCH
106
- || process.env.TRAVIS_BRANCH
637
+ config.DEV_TAG = toSafeString((process.env.DEV_TAG
107
638
  || process.env.CI_COMMIT_REF_SLUG
108
639
  || 'local'
109
640
  // convert dependabot/npm_and_yarn/dep-x.x.x to dependabot
110
641
  ).split('/', 1)[0]);
111
- /**
112
- * Use this to override the default dev docker image tag, if this
113
- * is set, using DEV_TAG is no longer needed
114
- */
115
- export const DEV_DOCKER_IMAGE = process.env.DEV_DOCKER_IMAGE || undefined;
116
- /**
117
- * Use this to skip the docker build command in e2e tests, this might be
118
- * useful if you pull down a cache image outside of this and you know it
119
- * is up-to-date
120
- */
121
- export const SKIP_DOCKER_BUILD_IN_E2E = toBoolean(process.env.SKIP_DOCKER_BUILD_IN_E2E ?? false);
122
- export const SKIP_DOCKER_BUILD_IN_K8S = toBoolean(process.env.SKIP_DOCKER_BUILD_IN_K8S ?? false);
123
- export const SKIP_E2E_OUTPUT_LOGS = toBoolean(process.env.SKIP_E2E_OUTPUT_LOGS ?? !isCI);
642
+ config.SKIP_E2E_OUTPUT_LOGS = toBoolean(process.env.SKIP_E2E_OUTPUT_LOGS) ?? (!isCI ? true : false);
124
643
  /**
125
644
  * jest or our tests have a memory leak, limiting this seems to help
126
- */
127
- export const MAX_PROJECTS_PER_BATCH = toIntegerOrThrow(process.env.MAX_PROJECTS_PER_BATCH ?? 5);
128
- const reportCov = process.env.REPORT_COVERAGE || 'false';
129
- export const REPORT_COVERAGE = toBoolean(reportCov);
130
- export const JEST_MAX_WORKERS = process.env.JEST_MAX_WORKERS
131
- ? toIntegerOrThrow(process.env.JEST_MAX_WORKERS)
132
- : undefined;
133
- export const NPM_DEFAULT_REGISTRY = 'https://registry.npmjs.org/';
134
- const { TEST_OPENSEARCH = undefined, TEST_ELASTICSEARCH = undefined, TEST_KAFKA = undefined, TEST_MINIO = undefined, TEST_RESTRAINED_OPENSEARCH = undefined, TEST_RESTRAINED_ELASTICSEARCH = undefined, TEST_RABBITMQ = undefined, ENABLE_UTILITY_SVC = undefined } = process.env;
135
- const testOpensearch = toBoolean(TEST_OPENSEARCH);
136
- const testElasticsearch = toBoolean(TEST_ELASTICSEARCH);
137
- const testRestrainedOpensearch = toBoolean(TEST_RESTRAINED_OPENSEARCH);
138
- const testRestrainedElasticsearch = toBoolean(TEST_RESTRAINED_ELASTICSEARCH);
139
- export const ENV_SERVICES = [
645
+ */
646
+ config.MAX_PROJECTS_PER_BATCH = toIntegerOrThrow(process.env.MAX_PROJECTS_PER_BATCH ?? 5);
647
+ config.ENCRYPTION_ENABLED = toBoolean(process.env.ENCRYPT_KAFKA)
648
+ || toBoolean(process.env.ENCRYPT_MINIO)
649
+ || toBoolean(process.env.ENCRYPT_OPENSEARCH);
650
+ config.CERT_PATH = process.env.CERT_PATH
651
+ || (config.ENCRYPTION_ENABLED
652
+ ? fs.mkdtempSync(path.join(os.tmpdir(), 'ts-CAs'))
653
+ : 'tmp/ts-certs');
654
+ const testOpensearch = toBoolean(process.env.TEST_OPENSEARCH);
655
+ const testElasticsearch = toBoolean(process.env.TEST_ELASTICSEARCH);
656
+ const testRestrainedOpensearch = toBoolean(process.env.TEST_RESTRAINED_OPENSEARCH);
657
+ const testRestrainedElasticsearch = toBoolean(process.env.TEST_RESTRAINED_ELASTICSEARCH);
658
+ config.ENV_SERVICES = [
140
659
  testOpensearch ? Service.Opensearch : undefined,
141
660
  testElasticsearch ? Service.Elasticsearch : undefined,
142
- toBoolean(TEST_KAFKA) ? Service.Kafka : undefined,
143
- toBoolean(TEST_MINIO) ? Service.Minio : undefined,
661
+ toBoolean(process.env.TEST_KAFKA) ? Service.Kafka : undefined,
662
+ toBoolean(process.env.TEST_MINIO) ? Service.Minio : undefined,
144
663
  testRestrainedOpensearch ? Service.RestrainedOpensearch : undefined,
145
664
  testRestrainedElasticsearch ? Service.RestrainedElasticsearch : undefined,
146
- toBoolean(TEST_RABBITMQ) ? Service.RabbitMQ : undefined,
147
- toBoolean(ENABLE_UTILITY_SVC) ? Service.Utility : undefined,
665
+ toBoolean(process.env.TEST_RABBITMQ) ? Service.RabbitMQ : undefined,
666
+ toBoolean(process.env.ENABLE_UTILITY_SVC) ? Service.Utility : undefined,
148
667
  ]
149
668
  .filter(Boolean);
150
- let testHost;
669
+ const __DEFAULT_TEST_HOST = config.OPENSEARCH_HOST;
670
+ let testHost = __DEFAULT_TEST_HOST;
151
671
  if (testElasticsearch) {
152
- testHost = ELASTICSEARCH_HOST;
672
+ testHost = config.ELASTICSEARCH_HOST;
153
673
  }
154
674
  else if (testOpensearch) {
155
- testHost = OPENSEARCH_HOST;
675
+ testHost = config.OPENSEARCH_HOST;
156
676
  }
157
677
  else if (testRestrainedOpensearch) {
158
- testHost = RESTRAINED_OPENSEARCH_HOST;
678
+ testHost = config.RESTRAINED_OPENSEARCH_HOST;
159
679
  }
160
680
  else if (testRestrainedElasticsearch) {
161
- testHost = RESTRAINED_ELASTICSEARCH_HOST;
681
+ testHost = config.RESTRAINED_ELASTICSEARCH_HOST;
682
+ }
683
+ config.SEARCH_TEST_HOST = process.env.SEARCH_TEST_HOST || testHost;
684
+ config.DOCKER_IMAGES_PATH = process.env.DOCKER_IMAGES_PATH || './images';
685
+ config.DOCKER_IMAGE_LIST_PATH = process.env.DOCKER_IMAGE_LIST_PATH || `${config.DOCKER_IMAGES_PATH}/image-list.txt`;
686
+ try {
687
+ const configValidator = new SchemaValidator(configSchema, 'scriptsConfigSchema');
688
+ validatedConfig = configValidator.validate(config);
689
+ }
690
+ catch (err) {
691
+ throw new Error(`ts-scripts config validation failed: ${err}`);
162
692
  }
163
- export const SEARCH_TEST_HOST = process.env.SEARCH_TEST_HOST || testHost;
164
- export const TEST_NODE_VERSIONS = ['22', '24'];
165
- export const DEFAULT_NODE_VERSION = '22';
166
- // This overrides the value in the Dockerfile
167
- export const NODE_VERSION = process.env.NODE_VERSION || DEFAULT_NODE_VERSION;
168
- export const { CLUSTERING_TYPE = 'kubernetesV2', TEST_PLATFORM = 'native', K8S_VERSION = undefined, TERASLICE_IMAGE = undefined } = process.env;
169
- export const DOCKER_IMAGES_PATH = process.env.DOCKER_IMAGES_PATH || './images';
170
- export const DOCKER_IMAGE_LIST_PATH = process.env.DOCKER_IMAGE_LIST_PATH || `${DOCKER_IMAGES_PATH}/image-list.txt`;
171
- export const DOCKER_CACHE_PATH = process.env.DOCKER_CACHE_PATH || '/tmp/docker_cache';
172
- export const SKIP_IMAGE_DELETION = toBoolean(process.env.SKIP_IMAGE_DELETION) || false;
173
- export const USE_HELMFILE = toBoolean(process.env.USE_HELMFILE) || false;
174
- export const ATTACH_JEST_DEBUGGER = toBoolean(process.env.ATTACH_JEST_DEBUGGER) || false;
693
+ export default validatedConfig;
175
694
  //# sourceMappingURL=config.js.map