diff --git a/ci/init.js b/ci/init.js index 748194919e8..7cea799503d 100644 --- a/ci/init.js +++ b/ci/init.js @@ -2,9 +2,11 @@ /* eslint-disable no-console */ const tracer = require('../packages/dd-trace') -const { isTrue, isFalse } = require('../packages/dd-trace/src/util') +const { isTrue } = require('../packages/dd-trace/src/util') const log = require('../packages/dd-trace/src/log') const { getEnvironmentVariable } = require('../packages/dd-trace/src/config-helper') +const getConfig = require('../packages/dd-trace/src/config') +const config = getConfig() const PACKAGE_MANAGERS = ['npm', 'yarn', 'pnpm'] const DEFAULT_FLUSH_INTERVAL = 5000 @@ -24,6 +26,8 @@ function isPackageManager () { } function detectTestWorkerType () { + // [I think] these calls to getEnvironmentVariable should stay as-is, because they are specifically looking for + // presence of environment variables to detect the test worker type. if (getEnvironmentVariable('JEST_WORKER_ID')) return 'jest' if (getEnvironmentVariable('CUCUMBER_WORKER_ID')) return 'cucumber' if (getEnvironmentVariable('MOCHA_WORKER_ID')) return 'mocha' @@ -43,7 +47,7 @@ const baseOptions = { flushInterval: isJestWorker ? JEST_FLUSH_INTERVAL : DEFAULT_FLUSH_INTERVAL } -let shouldInit = !isFalse(getEnvironmentVariable('DD_CIVISIBILITY_ENABLED')) +let shouldInit = config.isCiVisibilityEnabled() const isAgentlessEnabled = isTrue(getEnvironmentVariable('DD_CIVISIBILITY_AGENTLESS_ENABLED')) if (!isTestWorker && isPackageManager()) { diff --git a/packages/dd-trace/src/config.js b/packages/dd-trace/src/config.js index b20636224d9..2a736989dc2 100644 --- a/packages/dd-trace/src/config.js +++ b/packages/dd-trace/src/config.js @@ -439,6 +439,7 @@ class Config { DD_APPSEC_RASP_COLLECT_REQUEST_BODY, DD_APPSEC_TRACE_RATE_LIMIT, DD_APPSEC_WAF_TIMEOUT, + DD_CIVISIBILITY_ENABLED, DD_CRASHTRACKING_ENABLED, DD_CODE_ORIGIN_FOR_SPANS_ENABLED, DD_CODE_ORIGIN_FOR_SPANS_EXPERIMENTAL_EXIT_SPANS_ENABLED, @@ -653,6 +654,7 @@ class Config { unprocessedTarget['appsec.stackTrace.maxStackTraces'] = DD_APPSEC_MAX_STACK_TRACES target['appsec.wafTimeout'] = maybeInt(DD_APPSEC_WAF_TIMEOUT) unprocessedTarget['appsec.wafTimeout'] = DD_APPSEC_WAF_TIMEOUT + this.#setBoolean(target, 'ciVisibility.enabled', DD_CIVISIBILITY_ENABLED) target.baggageMaxBytes = DD_TRACE_BAGGAGE_MAX_BYTES target.baggageMaxItems = DD_TRACE_BAGGAGE_MAX_ITEMS target.baggageTagKeys = DD_TRACE_BAGGAGE_TAG_KEYS @@ -1040,6 +1042,7 @@ class Config { this.#setBoolean(opts, 'iast.stackTrace.enabled', options.iast?.stackTrace?.enabled) this.#setString(opts, 'iast.telemetryVerbosity', options.iast && options.iast.telemetryVerbosity) this.#setBoolean(opts, 'isCiVisibility', options.isCiVisibility) + this.#setBoolean(opts, 'ciVisibility.enabled', options.ciVisibility?.enabled) this.#setBoolean(opts, 'legacyBaggageEnabled', options.legacyBaggageEnabled) this.#setBoolean(opts, 'llmobs.agentlessEnabled', options.llmobs?.agentlessEnabled) this.#setString(opts, 'llmobs.mlApp', options.llmobs?.mlApp) @@ -1104,6 +1107,11 @@ class Config { } } + isCiVisibilityEnabled () { + return this.ciVisibility.enabled + } + + // Is this the same as IsCiVisibilityEnabled? #isCiVisibility () { return this.#optionsArg.isCiVisibility ?? this.#defaults.isCiVisibility } diff --git a/packages/dd-trace/src/config_defaults.js b/packages/dd-trace/src/config_defaults.js index 3d80e8cf330..f5874672133 100644 --- a/packages/dd-trace/src/config_defaults.js +++ b/packages/dd-trace/src/config_defaults.js @@ -109,6 +109,7 @@ module.exports = { injectForce: null, isAzureFunction: false, isCiVisibility: false, + 'ciVisibility.enabled': true, isEarlyFlakeDetectionEnabled: false, isFlakyTestRetriesEnabled: false, flakyTestRetriesCount: 5,