Skip to content

Commit f8b39c4

Browse files
authored
Merge pull request #4054 from DataDog/glopes/_dd.apm.enabled-everywhere
Place _dd.apm.enabled:0 in every span
2 parents b3541f9 + 6e3fe5d commit f8b39c4

10 files changed

Lines changed: 155 additions & 148 deletions

File tree

.gitlab/generate-appsec.php

Lines changed: 7 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -247,24 +247,6 @@
247247
<?php dockerhub_login() ?>
248248
script:
249249
- apt update && apt install -y openjdk-17-jre
250-
- |
251-
echo "Installing codecov CLI"
252-
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=0x27034E7FDB850E0BBC2C62FF806BB28AED779869" | gpg --no-default-keyring --keyring trustedkeys.gpg --import
253-
CODECOV_VERSION=0.6.1
254-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/linux/codecov
255-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/linux/codecov.SHA256SUM
256-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/linux/codecov.SHA256SUM.sig
257-
gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
258-
shasum -a 256 -c codecov.SHA256SUM
259-
rm codecov.SHA256SUM.sig codecov.SHA256SUM
260-
chmod +x codecov
261-
mv codecov /usr/local/bin/codecov
262-
- |
263-
echo "Installing vault for codecov token"
264-
curl -o vault.zip https://releases.hashicorp.com/vault/1.20.0/vault_1.20.0_linux_amd64.zip
265-
unzip vault.zip
266-
mv vault /usr/local/bin/vault
267-
rm vault.zip
268250
- |
269251
cd appsec/tests/integration
270252
CACHE_PATH=build/php-appsec-volume-caches-${ARCH}.tar.gz
@@ -280,18 +262,9 @@
280262
mkdir -p "$CI_PROJECT_DIR"/appsec/helper-rust
281263
docker run --rm -v php-helper-rust-coverage:/vol alpine cat /vol/coverage-unit.lcov > "$CI_PROJECT_DIR"/appsec/helper-rust/coverage-unit.lcov
282264
- |
283-
echo "Uploading helper-rust unit test coverage to codecov"
284265
cd "$CI_PROJECT_DIR"
285-
if ! VAULT_OUTPUT=$(vault kv get --format=json kv/k8s/gitlab-runner/dd-trace-php/codecov); then
286-
echo "ERROR: vault unreachable while fetching CODECOV_TOKEN; exiting 75 so GitLab auto-retries (see default retry.exit_codes in generate-common.php)"
287-
exit 75
288-
fi
289-
CODECOV_TOKEN=$(echo "$VAULT_OUTPUT" | jq -r .data.data.token)
290-
if [ -z "$CODECOV_TOKEN" ] || [ "$CODECOV_TOKEN" = "null" ]; then
291-
echo "ERROR: CODECOV_TOKEN empty/null after vault fetch; exiting 75 so GitLab auto-retries"
292-
exit 75
293-
fi
294-
codecov -t "$CODECOV_TOKEN" -n helper-rust-unit -F helper-rust-unit -v -f appsec/helper-rust/coverage-unit.lcov
266+
DD_COVERAGE_FLAGS=helper-rust-unit \
267+
.gitlab/upload-code-coverage-to-datadog.sh appsec/helper-rust/coverage-unit.lcov
295268
artifacts:
296269
paths:
297270
- appsec/helper-rust/coverage-unit.lcov
@@ -322,24 +295,6 @@
322295
<?php dockerhub_login() ?>
323296
script:
324297
- apt update && apt install -y openjdk-17-jre
325-
- |
326-
echo "Installing codecov CLI"
327-
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=0x27034E7FDB850E0BBC2C62FF806BB28AED779869" | gpg --no-default-keyring --keyring trustedkeys.gpg --import
328-
CODECOV_VERSION=0.6.1
329-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/linux/codecov
330-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/linux/codecov.SHA256SUM
331-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/linux/codecov.SHA256SUM.sig
332-
gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
333-
shasum -a 256 -c codecov.SHA256SUM
334-
rm codecov.SHA256SUM.sig codecov.SHA256SUM
335-
chmod +x codecov
336-
mv codecov /usr/local/bin/codecov
337-
- |
338-
echo "Installing vault for codecov token"
339-
curl -o vault.zip https://releases.hashicorp.com/vault/1.20.0/vault_1.20.0_linux_amd64.zip
340-
unzip vault.zip
341-
mv vault /usr/local/bin/vault
342-
rm vault.zip
343298
- |
344299
cd appsec/tests/integration
345300
CACHE_PATH=build/php-appsec-volume-caches-${ARCH}.tar.gz
@@ -359,18 +314,9 @@
359314
mkdir -p "$CI_PROJECT_DIR"/appsec/helper-rust
360315
docker run --rm -v php-helper-rust-coverage:/vol alpine cat /vol/coverage-integration.lcov > "$CI_PROJECT_DIR"/appsec/helper-rust/coverage-integration.lcov
361316
- |
362-
echo "Uploading helper-rust integration test coverage to codecov"
363317
cd "$CI_PROJECT_DIR"
364-
if ! VAULT_OUTPUT=$(vault kv get --format=json kv/k8s/gitlab-runner/dd-trace-php/codecov); then
365-
echo "ERROR: vault unreachable while fetching CODECOV_TOKEN; exiting 75 so GitLab auto-retries (see default retry.exit_codes in generate-common.php)"
366-
exit 75
367-
fi
368-
CODECOV_TOKEN=$(echo "$VAULT_OUTPUT" | jq -r .data.data.token)
369-
if [ -z "$CODECOV_TOKEN" ] || [ "$CODECOV_TOKEN" = "null" ]; then
370-
echo "ERROR: CODECOV_TOKEN empty/null after vault fetch; exiting 75 so GitLab auto-retries"
371-
exit 75
372-
fi
373-
codecov -t "$CODECOV_TOKEN" -n helper-rust-integration -F helper-rust-integration -v -f appsec/helper-rust/coverage-integration.lcov
318+
DD_COVERAGE_FLAGS=helper-rust-integration \
319+
.gitlab/upload-code-coverage-to-datadog.sh appsec/helper-rust/coverage-integration.lcov
374320
after_script:
375321
- mkdir -p "${CI_PROJECT_DIR}/artifacts"
376322
- find appsec/tests/integration/build/test-results -name "*.xml" -exec cp --parents '{}' "${CI_PROJECT_DIR}/artifacts/" \; || true
@@ -401,28 +347,7 @@
401347
script:
402348
- |
403349
echo "Installing dependencies"
404-
cd /tmp
405-
curl -o vault.zip https://releases.hashicorp.com/vault/1.20.0/vault_1.20.0_linux_amd64.zip
406-
unzip vault.zip
407-
sudo cp -v vault /usr/local/bin
408-
cd -
409-
sudo sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g; s|http://security.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list
410350
sudo apt-get update && sudo apt-get install -y jq gcovr llvm-20 clang-20
411-
412-
echo "Installing codecov"
413-
414-
CODECOV_TOKEN=$(vault kv get --format=json kv/k8s/gitlab-runner/dd-trace-php/codecov | jq -r .data.data.token)
415-
CODECOV_VERSION=0.6.1
416-
CODECOV_ARCH=linux
417-
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=0x27034E7FDB850E0BBC2C62FF806BB28AED779869" | gpg --no-default-keyring --keyring trustedkeys.gpg --import
418-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/${CODECOV_ARCH}/codecov
419-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/${CODECOV_ARCH}/codecov.SHA256SUM
420-
curl -Os https://uploader.codecov.io/v${CODECOV_VERSION}/${CODECOV_ARCH}/codecov.SHA256SUM.sig
421-
gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
422-
shasum -a 256 -c codecov.SHA256SUM
423-
rm codecov.SHA256SUM.sig codecov.SHA256SUM
424-
sudo mv codecov /usr/local/bin/codecov
425-
sudo chmod +x /usr/local/bin/codecov
426351
- cd appsec/build
427352
- |
428353
cmake .. -DCMAKE_BUILD_TYPE=Debug -DDD_APPSEC_ENABLE_COVERAGE=ON \
@@ -445,36 +370,17 @@
445370
llvm-cov-20 export "$CI_PROJECT_DIR"/appsec/build/ddappsec.so \
446371
-format=lcov -instr-profile=default.profdata \
447372
> "$CI_PROJECT_DIR"/appsec/build/coverage-ext.lcov
448-
echo "Uploading extension coverage to codecov"
449-
cd "$CI_PROJECT_DIR"
450-
codecov -t "$CODECOV_TOKEN" -n appsec-extension -v -f appsec/build/coverage-ext.lcov
451373
- |
452374
cd /tmp/cov-helper
453375
llvm-profdata-20 merge -sparse *.profraw -o default.profdata
454376
llvm-cov-20 export "$CI_PROJECT_DIR"/appsec/build/tests/helper/ddappsec_helper_test \
455377
-format=lcov -instr-profile=default.profdata \
456378
> "$CI_PROJECT_DIR/appsec/build/coverage-helper.lcov"
457-
echo "Uploading helper coverage to codecov"
458-
cd "$CI_PROJECT_DIR"
459-
codecov -t "$CODECOV_TOKEN" -n appsec-helper -v -f appsec/build/coverage-helper.lcov
460379
- |
461-
echo "Uploading coverage to Datadog"
462380
cd "$CI_PROJECT_DIR"
463-
464-
DATADOG_API_KEY=$(vault kv get --format=json kv/k8s/gitlab-runner/dd-trace-php/datadoghq-api-key | jq -r .data.data.key)
465-
export DATADOG_API_KEY
466-
export DD_SITE="datadoghq.com"
467-
468-
# Install datadog-ci
469-
DATADOG_CI_VERSION="v5.9.1"
470-
curl -L --fail "https://github.com/DataDog/datadog-ci/releases/download/${DATADOG_CI_VERSION}/datadog-ci_linux-x64" --output "/tmp/datadog-ci"
471-
chmod +x /tmp/datadog-ci
472-
473-
echo "Uploading extension coverage to Datadog"
474-
/tmp/datadog-ci coverage upload --format=lcov appsec/build/coverage-ext.lcov || true
475-
476-
echo "Uploading helper coverage to Datadog"
477-
/tmp/datadog-ci coverage upload --format=lcov appsec/build/coverage-helper.lcov || true
381+
.gitlab/upload-code-coverage-to-datadog.sh \
382+
appsec/build/coverage-ext.lcov \
383+
appsec/build/coverage-helper.lcov
478384

479385

480386
"push appsec images":
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
if [[ $# -eq 0 ]]; then
6+
echo "Usage: $0 <coverage-report> [<coverage-report> ...]" >&2
7+
exit 2
8+
fi
9+
10+
: "${CI_PROJECT_DIR:?CI_PROJECT_DIR must be set}"
11+
12+
export DD_SITE="${DD_SITE:-datadoghq.com}"
13+
14+
if [[ -n "${DD_API_KEY:-}" ]]; then
15+
:
16+
elif [[ -n "${DATADOG_API_KEY:-}" ]]; then
17+
DD_API_KEY="${DATADOG_API_KEY}"
18+
else
19+
vault_version="1.20.0"
20+
vault_path="/tmp/vault"
21+
vault_zip="${vault_path}.zip"
22+
23+
if [[ ! -x "${vault_path}" ]]; then
24+
case "$(uname -m)" in
25+
x86_64)
26+
vault_arch="amd64"
27+
datadog_ci_arch="x64"
28+
;;
29+
aarch64|arm64)
30+
vault_arch="arm64"
31+
datadog_ci_arch="arm64"
32+
;;
33+
*)
34+
echo "ERROR: unsupported architecture for Vault: $(uname -m)" >&2
35+
exit 1
36+
;;
37+
esac
38+
39+
if ! curl -L --fail \
40+
"https://releases.hashicorp.com/vault/${vault_version}/vault_${vault_version}_linux_${vault_arch}.zip" \
41+
--output "${vault_zip}"; then
42+
echo "ERROR: failed to download Vault; exiting 75 so GitLab auto-retries" >&2
43+
exit 75
44+
fi
45+
unzip -o -q "${vault_zip}" -d /tmp
46+
chmod +x "${vault_path}"
47+
rm -f "${vault_zip}"
48+
fi
49+
50+
if ! vault_output="$("${vault_path}" kv get --format=json \
51+
kv/k8s/gitlab-runner/dd-trace-php/datadoghq-api-key)"; then
52+
echo "ERROR: Vault unreachable while fetching DD_API_KEY; exiting 75 so GitLab auto-retries" >&2
53+
exit 75
54+
fi
55+
56+
DD_API_KEY="$(jq -r '.data.data.key' <<< "${vault_output}")"
57+
if [[ -z "${DD_API_KEY}" || "${DD_API_KEY}" == "null" ]]; then
58+
echo "ERROR: DD_API_KEY empty/null after Vault fetch; exiting 75 so GitLab auto-retries" >&2
59+
exit 75
60+
fi
61+
fi
62+
export DD_API_KEY
63+
64+
datadog_ci_version="${DATADOG_CI_VERSION:-v5.9.1}"
65+
datadog_ci_path="${DATADOG_CI_PATH:-/tmp/datadog-ci}"
66+
67+
if [[ -z "${datadog_ci_arch:-}" ]]; then
68+
case "$(uname -m)" in
69+
x86_64)
70+
datadog_ci_arch="x64"
71+
;;
72+
aarch64|arm64)
73+
datadog_ci_arch="arm64"
74+
;;
75+
*)
76+
echo "ERROR: unsupported architecture for datadog-ci: $(uname -m)" >&2
77+
exit 1
78+
;;
79+
esac
80+
fi
81+
82+
if [[ ! -x "${datadog_ci_path}" ]]; then
83+
if ! curl -L --fail \
84+
"https://github.com/DataDog/datadog-ci/releases/download/${datadog_ci_version}/datadog-ci_linux-${datadog_ci_arch}" \
85+
--output "${datadog_ci_path}"; then
86+
echo "ERROR: failed to download datadog-ci; exiting 75 so GitLab auto-retries" >&2
87+
exit 75
88+
fi
89+
chmod +x "${datadog_ci_path}"
90+
fi
91+
92+
flags_args=()
93+
if [[ -n "${DD_COVERAGE_FLAGS:-}" ]]; then
94+
IFS=',' read -ra coverage_flags <<< "${DD_COVERAGE_FLAGS}"
95+
for flag in "${coverage_flags[@]}"; do
96+
flags_args+=(--flags "${flag}")
97+
done
98+
fi
99+
100+
cd "${CI_PROJECT_DIR}"
101+
102+
for report in "$@"; do
103+
if [[ ! -f "${report}" ]]; then
104+
echo "ERROR: coverage report not found: ${report}" >&2
105+
exit 1
106+
fi
107+
108+
# Reports generated inside the build containers use /project as the checkout
109+
# root. Datadog expects source paths relative to the repository root.
110+
sed -i \
111+
-e 's|^SF:/project/|SF:|' \
112+
-e "s|^SF:${CI_PROJECT_DIR}/|SF:|" \
113+
"${report}"
114+
115+
echo "Uploading ${report} to Datadog"
116+
"${datadog_ci_path}" coverage upload \
117+
--format=lcov \
118+
"${flags_args[@]}" \
119+
"${report}"
120+
done

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# DD Trace PHP
22

33
[![CircleCI](https://circleci.com/gh/DataDog/dd-trace-php/tree/master.svg?style=svg)](https://circleci.com/gh/DataDog/dd-trace-php/tree/master)
4-
[![CodeCov](https://codecov.io/gh/DataDog/dd-trace-php/branch/master/graph/badge.svg?token=eXio8H7vwF)](https://codecov.io/gh/DataDog/dd-trace-php)
54
[![OpenTracing Badge](https://img.shields.io/badge/OpenTracing-enabled-blue.svg)](http://opentracing.io)
65
[![OpenTelemetry Badge](https://img.shields.io/badge/OpenTelemetry-enabled-blue.svg)](https://opentelemetry.io)
76
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.0-8892BF.svg)](https://php.net/)

appsec/helper-rust/CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,8 @@ The appsec child pipeline (generated from `generate-appsec.php`) includes these
303303
| Job | Description |
304304
|-----|-------------|
305305
| `helper-rust build and test` | Builds helper-rust and runs `cargo test` + format check |
306-
| `helper-rust code coverage` | Runs unit tests with coverage, uploads to codecov |
307-
| `helper-rust integration coverage` | Runs integration tests with coverage-instrumented binary |
306+
| `helper-rust code coverage` | Runs unit tests with coverage, uploads to Datadog |
307+
| `helper-rust integration coverage` | Runs integration tests with coverage-instrumented binary, uploads to Datadog |
308308
| `appsec integration tests (helper-cpp)` | Integration tests disabling Rust helper redirection (PHP 8.3, 8.3-zts) |
309309

310310
### Checking Pipeline Status

appsec/tests/integration/build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1039,7 +1039,9 @@ buildRunInDockerTask(
10391039
curl -LsSf "https://github.com/taiki-e/cargo-llvm-cov/releases/download/v0.6.23/cargo-llvm-cov-\${LLVM_COV_ARCH}.tar.gz" | tar xzf - -C /root/.cargo/bin
10401040
10411041
echo '=== Running cargo test with coverage ==='
1042-
cargo llvm-cov test --release --lcov --output-path /helper-rust-build/coverage-unit.lcov
1042+
cargo llvm-cov test --release --lcov \\
1043+
--ignore-filename-regex='appsec/third_party/' \\
1044+
--output-path /helper-rust-build/coverage-unit.lcov
10431045
10441046
echo '=== Coverage data generated ==='
10451047
"""
@@ -1122,6 +1124,7 @@ buildRunInDockerTask(
11221124
/helper-rust-build/libddappsec-helper.so \\
11231125
-format=lcov \\
11241126
-instr-profile=merged.profdata \\
1127+
-ignore-filename-regex='(/root/\\.cargo/|/project/appsec/third_party/|^/rustc/|^/helper-rust-build/)' \\
11251128
> /helper-rust-build/coverage-integration.lcov
11261129
echo 'Coverage report generated'
11271130
else

code-coverage.datadog.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ ignore:
33
- "appsec/build/"
44
- "appsec/tests/"
55
- "appsec/third_party/"
6+
flags:
7+
helper-rust-unit:
8+
carryforward: true
9+
helper-rust-integration:
10+
carryforward: true
611
gates:
712
- type: total_coverage_percentage
813
config:

codecov.yml

Lines changed: 0 additions & 37 deletions
This file was deleted.

tests/ext/distributed_tracing/distributed_trace_asm_standalone_01.phpt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ array(2) {
7979
}
8080
}
8181
[1]=>
82-
array(10) {
82+
array(11) {
8383
["trace_id"]=>
8484
string(2) "42"
8585
["span_id"]=>
@@ -103,5 +103,10 @@ array(2) {
103103
["_dd.origin"]=>
104104
string(7) "datadog"
105105
}
106+
["metrics"]=>
107+
array(1) {
108+
["_dd.apm.enabled"]=>
109+
float(0)
110+
}
106111
}
107112
}

0 commit comments

Comments
 (0)