151 lines
5.6 KiB
Bash
Executable File
151 lines
5.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
chart_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
repo_root="$(cd "$chart_dir/../../.." && pwd)"
|
|
tmp_dir="$(mktemp -d)"
|
|
trap 'rm -rf "$tmp_dir"' EXIT
|
|
|
|
assert_count() {
|
|
local file="$1"
|
|
local needle="$2"
|
|
local expected="$3"
|
|
local count
|
|
count="$(grep -F -c -- "$needle" "$file" || true)"
|
|
if [[ "$count" != "$expected" ]]; then
|
|
printf 'Expected %s occurrences of %s, found %s\n' "$expected" "$needle" "$count" >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
assert_contains() {
|
|
local file="$1"
|
|
local needle="$2"
|
|
if ! grep -F -q -- "$needle" "$file"; then
|
|
printf 'Expected rendered chart to contain %s\n' "$needle" >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
assert_not_contains() {
|
|
local file="$1"
|
|
local needle="$2"
|
|
if grep -F -q -- "$needle" "$file"; then
|
|
printf 'Expected rendered chart not to contain %s\n' "$needle" >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
assert_file_contains() {
|
|
assert_contains "$1" "$2"
|
|
}
|
|
|
|
assert_file_not_contains() {
|
|
assert_not_contains "$1" "$2"
|
|
}
|
|
|
|
default_rendered="$tmp_dir/default.yaml"
|
|
helm template openwork-ee "$chart_dir" --set inference.enabled=true > "$default_rendered"
|
|
assert_contains "$default_rendered" 'DEN_API_NODE_OPTIONS: ""'
|
|
assert_count "$default_rendered" 'name: NODE_OPTIONS' 2
|
|
assert_count "$default_rendered" 'valueFrom: null' 1
|
|
assert_not_contains "$default_rendered" 'key: DEN_API_NODE_OPTIONS'
|
|
assert_count "$default_rendered" 'name: DEN_OBSERVABILITY_BACKEND' 2
|
|
assert_count "$default_rendered" 'value: "none"' 2
|
|
assert_not_contains "$default_rendered" 'name: OTEL_EXPORTER_OTLP_HEADERS'
|
|
assert_not_contains "$default_rendered" 'name: SENTRY_DSN'
|
|
|
|
otel_values="$tmp_dir/otel-values.yaml"
|
|
otel_rendered="$tmp_dir/otel.yaml"
|
|
cat > "$otel_values" <<'YAML'
|
|
inference:
|
|
enabled: true
|
|
config:
|
|
denApiNodeOptions: --max-old-space-size=4096
|
|
observability:
|
|
backend: otel
|
|
otel:
|
|
endpoint: https://otel.example.test/otlp
|
|
tracesEndpoint: https://otel.example.test/v1/traces
|
|
metricsEndpoint: https://otel.example.test/v1/metrics
|
|
logsEndpoint: https://otel.example.test/v1/logs
|
|
exporters:
|
|
metrics: none
|
|
tracesSampler: parentbased_always_on
|
|
headers:
|
|
existingSecret: otel-runtime
|
|
key: otlp-headers
|
|
denApi:
|
|
env:
|
|
CUSTOM_DEN_API_ENV: api
|
|
denWeb:
|
|
env:
|
|
CUSTOM_DEN_WEB_ENV: web
|
|
YAML
|
|
helm template openwork-ee "$chart_dir" -f "$otel_values" > "$otel_rendered"
|
|
assert_contains "$otel_rendered" 'DEN_API_NODE_OPTIONS: "--max-old-space-size=4096"'
|
|
assert_contains "$otel_rendered" 'value: "--max-old-space-size=4096"'
|
|
assert_count "$otel_rendered" 'name: DEN_OBSERVABILITY_BACKEND' 2
|
|
assert_count "$otel_rendered" 'value: "otel"' 2
|
|
assert_count "$otel_rendered" 'name: OTEL_EXPORTER_OTLP_HEADERS' 2
|
|
assert_count "$otel_rendered" 'name: OTEL_SERVICE_NAME' 2
|
|
assert_count "$otel_rendered" 'name: OTEL_METRICS_EXPORTER' 2
|
|
assert_count "$otel_rendered" 'value: "parentbased_always_on"' 2
|
|
assert_not_contains "$otel_rendered" 'name: OTEL_TRACES_SAMPLER_ARG'
|
|
assert_contains "$otel_rendered" 'value: "den-api"'
|
|
assert_contains "$otel_rendered" 'value: "den-web"'
|
|
assert_contains "$otel_rendered" 'name: "otel-runtime"'
|
|
assert_contains "$otel_rendered" 'key: "otlp-headers"'
|
|
assert_contains "$otel_rendered" 'name: CUSTOM_DEN_API_ENV'
|
|
assert_contains "$otel_rendered" 'name: CUSTOM_DEN_WEB_ENV'
|
|
assert_not_contains "$otel_rendered" 'name: SENTRY_AUTH_TOKEN'
|
|
|
|
legacy_values="$tmp_dir/legacy-node-options-values.yaml"
|
|
legacy_rendered="$tmp_dir/legacy-node-options.yaml"
|
|
cat > "$legacy_values" <<'YAML'
|
|
denApi:
|
|
env:
|
|
NODE_OPTIONS: --tls-max-v1.2
|
|
YAML
|
|
helm template openwork-ee "$chart_dir" -f "$legacy_values" > "$legacy_rendered"
|
|
assert_count "$legacy_rendered" 'name: NODE_OPTIONS' 2
|
|
assert_contains "$legacy_rendered" 'value: "--tls-max-v1.2"'
|
|
assert_not_contains "$legacy_rendered" 'valueFrom: null'
|
|
assert_not_contains "$legacy_rendered" 'key: DEN_API_NODE_OPTIONS'
|
|
|
|
sentry_values="$tmp_dir/sentry-values.yaml"
|
|
sentry_rendered="$tmp_dir/sentry.yaml"
|
|
cat > "$sentry_values" <<'YAML'
|
|
inference:
|
|
enabled: true
|
|
observability:
|
|
backend: sentry
|
|
sentry:
|
|
dsnSecret:
|
|
existingSecret: sentry-runtime
|
|
key: dsn
|
|
tracesSampleRate: "0.75"
|
|
environment: production
|
|
release: "2026.07.11"
|
|
dist: web
|
|
YAML
|
|
helm template openwork-ee "$chart_dir" -f "$sentry_values" > "$sentry_rendered"
|
|
assert_count "$sentry_rendered" 'name: DEN_OBSERVABILITY_BACKEND' 2
|
|
assert_count "$sentry_rendered" 'value: "sentry"' 2
|
|
assert_count "$sentry_rendered" 'name: SENTRY_DSN' 2
|
|
assert_contains "$sentry_rendered" 'name: "sentry-runtime"'
|
|
assert_not_contains "$sentry_rendered" 'SENTRY_AUTH_TOKEN'
|
|
assert_not_contains "$sentry_rendered" 'SENTRY_ORG'
|
|
assert_not_contains "$sentry_rendered" 'SENTRY_PROJECT'
|
|
assert_not_contains "$sentry_rendered" 'SENTRY_URL'
|
|
assert_not_contains "$sentry_rendered" 'name: OTEL_EXPORTER_OTLP_HEADERS'
|
|
|
|
assert_file_contains "$repo_root/packaging/docker/Dockerfile.den" '/app/ee/apps/den-api/dist/main.js'
|
|
assert_file_not_contains "$repo_root/packaging/docker/Dockerfile.den" '/app/ee/apps/den-api/dist/server.js'
|
|
assert_file_contains "$repo_root/packaging/docker/docker-compose.den-dev.yml" '/app/ee/apps/den-api/dist/main.js'
|
|
assert_file_not_contains "$repo_root/packaging/docker/docker-compose.den-dev.yml" '/app/ee/apps/den-api/dist/server.js'
|
|
assert_file_contains "$repo_root/.devcontainer/start-daytona-server.sh" 'pnpm --filter @openwork-ee/den-api exec tsx watch src/main.ts'
|
|
assert_file_not_contains "$repo_root/.devcontainer/start-daytona-server.sh" 'ee/apps/den-api/src/server.ts'
|
|
assert_file_contains "$repo_root/evals/packages/hosts/src/den-stack.ts" '"tsx", "src/main.ts"'
|
|
assert_file_not_contains "$repo_root/evals/packages/hosts/src/den-stack.ts" '"tsx", "src/server.ts"'
|