From c18cd0eb20cce242d1cd23f5390ebee820de0b9e Mon Sep 17 00:00:00 2001 From: Lucia Sanchez Date: Mon, 25 May 2026 17:31:18 +0200 Subject: [PATCH 1/2] Add branch tags to size metrics --- .../workflows/measure-disk-usage-master.yml | 6 ++- .github/workflows/measure-disk-usage.yml | 10 ++--- ddev/src/ddev/cli/size/status.py | 4 +- ddev/src/ddev/cli/size/utils/common_funcs.py | 4 ++ ddev/tests/cli/size/test_status.py | 2 + ddev/tests/size/test_common.py | 37 +++++++++++++++++++ 6 files changed, 54 insertions(+), 9 deletions(-) diff --git a/.github/workflows/measure-disk-usage-master.yml b/.github/workflows/measure-disk-usage-master.yml index 11cb94025d78e..5b92430a979d6 100644 --- a/.github/workflows/measure-disk-usage-master.yml +++ b/.github/workflows/measure-disk-usage-master.yml @@ -51,12 +51,14 @@ jobs: - name: Measure disk usage (Uncompressed) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ddev -v size status --commit "${{ github.sha }}" --format json --to-dd-key ${{ steps.dd-sts.outputs.api_key }} + DD_API_KEY: ${{ steps.dd-sts.outputs.api_key }} + run: ddev -v size status --commit "${{ github.sha }}" --branch "${{ github.ref_name }}" --format json --to-dd-key "$DD_API_KEY" - name: Measure disk usage (Compressed) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ddev -v size status --commit "${{ github.sha }}" --format json --to-dd-key ${{ steps.dd-sts.outputs.api_key }} --compressed + DD_API_KEY: ${{ steps.dd-sts.outputs.api_key }} + run: ddev -v size status --commit "${{ github.sha }}" --branch "${{ github.ref_name }}" --format json --to-dd-key "$DD_API_KEY" --compressed - name: Upload JSON uncompressed sizes artifact uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 diff --git a/.github/workflows/measure-disk-usage.yml b/.github/workflows/measure-disk-usage.yml index 9eae11fd8a032..6967b8fbe8392 100644 --- a/.github/workflows/measure-disk-usage.yml +++ b/.github/workflows/measure-disk-usage.yml @@ -22,6 +22,7 @@ jobs: steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: + ref: ${{ github.event.workflow_run.head_sha }} fetch-depth: 0 - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -49,20 +50,16 @@ jobs: id: cmd env: HEAD_SHA: ${{ github.event.workflow_run.head_sha }} - EVENT_NAME: ${{ github.event.workflow_run.event }} HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }} run: | - cmd="ddev -v size status --commit \"$HEAD_SHA\" --format json" - - if [ "$EVENT_NAME" = "push" ] && [ "$HEAD_BRANCH" = "master" ]; then - cmd="$cmd --to-dd-key ${{ steps.dd-sts.outputs.api_key }}" - fi + cmd="ddev -v size status --commit \"$HEAD_SHA\" --branch \"$HEAD_BRANCH\" --format json --to-dd-key \"\$DD_API_KEY\"" echo "cmd=$cmd" >> $GITHUB_OUTPUT - name: Measure disk usage (Uncompressed) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DD_API_KEY: ${{ steps.dd-sts.outputs.api_key }} run: | echo "Running for uncompressed sizes" ${{ steps.cmd.outputs.cmd }} @@ -70,6 +67,7 @@ jobs: - name: Measure disk usage (Compressed) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DD_API_KEY: ${{ steps.dd-sts.outputs.api_key }} run: | echo "Running for compressed sizes" ${{ steps.cmd.outputs.cmd }} --compressed diff --git a/ddev/src/ddev/cli/size/status.py b/ddev/src/ddev/cli/size/status.py index 0784e714ddfe1..e46d650a4e10a 100644 --- a/ddev/src/ddev/cli/size/status.py +++ b/ddev/src/ddev/cli/size/status.py @@ -26,6 +26,7 @@ @click.option("--python", "version", help="Python version (e.g 3.12). If not specified, all versions will be analyzed") @click.option("--dependency-sizes", type=click.Path(exists=True), help="Path to the dependency sizes file. If no") @click.option("--commit", help="Commit hash to check the status of. It takes the commit's dependency sizes file.") +@click.option("--branch", help="Branch name used to tag metrics sent to Datadog.") @common_params # platform, compressed, format, show_gui @click.pass_obj def status( @@ -40,6 +41,7 @@ def status( to_dd_key: str | None, dependency_sizes: Path | None, commit: str | None, + branch: str | None, ) -> None: """ Show the current size of all integrations and dependencies in your local repo. @@ -108,7 +110,7 @@ def status( if (to_dd_org or to_dd_key) and commit: from ddev.cli.size.utils.common_funcs import send_metrics_to_dd - send_metrics_to_dd(app, commit, modules_plat_ver, to_dd_org, to_dd_key, compressed) + send_metrics_to_dd(app, commit, modules_plat_ver, to_dd_org, to_dd_key, compressed, branch or "unknown") except Exception as e: app.abort(str(e)) diff --git a/ddev/src/ddev/cli/size/utils/common_funcs.py b/ddev/src/ddev/cli/size/utils/common_funcs.py index fc0d49ef7044c..6d95ba36fc165 100644 --- a/ddev/src/ddev/cli/size/utils/common_funcs.py +++ b/ddev/src/ddev/cli/size/utils/common_funcs.py @@ -869,6 +869,7 @@ def send_metrics_to_dd( org: str | None, key: str | None, compressed: bool, + branch: str, ) -> None: metric_name = "datadog.agent_integrations" size_type = "compressed" if compressed else "uncompressed" @@ -907,6 +908,7 @@ def send_metrics_to_dd( "team:agent-integrations", f"compression:{size_type}", f"metrics_version:{METRIC_VERSION}", + f"branch:{branch}", f"jira_ticket:{tickets[0]}", f"pr_number:{prs[-1]}", f"commit_message:{message}", @@ -943,6 +945,7 @@ def send_metrics_to_dd( f"python_version:{py_version}", "team:agent-integrations", f"metrics_version:{METRIC_VERSION}", + f"branch:{branch}", ], } ) @@ -957,6 +960,7 @@ def send_metrics_to_dd( f"python_version:{py_version}", "team:agent-integrations", f"metrics_version:{METRIC_VERSION}", + f"branch:{branch}", ], } ) diff --git a/ddev/tests/cli/size/test_status.py b/ddev/tests/cli/size/test_status.py index d4a92ca333913..21b5a46ca5480 100644 --- a/ddev/tests/cli/size/test_status.py +++ b/ddev/tests/cli/size/test_status.py @@ -76,6 +76,7 @@ def mock_size_status(): (["--compressed"], False), (["--format", "csv,markdown,json,png"], False), (["--show-gui"], False), + (["--branch", "feature/branch"], False), (["--platform", "linux-aarch64", "--python", "3.12"], False), (["--platform", "linux-aarch64", "--python", "3.12", "--compressed"], False), (["--platform", "linux-aarch64", "--python", "3.12", "--format", "csv,markdown,json,png"], False), @@ -86,6 +87,7 @@ def mock_size_status(): "compressed", "format", "show_gui", + "branch", "platform_and_version", "platform_version_compressed", "platform_version_format", diff --git a/ddev/tests/size/test_common.py b/ddev/tests/size/test_common.py index 2f59849927e09..67b799b812a43 100644 --- a/ddev/tests/size/test_common.py +++ b/ddev/tests/size/test_common.py @@ -26,6 +26,7 @@ save_csv, save_json, save_markdown, + send_metrics_to_dd, ) from ddev.utils.fs import Path @@ -452,3 +453,39 @@ def test_get_dependencies_from_json(): mock_path.read_text.return_value = dep_size_dict result = get_dependencies_from_json(mock_path, "linux-x86_64", "3.12", True) assert result == expected + + +def test_send_metrics_to_dd_adds_branch_tag(): + app = MagicMock() + app.config.orgs = {} + modules = [ + { + "Name": "module1", + "Version": "1.2.3", + "Size_Bytes": 123, + "Size": "123 B", + "Type": "Integration", + "Platform": "linux-x86_64", + "Python_Version": "3.13", + }, + { + "Name": "dep1", + "Version": "4.5.6", + "Size_Bytes": 456, + "Size": "456 B", + "Type": "Dependency", + "Platform": "linux-x86_64", + "Python_Version": "3.13", + }, + ] + + with ( + patch("ddev.cli.size.utils.common_funcs.get_commit_data", return_value=(1234567890, "message", [""], [""])), + patch("ddev.cli.size.utils.common_funcs.initialize"), + patch("ddev.cli.size.utils.common_funcs.api.Metric.send") as metric_send, + ): + send_metrics_to_dd(app, "abcdef123", modules, None, "test-key", False, "feature/branch") + + for call in metric_send.call_args_list: + for metric in call.kwargs["metrics"]: + assert "branch:feature/branch" in metric["tags"] From 44135e3e12fd6b36decd20e2cc9971f4eadd6422 Mon Sep 17 00:00:00 2001 From: Lucia Sanchez Date: Mon, 25 May 2026 17:34:32 +0200 Subject: [PATCH 2/2] Add changelog for size metric branch tags --- ddev/changelog.d/23832.added | 1 + 1 file changed, 1 insertion(+) create mode 100644 ddev/changelog.d/23832.added diff --git a/ddev/changelog.d/23832.added b/ddev/changelog.d/23832.added new file mode 100644 index 0000000000000..909fee53220fc --- /dev/null +++ b/ddev/changelog.d/23832.added @@ -0,0 +1 @@ +Add branch tags to `ddev size status` metrics sent to Datadog.