From 880353aa6cd20b1bf64e68158d2fa022dda9cf94 Mon Sep 17 00:00:00 2001 From: Manuel Palenzuela Merino Date: Thu, 26 Mar 2026 16:46:02 +0100 Subject: [PATCH 1/3] Add Datadog code coverage upload alongside Codecov - Adds datadog-ci coverage upload to Makefile coverage target (via apk+npx, required for Alpine/musl-based CI image) - Fetches DD_API_KEY from Vault in GitLab CI coverage job Co-Authored-By: Claude Opus 4.6 --- .gitlab/build-and-test-fast.yml | 2 +- Makefile | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab/build-and-test-fast.yml b/.gitlab/build-and-test-fast.yml index eb9b97c4..30abb35a 100644 --- a/.gitlab/build-and-test-fast.yml +++ b/.gitlab/build-and-test-fast.yml @@ -213,4 +213,4 @@ coverage: max: 2 when: script_failure script: - - make coverage + - DD_API_KEY=$(vault kv get --format=json kv/k8s/gitlab-runner/nginx-datadog/datadoghq-api-key 2>/dev/null | jq -r '.data.data.key // empty') make coverage diff --git a/Makefile b/Makefile index f6a4ad15..57a30717 100644 --- a/Makefile +++ b/Makefile @@ -304,3 +304,4 @@ endif tar -C .musl-build -xzf test/coverage_data.tar.gz cd .musl-build; llvm-profdata merge -sparse *.profraw -o default.profdata && llvm-cov export ./ngx_http_datadog_module.so -format=lcov -instr-profile=default.profdata -ignore-filename-regex=src/coverage_fixup\.c > coverage.lcov codecov -Z -f .musl-build/coverage.lcov --disable-search -t $$(vault kv get -field=token kv/k8s/gitlab-runner/nginx-datadog/codecov) + apk add --no-cache nodejs npm && npx --yes @datadog/datadog-ci@latest coverage upload --format=lcov .musl-build/coverage.lcov || true From bb6fea89cf4d14982f8f1c2fc531854158047f37 Mon Sep 17 00:00:00 2001 From: Xavier Lamorlette Date: Fri, 27 Mar 2026 16:51:38 +0100 Subject: [PATCH 2/3] Simplify retrieval of datadoghq-api-key for code coverage upload --- .gitlab/build-and-test-fast.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/build-and-test-fast.yml b/.gitlab/build-and-test-fast.yml index 30abb35a..5ae475d7 100644 --- a/.gitlab/build-and-test-fast.yml +++ b/.gitlab/build-and-test-fast.yml @@ -213,4 +213,4 @@ coverage: max: 2 when: script_failure script: - - DD_API_KEY=$(vault kv get --format=json kv/k8s/gitlab-runner/nginx-datadog/datadoghq-api-key 2>/dev/null | jq -r '.data.data.key // empty') make coverage + - DD_API_KEY=$(vault kv get -field key kv/k8s/gitlab-runner/nginx-datadog/datadoghq-api-key 2>/dev/null) make coverage From 522655b208151194d9065dbb0be861439fb5bf2c Mon Sep 17 00:00:00 2001 From: Manuel Palenzuela Merino Date: Fri, 27 Mar 2026 17:13:25 +0100 Subject: [PATCH 3/3] Move nodejs/npm to Docker image, simplify Makefile Per review feedback: install nodejs/npm in the nginx_musl_toolchain image instead of at runtime in CI. Simplifies the Makefile coverage target. Co-Authored-By: Claude Opus 4.6 --- Makefile | 2 +- build_env/Dockerfile | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 57a30717..1a4bc587 100644 --- a/Makefile +++ b/Makefile @@ -304,4 +304,4 @@ endif tar -C .musl-build -xzf test/coverage_data.tar.gz cd .musl-build; llvm-profdata merge -sparse *.profraw -o default.profdata && llvm-cov export ./ngx_http_datadog_module.so -format=lcov -instr-profile=default.profdata -ignore-filename-regex=src/coverage_fixup\.c > coverage.lcov codecov -Z -f .musl-build/coverage.lcov --disable-search -t $$(vault kv get -field=token kv/k8s/gitlab-runner/nginx-datadog/codecov) - apk add --no-cache nodejs npm && npx --yes @datadog/datadog-ci@latest coverage upload --format=lcov .musl-build/coverage.lcov || true + npx --yes @datadog/datadog-ci@latest coverage upload --format=lcov .musl-build/coverage.lcov || true diff --git a/build_env/Dockerfile b/build_env/Dockerfile index 53d0b190..89767c4d 100644 --- a/build_env/Dockerfile +++ b/build_env/Dockerfile @@ -85,6 +85,9 @@ RUN cargo install --locked cbindgen --version 0.26.0 && \ # Shellcheck RUN apk add --no-cache shellcheck +# Node.js (for datadog-ci coverage upload) +RUN apk add --no-cache nodejs npm + # UV and Python packages for tests COPY --from=uv /uv /usr/local/bin/uv COPY pyproject.toml .