From f15406fe337bcd81bd0dae7e52273a000739edc0 Mon Sep 17 00:00:00 2001 From: Fu Hanxi Date: Wed, 15 Apr 2026 13:25:02 +0200 Subject: [PATCH] ci: log per-job ccache stats --- .gitlab/ci/common.yml | 18 +++++++++++++++++- tools/ci/configure_ci_environment.sh | 6 +++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/.gitlab/ci/common.yml b/.gitlab/ci/common.yml index a19adcf0c1..2a9bafa5fc 100644 --- a/.gitlab/ci/common.yml +++ b/.gitlab/ci/common.yml @@ -119,6 +119,11 @@ variables: # configure cmake related flags source tools/ci/configure_ci_environment.sh + if [[ "$CI_CCACHE_STATS" == 1 ]] && command -v ccache >/dev/null 2>&1 && [[ -n "$CCACHE_STATSLOG" ]]; then + mkdir -p "$(dirname "$CCACHE_STATSLOG")" + rm -f "$CCACHE_STATSLOG" + fi + # add extra python packages export PYTHONPATH="$IDF_PATH/tools:$IDF_PATH/tools/ci:$IDF_PATH/tools/esp_app_trace:$IDF_PATH/components/partition_table:$IDF_PATH/tools/ci/python_packages:$PYTHONPATH" @@ -231,7 +236,17 @@ variables: .show_ccache_statistics: &show_ccache_statistics | # Show ccache statistics if enabled globally section_start "ccache_show_stats" "Show ccache statistics" - test "$CI_CCACHE_STATS" == 1 && test -n "$(which ccache)" && ccache --show-stats -vv || true + if [[ "$CI_CCACHE_STATS" == 1 ]] && command -v ccache >/dev/null 2>&1; then + if ccache --help 2>/dev/null | grep -q -- '--show-log-stats'; then + if [[ -n "$CCACHE_STATSLOG" && -f "$CCACHE_STATSLOG" ]]; then + ccache --show-log-stats -vv + else + echo "INFO: No per-job ccache statistics were recorded" + fi + else + ccache --show-stats -vv + fi + fi || true section_end "ccache_show_stats" .upload_failed_job_log_artifacts: &upload_failed_job_log_artifacts | @@ -246,6 +261,7 @@ variables: .after_script:build: after_script: - source tools/ci/utils.sh + - source tools/ci/configure_ci_environment.sh - *show_ccache_statistics - *upload_failed_job_log_artifacts diff --git a/tools/ci/configure_ci_environment.sh b/tools/ci/configure_ci_environment.sh index 3388fa4c75..54f2e03159 100644 --- a/tools/ci/configure_ci_environment.sh +++ b/tools/ci/configure_ci_environment.sh @@ -36,9 +36,13 @@ fi # https://ccache.dev/manual/latest.html#_configuring_ccache # Set ccache base directory to the project checkout path, to cancel out differences between runners export CCACHE_BASEDIR="${IDF_PATH}" +export CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK:-content}" # host mapping volume to share ccache fbetween runner concurrent jobs -export CCACHE_SLOPPINESS="time_macros" +export CCACHE_SLOPPINESS="time_macros,file_macro,include_file_mtime,include_file_ctime" + +# Keep per-job statistics in the checkout directory while sharing the cache itself. +export CCACHE_STATSLOG="${CCACHE_STATSLOG:-${IDF_PATH}/.ccache-stats.log}" # CCACHE_RECACHE Used when invalidating the current cache. # could be enabled by MR label "ccache:recache"