From 38399d5213c901207f746f5d94aee0ac83b72c2b Mon Sep 17 00:00:00 2001 From: Alexandre Rulleau Date: Mon, 8 Dec 2025 16:01:48 +0100 Subject: [PATCH 1/3] test(CI): upload junit reports to datadog Signed-off-by: Alexandre Rulleau --- .github/CODEOWNERS | 20 ---- .gitlab/generate-appsec.php | 10 ++ .gitlab/generate-profiler.php | 13 ++- .gitlab/generate-shared.php | 38 ++++++-- .gitlab/generate-tracer.php | 27 +++++- .gitlab/run_php_language_tests.sh | 2 +- .gitlab/upload-junit-to-datadog.sh | 144 +++++++++++++++++++++++++++++ CODEOWNERS | 2 + Makefile | 3 +- 9 files changed, 224 insertions(+), 35 deletions(-) delete mode 100644 .github/CODEOWNERS create mode 100755 .gitlab/upload-junit-to-datadog.sh create mode 100644 CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 90b79c23e7a..00000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,20 +0,0 @@ -# Default owners -* @DataDog/apm-php - -# Profiling team -/profiling/ @DataDog/profiling-php - -# ASM Team -/appsec/ @DataDog/asm-php - -# APM libdatadog -/components-rs/ @Datadog/libdatadog-apm -compile_rust.sh @Datadog/libdatadog-apm - -# APM IDM Team -/src/ @DataDog/apm-idm-php - -# Release files -Cargo.lock @DataDog/apm-php @DataDog/profiling-php @Datadog/libdatadog-apm -package.xml @DataDog/apm-php @DataDog/profiling-php @Datadog/asm-php -VERSION @DataDog/apm-php @DataDog/profiling-php @Datadog/asm-php diff --git a/.gitlab/generate-appsec.php b/.gitlab/generate-appsec.php index 56b5ee2ec98..87ba0b639fe 100644 --- a/.gitlab/generate-appsec.php +++ b/.gitlab/generate-appsec.php @@ -142,6 +142,16 @@ TERM=dumb ./gradlew $targets --info -Pbuildscan --scan TERM=dumb ./gradlew saveCaches --info + after_script: + - mkdir -p "${CI_PROJECT_DIR}/artifacts" + - find appsec/tests/integration/build/test-results -name "*.xml" -exec cp --parents '{}' "${CI_PROJECT_DIR}/artifacts/" \; + - .gitlab/upload-junit-to-datadog.sh "test.source.file:appsec" + artifacts: + reports: + junit: "artifacts/**/test-results/**/TEST-*.xml" + paths: + - "artifacts/" + when: "always" cache: - key: "appsec int test cache" paths: diff --git a/.gitlab/generate-profiler.php b/.gitlab/generate-profiler.php index 76602d3ef75..3246f0e5b9c 100644 --- a/.gitlab/generate-profiler.php +++ b/.gitlab/generate-profiler.php @@ -46,14 +46,23 @@ - '# NTS' - command -v switch-php && switch-php "${PHP_MAJOR_MINOR}" - cargo build --profile profiler-release --all-features - - (cd tests; php run-tests.php -d "extension=/mnt/ramdisk/cargo/profiler-release/libdatadog_php_profiling.so" --show-diff -g "FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP" "phpt") + - mkdir -p "${CI_PROJECT_DIR}/artifacts/profiler-tests" + - (cd tests; TEST_PHP_JUNIT="${CI_PROJECT_DIR}/artifacts/profiler-tests/nts-results.xml" php run-tests.php -d "extension=/mnt/ramdisk/cargo/profiler-release/libdatadog_php_profiling.so" --show-diff -g "FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP" "phpt") - touch build.rs #make sure `build.rs` gets executed after `switch-php` call - '# ZTS' - command -v switch-php && switch-php "${PHP_MAJOR_MINOR}-zts" - cargo build --profile profiler-release --all-features - - (cd tests; php run-tests.php -d "extension=/mnt/ramdisk/cargo/profiler-release/libdatadog_php_profiling.so" --show-diff -g "FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP" "phpt") + - (cd tests; TEST_PHP_JUNIT="${CI_PROJECT_DIR}/artifacts/profiler-tests/zts-results.xml" php run-tests.php -d "extension=/mnt/ramdisk/cargo/profiler-release/libdatadog_php_profiling.so" --show-diff -g "FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP" "phpt") + after_script: + - .gitlab/upload-junit-to-datadog.sh "test.source.file:profiling" + artifacts: + reports: + junit: "artifacts/profiler-tests/*.xml" + paths: + - "artifacts/" + when: "always" "clippy NTS": stage: test diff --git a/.gitlab/generate-shared.php b/.gitlab/generate-shared.php index d0dd188f6b4..243078f2a1f 100644 --- a/.gitlab/generate-shared.php +++ b/.gitlab/generate-shared.php @@ -28,13 +28,19 @@ - mkdir -p tmp/build_php_components_asan && cd tmp/build_php_components_asan - cmake $([ -f "/etc/debian_version" ] && echo "-DCMAKE_TOOLCHAIN_FILE=../../cmake/asan.cmake") -DCMAKE_BUILD_TYPE=Debug -DDATADOG_PHP_TESTING=ON ../../components - make -j all - - make test + - mkdir -p "${CI_PROJECT_DIR}/artifacts" + - make test ARGS="--output-junit ${CI_PROJECT_DIR}/artifacts/components-asan-results.xml --output-on-failure" after_script: - mkdir -p tmp/artifacts - - cp tmp/build_php_components_asan/Testing/Temporary/LastTest.log tmp/artifacts/LastTestUBSan.log + - cp tmp/build_php_components_asan/Testing/Temporary/LastTest.log tmp/artifacts/LastTestASan.log + - .gitlab/upload-junit-to-datadog.sh "test.source.file:components-rs" artifacts: + reports: + junit: "artifacts/*-results.xml" paths: - tmp/artifacts + - artifacts + when: "always" "C components UBSAN": tags: [ "arch:amd64" ] @@ -46,13 +52,19 @@ - mkdir -p tmp/build_php_components_ubsan && cd tmp/build_php_components_ubsan - CMAKE_PREFIX_PATH=/opt/catch2 cmake -DCMAKE_TOOLCHAIN_FILE=../../cmake/ubsan.cmake -DCMAKE_BUILD_TYPE=Debug -DDATADOG_PHP_TESTING=ON ../../components - make -j all - - make test ARGS="--output-on-failure --repeat until-fail:10" # channel is non-deterministic, so run tests a few more times. At the moment, Catch2 tests are not automatically adding labels, so run all tests instead of just channel's: https://github.com/catchorg/Catch2/issues/1590 + - mkdir -p "${CI_PROJECT_DIR}/artifacts" + - make test ARGS="--output-junit ${CI_PROJECT_DIR}/artifacts/components-ubsan-results.xml --output-on-failure --repeat until-fail:10" # channel is non-deterministic, so run tests a few more times. At the moment, Catch2 tests are not automatically adding labels, so run all tests instead of just channel's: https://github.com/catchorg/Catch2/issues/1590 after_script: - mkdir -p tmp/artifacts - - cp tmp/build_php_components_ubsan/Testing/Temporary/LastTest.log tmp/artifacts/LastTestASan.log + - cp tmp/build_php_components_ubsan/Testing/Temporary/LastTest.log tmp/artifacts/LastTestUBSan.log + - .gitlab/upload-junit-to-datadog.sh "test.source.file:components-rs" artifacts: + reports: + junit: "artifacts/*-results.xml" paths: - tmp/artifacts + - artifacts + when: "always" "Build & Test Tea": tags: [ "arch:amd64" ] @@ -67,15 +79,21 @@ script: - sh .gitlab/build-tea.sh $SWITCH_PHP_VERSION - cd tmp/build-tea-${SWITCH_PHP_VERSION} - - make test + - mkdir -p "${CI_PROJECT_DIR}/artifacts" + - make test ARGS="--output-junit ${CI_PROJECT_DIR}/artifacts/tea-${SWITCH_PHP_VERSION}-results.xml --output-on-failure" - grep -e "=== Total [0-9]+ memory leaks detected ===" Testing/Temporary/LastTest.log && exit 1 || true after_script: - mkdir -p tmp/artifacts/ - - cp tmp/build-tea-${SWITCH_PHP_VERSION}/Testing/Temporary/LastTest.log tmp/artifacts/LastTestASan.log + - cp tmp/build-tea-${SWITCH_PHP_VERSION}/Testing/Temporary/LastTest.log tmp/artifacts/LastTest.log + - .gitlab/upload-junit-to-datadog.sh "test.source.file:zend_abstract_interface" artifacts: + reports: + junit: "artifacts/*-results.xml" paths: - tmp/tea - tmp/artifacts + - artifacts + when: "always" .tea_test: tags: [ "arch:amd64" ] @@ -89,9 +107,14 @@ after_script: - mkdir -p tmp/artifacts - cp tmp/build*/Testing/Temporary/LastTest.log tmp/artifacts/LastTest.log + - .gitlab/upload-junit-to-datadog.sh "test.source.file:zend_abstract_interface" artifacts: + reports: + junit: "artifacts/*-results.xml" paths: - tmp/artifacts + - artifacts + when: "always" cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_ZAI_TESTING=ON -DPhpConfig_ROOT=$(php-config --prefix) ../../zend_abstract_interface - make -j all - - make test + - mkdir -p "${CI_PROJECT_DIR}/artifacts" + - make test ARGS="--output-junit ${CI_PROJECT_DIR}/artifacts/zai---results.xml --output-on-failure" - grep -e "=== Total [0-9]+ memory leaks detected ===" Testing/Temporary/LastTest.log && exit 1 || true - .gitlab/collect_artifacts.sh "" + - .gitlab/upload-junit-to-datadog.sh "test.source.file:src" " ARCH: "" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/tmp/build_extension/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/tmp/build_extension/artifacts/tests" - make test_c @@ -263,7 +266,9 @@ function before_script_steps($with_docker_auth = false) { variables: PHP_MAJOR_MINOR: "" ARCH: "" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" - make test_internal_api_randomized @@ -289,7 +294,9 @@ function before_script_steps($with_docker_auth = false) { variables: PHP_MAJOR_MINOR: "" ARCH: "amd64" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" - make test_with_init_hook @@ -311,7 +318,9 @@ function before_script_steps($with_docker_auth = false) { MAX_TEST_PARALLELISM: 4 PHP_MAJOR_MINOR: "" ARCH: "amd64" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/tmp/build_extension/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/tmp/build_extension/artifacts/tests" - make test_c_observer @@ -328,7 +337,9 @@ function before_script_steps($with_docker_auth = false) { variables: PHP_MAJOR_MINOR: "" ARCH: "amd64" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" - make test_opcache " ARCH: "amd64" script: - - make test_unit + - make test_unit PHPUNIT_JUNIT="artifacts/tests/php-tests.xml" "API unit tests: []": @@ -394,7 +405,9 @@ function before_script_steps($with_docker_auth = false) { variables: PHP_MAJOR_MINOR: "" ARCH: "amd64" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" - make test_api_unit @@ -410,6 +423,7 @@ function before_script_steps($with_docker_auth = false) { variables: PHP_MAJOR_MINOR: "" ARCH: "amd64" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/artifacts/tests/php-tests.xml" =")): ?> KUBERNETES_CPU_REQUEST: 8 MAX_TEST_PARALLELISM: 16 @@ -418,6 +432,7 @@ function before_script_steps($with_docker_auth = false) { timeout: 40m script: + - mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" - make test_c_disabled @@ -433,7 +448,9 @@ function before_script_steps($with_docker_auth = false) { variables: PHP_MAJOR_MINOR: "" ARCH: "amd64" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" - make test_internal_api_randomized @@ -449,7 +466,9 @@ function before_script_steps($with_docker_auth = false) { variables: PHP_MAJOR_MINOR: "" ARCH: "amd64" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/tmp/build_extension/artifacts/tests/php-tests.xml" script: + - mkdir -p "${CI_PROJECT_DIR}/tmp/build_extension/artifacts/tests" - make test_opcache @@ -472,7 +491,7 @@ function before_script_steps($with_docker_auth = false) { DD_TRACE_WARN_LEGACY_DD_TRACE: "0" DD_TRACE_GIT_METADATA_ENABLED: "0" REPORT_EXIT_STATUS: "1" - TEST_PHP_JUNIT: "/tmp/artifacts/tests/php-tests.xml" + TEST_PHP_JUNIT: "${CI_PROJECT_DIR}/artifacts/tests/php-tests.xml" SKIP_ONLINE_TEST: "1" =")): /* too expensive */ ?> DD_INSTRUMENTATION_TELEMETRY_ENABLED: 0 @@ -516,7 +535,7 @@ function before_script_steps($with_docker_auth = false) { - make composer_tests_update - .gitlab/wait-for-service-ready.sh script: - - DD_TRACE_AGENT_TIMEOUT=1000 make $MAKE_TARGET RUST_DEBUG_BUILD=1 PHPUNIT_OPTS="--log-junit artifacts/tests/results.xml" + - DD_TRACE_AGENT_TIMEOUT=1000 make $MAKE_TARGET RUST_DEBUG_BUILD=1 PHPUNIT_JUNIT="artifacts/tests/results.xml" - find tests -type f \( -name 'phpunit_error.log' -o -name 'nginx_*.log' -o -name 'apache_*.log' -o -name 'php_fpm_*.log' -o -name 'dd_php_error.log' \) -exec cp --parents '{}' artifacts \; - make tested_versions && cp tests/tested_versions/tested_versions.json artifacts/tested_versions_${MAKE_TARGET}_${PHP_MAJOR_MINOR}_${DD_TRACE_TEST_SAPI:-cli}.json @@ -697,7 +716,7 @@ function before_script_steps($with_docker_auth = false) { - php /usr/local/src/php/run-tests.php -g FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP -p $(which php) --show-all -d zend_extension=xdebug-.so "tests/xdebug/" - '# Run unit tests with xdebug' - - TEST_EXTRA_INI='-d zend_extension=xdebug-.so' make test_unit RUST_DEBUG_BUILD=1 PHPUNIT_OPTS="--log-junit test-results/php-unit/results_unit.xml" + - TEST_EXTRA_INI='-d zend_extension=xdebug-.so' make test_unit RUST_DEBUG_BUILD=1 PHPUNIT_JUNIT="test-results/php-unit/results_unit.xml" diff --git a/.gitlab/run_php_language_tests.sh b/.gitlab/run_php_language_tests.sh index f67347fd719..1b6bcd71ba4 100755 --- a/.gitlab/run_php_language_tests.sh +++ b/.gitlab/run_php_language_tests.sh @@ -15,7 +15,7 @@ if [[ ! "${XFAIL_LIST:-none}" == "none" ]]; then fi cd /usr/local/src/php -mkdir -p /tmp/artifacts/tests +mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" # replace all hardcoded object ids in tests by %d as ddtrace creates its own objects php <<'PHP' &2 + exit 0 + ;; +esac + +# Install jq if not already available +if ! command -v jq &> /dev/null; then + echo "Installing jq..." + + jq_path="/tmp/jq" + + if ! curl -L --fail "https://github.com/jqlang/jq/releases/latest/download/jq-linux-${vault_arch}" \ + --output "${jq_path}"; then + echo "Warning: Failed to download jq. Skipping JUnit upload." >&2 + exit 0 + fi + + chmod +x "${jq_path}" + export PATH="/tmp:${PATH}" +fi + +# Install Vault if not already available +vault_cmd="vault" +if ! command -v vault &> /dev/null; then + echo "Installing Vault CLI..." + + vault_path="/tmp/vault" + vault_zip="${vault_path}.zip" + + if ! curl -L --fail "https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_${vault_arch}.zip" \ + --output "${vault_zip}"; then + echo "Warning: Failed to download Vault. Skipping JUnit upload." >&2 + exit 0 + fi + + if ! unzip -q "${vault_zip}" -d /tmp; then + echo "Warning: Failed to extract Vault. Skipping JUnit upload." >&2 + exit 0 + fi + + chmod +x "${vault_path}" + rm -f "${vault_zip}" + + vault_cmd="${vault_path}" +fi + +# Fetch DATADOG_API_KEY from Vault if not already set +if [[ -z "${DATADOG_API_KEY:-}" ]]; then + echo "DATADOG_API_KEY not set, attempting to fetch from Vault..." + + DATADOG_API_KEY="$("${vault_cmd}" kv get --format=json "${VAULT_SECRET_PATH}" | jq -r '.data.data.key')" || { + echo "Warning: Failed to fetch DATADOG_API_KEY from Vault. Skipping JUnit upload." >&2 + exit 0 + } + + if [[ -z "${DATADOG_API_KEY}" ]]; then + echo "Warning: DATADOG_API_KEY is empty after fetching from Vault. Skipping JUnit upload." >&2 + exit 0 + fi + + echo "Successfully fetched DATADOG_API_KEY from Vault" +fi + +export DATADOG_API_KEY + +# Install datadog-ci standalone binary if not already installed +datadog_ci_cmd="datadog-ci" +if ! command -v datadog-ci &> /dev/null; then + echo "Installing datadog-ci standalone binary..." + + datadog_ci_path="/tmp/datadog-ci" + if ! curl -L --fail "${DATADOG_CI_DOWNLOAD_BASE}/datadog-ci_${datadog_ci_arch}" \ + --output "${datadog_ci_path}"; then + echo "Warning: Failed to download datadog-ci. Skipping JUnit upload." >&2 + exit 0 + fi + + chmod +x "${datadog_ci_path}" + + datadog_ci_cmd="${datadog_ci_path}" +fi + +# Find and upload all found JUnit XML files from artifacts directory +junit_files="$(find "${CI_PROJECT_DIR}/artifacts" -type f -name '*.xml' || true)" + +if [[ -z "${junit_files}" ]]; then + echo "No JUnit XML files found in artifacts directory. Skipping upload." + exit 0 +fi + +echo "Found JUnit files to upload:" +echo "${junit_files}" + +mapfile -t files_array <<< "${junit_files}" + +echo "Uploading ${#files_array[@]} JUnit file(s) to Datadog..." + +cd "${CI_PROJECT_DIR}" && pwd + +# Build tags argument if provided +tags_args="" +if [[ -n "${TAGS}" ]]; then + tags_args="--tags ${TAGS}" +fi + +echo "Current directory: $(pwd)" +echo "Running command: ${datadog_ci_cmd} junit upload --service \"${DD_SERVICE}\" --max-concurrency 20 --verbose ${tags_args} ${files_array[*]}" + +if ! ${datadog_ci_cmd} junit upload --service "${DD_SERVICE}" --max-concurrency 20 --verbose ${tags_args} "${files_array[@]}"; then + echo "Warning: Failed to upload JUnit files" >&2 + exit 0 +fi + +echo "=== JUnit upload completed ===" diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000000..4d8da1069ae --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,2 @@ +# All files owned by APM PHP team +* @DataDog/apm-php diff --git a/Makefile b/Makefile index 52376a98821..36644b3e4b8 100644 --- a/Makefile +++ b/Makefile @@ -550,7 +550,8 @@ TESTS_ROOT = ./tests COMPOSER = $(if $(ASAN), ASAN_OPTIONS=detect_leaks=0) COMPOSER_MEMORY_LIMIT=-1 composer --no-interaction DDPROF_IDENTIFIER ?= PHPUNIT_OPTS ?= -PHPUNIT = $(TESTS_ROOT)/vendor/bin/phpunit $(PHPUNIT_OPTS) --config=$(TESTS_ROOT)/phpunit.xml +PHPUNIT_JUNIT ?= +PHPUNIT = $(TESTS_ROOT)/vendor/bin/phpunit $(PHPUNIT_OPTS) $(if $(PHPUNIT_JUNIT),--log-junit $(PHPUNIT_JUNIT)) --config=$(TESTS_ROOT)/phpunit.xml PHPUNIT_COVERAGE ?= PHPBENCH_OPTS ?= PHPBENCH_CONFIG ?= $(TESTS_ROOT)/phpbench.json From ca7d14821c63a0989c2dacad7047eac38ca15215 Mon Sep 17 00:00:00 2001 From: Manuel Palenzuela Merino Date: Fri, 9 Jan 2026 14:34:05 +0100 Subject: [PATCH 2/3] fix(CI): normalize paths and set GitHub repository URL in JUnit upload - Replace absolute file paths with paths relative to the repository root before uploading to Datadog - Add git.repository_url tag pointing to GitHub instead of GitLab to ensure Test Optimization features work correctly Co-Authored-By: Claude Opus 4.5 --- .gitlab/upload-junit-to-datadog.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.gitlab/upload-junit-to-datadog.sh b/.gitlab/upload-junit-to-datadog.sh index 3cdf6ea7b04..0217de8ad41 100755 --- a/.gitlab/upload-junit-to-datadog.sh +++ b/.gitlab/upload-junit-to-datadog.sh @@ -123,6 +123,14 @@ echo "${junit_files}" mapfile -t files_array <<< "${junit_files}" +# Normalize absolute paths to relative paths in JUnit XML files +echo "Normalizing file paths in JUnit XML files..." +for file in "${files_array[@]}"; do + if [[ -f "${file}" ]]; then + sed -i "s|${CI_PROJECT_DIR}/||g" "${file}" + fi +done + echo "Uploading ${#files_array[@]} JUnit file(s) to Datadog..." cd "${CI_PROJECT_DIR}" && pwd @@ -134,9 +142,9 @@ if [[ -n "${TAGS}" ]]; then fi echo "Current directory: $(pwd)" -echo "Running command: ${datadog_ci_cmd} junit upload --service \"${DD_SERVICE}\" --max-concurrency 20 --verbose ${tags_args} ${files_array[*]}" +echo "Running command: ${datadog_ci_cmd} junit upload --service \"${DD_SERVICE}\" --max-concurrency 20 --verbose --tags git.repository_url:https://github.com/DataDog/dd-trace-php ${tags_args} ${files_array[*]}" -if ! ${datadog_ci_cmd} junit upload --service "${DD_SERVICE}" --max-concurrency 20 --verbose ${tags_args} "${files_array[@]}"; then +if ! ${datadog_ci_cmd} junit upload --service "${DD_SERVICE}" --max-concurrency 20 --verbose --tags "git.repository_url:https://github.com/DataDog/dd-trace-php" ${tags_args} "${files_array[@]}"; then echo "Warning: Failed to upload JUnit files" >&2 exit 0 fi From 736b94a14cf291c9b8cb969b56a91056a6fd9a94 Mon Sep 17 00:00:00 2001 From: Alexandre Rulleau Date: Fri, 9 Jan 2026 14:47:18 +0100 Subject: [PATCH 3/3] fix: restore CODEOWNER file Signed-off-by: Alexandre Rulleau --- .github/CODEOWNERS | 20 ++++++++++++++++++++ CODEOWNERS | 2 -- 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 .github/CODEOWNERS delete mode 100644 CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000000..90b79c23e7a --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,20 @@ +# Default owners +* @DataDog/apm-php + +# Profiling team +/profiling/ @DataDog/profiling-php + +# ASM Team +/appsec/ @DataDog/asm-php + +# APM libdatadog +/components-rs/ @Datadog/libdatadog-apm +compile_rust.sh @Datadog/libdatadog-apm + +# APM IDM Team +/src/ @DataDog/apm-idm-php + +# Release files +Cargo.lock @DataDog/apm-php @DataDog/profiling-php @Datadog/libdatadog-apm +package.xml @DataDog/apm-php @DataDog/profiling-php @Datadog/asm-php +VERSION @DataDog/apm-php @DataDog/profiling-php @Datadog/asm-php diff --git a/CODEOWNERS b/CODEOWNERS deleted file mode 100644 index 4d8da1069ae..00000000000 --- a/CODEOWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# All files owned by APM PHP team -* @DataDog/apm-php