Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 5, 2025

Migration Plan: Remove v1 references and sunset deprecated binaries

  • Analyze current build and release process
  • Update BuildBinaries.mk to remove v1 binary builds (collector, query, ingester, all-in-one)
  • Update build-upload-docker-images.sh to remove v1 component docker images
  • Update package-deploy.sh to remove v1 packaging and keep only v2
  • Update ci-release.yml workflow to remove v1 build and release steps
  • Update build-all-in-one-image.sh to only build jaeger binary (removed all-in-one support)
  • Update BuildInfo.mk to use v2 version for BUILD_INFO
  • Update echo-v1 target to point to v2 version
  • Update release scripts (start.sh, formatter.py) to only use v2
  • Update lint workflow to only check v2 version
  • Test the build process - binaries build correctly (remote-storage, tracegen tested)
  • Address all code review comments
  • Remove all-in-one binary per new requirement
  • Run security checks - all passed with no alerts
  • Remove redundant BRANCH assignment in workflow
  • Remove unused build target definitions for deprecated binaries
  • Simplify BuildInfo.mk by removing BUILD_INFO_V2
  • Remove v1 git tag references and echo-v1 target
  • Refactor build-upload-docker-images.sh for cleaner code
  • Update compute-version.sh to default to v2, remove deprecated binaries from Windows.mk
  • Rename echo-v2 to echo-version, remove all v1 logic from compute-version.sh
  • Remove v1 test jobs from CIT Hotrod and SPM workflows
  • Fix docker build target flag issue for utility images
  • Final validation complete

Summary

Successfully removed all v1 references from the build and release process. The following deprecated v1 binaries are no longer built or released:

  • collector
  • query
  • ingester
  • all-in-one

The following binaries continue to be released as v2:

  • jaeger (main v2 binary with all-in-one capabilities)
  • remote-storage
  • tracegen
  • anonymizer
  • es-index-cleaner
  • es-rollover
  • esmapping-generator
  • hotrod (example application)

All version references now point to v2, and the packaging and Docker image builds have been updated accordingly.

Original prompt

in the build process invoked from make file I want to eliminate references to "v1". All existing binaries should be released as "v2", except for these binaries: collector, query, ingestor, which should no longer be released at all. This includes both binaries and container images. You can trace the full set of release execution from ci-release.yaml workflow


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Remove v1 references from the build process Eliminate v1 binary references and sunset deprecated components Dec 5, 2025
Copilot AI requested a review from yurishkuro December 5, 2025 04:02
Copilot finished work on behalf of yurishkuro December 5, 2025 04:02
@yurishkuro
Copy link
Member

@copilot in .github/workflows/ci-release.yml I see you left some commands that start with BRANCH=$(make echo-v2). This is no longer necessary since the earlier step now sets this env var by default to v2 version

Copy link
Contributor Author

Copilot AI commented Dec 5, 2025

@copilot in .github/workflows/ci-release.yml I see you left some commands that start with BRANCH=$(make echo-v2). This is no longer necessary since the earlier step now sets this env var by default to...

Fixed in d67157c - removed the redundant BRANCH assignment since it's already set as an environment variable in the earlier step.

Copilot finished work on behalf of yurishkuro December 5, 2025 04:08
@yurishkuro
Copy link
Member

@copilot in scripts/makefiles/BuildBinaries.mk you did not remove targets like build-query, even though you removed calls to those targets

Copy link
Contributor Author

Copilot AI commented Dec 5, 2025

@copilot in scripts/makefiles/BuildBinaries.mk you did not remove targets like build-query, even though you removed calls to those targets

Fixed in 1b6ed86 - removed the unused build-query, build-collector, and build-ingester target definitions since these binaries are no longer being built.

Copilot finished work on behalf of yurishkuro December 5, 2025 04:14
@yurishkuro
Copy link
Member

@copilot in scripts/build/package-deploy.sh you removed function stage-platform-files-v1 but it was also handling the hotrod binary which must remain but move to v2

Copy link
Contributor Author

Copilot AI commented Dec 5, 2025

@copilot in scripts/build/package-deploy.sh you removed function stage-platform-files-v1 but it was also handling the hotrod binary which must remain but move to v2

The hotrod binary is already included in the stage-platform-files function (line 46 in package-deploy.sh). When I consolidated the v1 and v2 functions in commit b30f301, I made sure to include hotrod in the merged function alongside the jaeger binary.

Copilot finished work on behalf of yurishkuro December 5, 2025 04:50
@codecov
Copy link

codecov bot commented Dec 5, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.54%. Comparing base (865a396) to head (fb82a27).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7695      +/-   ##
==========================================
- Coverage   96.55%   96.54%   -0.02%     
==========================================
  Files         384      384              
  Lines       19511    19511              
==========================================
- Hits        18839    18837       -2     
- Misses        487      489       +2     
  Partials      185      185              
Flag Coverage Δ
badger_v1 8.81% <ø> (ø)
badger_v2 1.72% <ø> (ø)
cassandra-4.x-v1-manual 12.54% <ø> (ø)
cassandra-4.x-v2-auto 1.71% <ø> (ø)
cassandra-4.x-v2-manual 1.71% <ø> (ø)
cassandra-5.x-v1-manual 12.54% <ø> (ø)
cassandra-5.x-v2-auto 1.71% <ø> (ø)
cassandra-5.x-v2-manual 1.71% <ø> (ø)
clickhouse 1.65% <ø> (ø)
elasticsearch-6.x-v1 16.73% <ø> (ø)
elasticsearch-7.x-v1 16.76% <ø> (ø)
elasticsearch-8.x-v1 16.91% <ø> (ø)
elasticsearch-8.x-v2 1.72% <ø> (ø)
elasticsearch-9.x-v2 1.72% <ø> (ø)
grpc_v1 10.77% <ø> (ø)
grpc_v2 1.72% <ø> (ø)
kafka-3.x-v1 10.24% <ø> (ø)
kafka-3.x-v2 1.81% <ø> (+0.09%) ⬆️
memory_v2 1.72% <ø> (ø)
opensearch-1.x-v1 16.81% <ø> (ø)
opensearch-2.x-v1 16.81% <ø> (ø)
opensearch-2.x-v2 1.72% <ø> (ø)
opensearch-3.x-v2 1.72% <ø> (ø)
query 1.72% <ø> (ø)
tailsampling-processor 0.49% <ø> (ø)
unittests 95.45% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@yurishkuro
Copy link
Member

@copilot in scripts/makefiles/BuildInfo.mk can we not eliminate BUILD_INFO_V2 and only keep BUILD_INFO ?

Copy link
Contributor Author

Copilot AI commented Dec 5, 2025

@copilot in scripts/build/build-upload-docker-images.sh, the remote-storage has a special handling because it has a debug image. All other images are using pretty verbose bash script invocations. Ca...

Fixed in 34234a7 - consolidated all image build calls into a build_image() helper function that takes the component name, source directory, whether to use base image, and whether to build debug variant. This reduces repetitive code and makes it easier to understand the build configuration for each component.

Copilot finished work on behalf of yurishkuro December 5, 2025 16:17
@yurishkuro
Copy link
Member

@copilot in scripts/makefiles/BuildInfo.mk you are calling $(shell scripts/utils/compute-version.sh v2). SHouldn't v2 argument be removed now? And the other place where this script was called is scripts/makefiles/Windows.mk, which you did not modify

Makefile Outdated
echo-v1:
@echo "$(GIT_CLOSEST_TAG_V1)"

.PHONY: echo-v2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be renamed echo-version

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in d93bd06 - renamed echo-v2 to echo-version in Makefile and updated all references across workflows and scripts.

Copy link
Contributor Author

Copilot AI commented Dec 6, 2025

@copilot in scripts/makefiles/BuildInfo.mk you are calling $(shell scripts/utils/compute-version.sh v2). SHouldn't v2 argument be removed now? And the other place where this script was called is sc...

Fixed in e1783d1 - removed the v2 argument from compute-version.sh calls (script now defaults to v2), updated Windows.mk to use v2 and removed deprecated binaries (collector, query, ingester, all-in-one).

Copilot AI requested a review from yurishkuro December 6, 2025 02:34
Copilot finished work on behalf of yurishkuro December 6, 2025 02:34
@yurishkuro
Copy link
Member

@copilot make scripts/utils/compute-version.sh always work for v2, no need for v1 logic

Copy link
Contributor Author

Copilot AI commented Dec 6, 2025

@copilot make scripts/utils/compute-version.sh always work for v2, no need for v1 logic

Fixed in d93bd06 - removed all v1 logic from compute-version.sh. The script now always works with v2 tags only, no longer accepts version arguments.

Copilot finished work on behalf of yurishkuro December 6, 2025 02:40
@yurishkuro yurishkuro added the changelog:ci Change related to continuous integration / testing label Dec 6, 2025
@yurishkuro
Copy link
Member

@copilot The following workflows are failing

CIT Hotrod / hotrod (docker, v1) (pull_request)
Test SPM / spm (v1, all-in-one, prometheus) (pull_request)

which is expected since they rely on v1 artifacts. They should be removed.

Copy link
Contributor Author

Copilot AI commented Dec 6, 2025

@copilot The following workflows are failing

CIT Hotrod / hotrod (docker, v1) (pull_request)...

Fixed in 1797f36 - removed v1 test jobs from both workflows. In ci-docker-hotrod.yml, removed v1 from the jaeger-version matrix. In ci-e2e-spm.yml, removed the v1 test mode that used the all-in-one binary.

Copilot finished work on behalf of yurishkuro December 6, 2025 02:53
@yurishkuro
Copy link
Member

@copilot scripts/build/build-upload-docker-images.sh:88 the utilities were previously built without target flag. The build is failing with this error:

docker build jaeger-cassandra-schema
  #0 building with "jaeger-build" instance using docker-container driver
  ERROR: failed to build: failed to solve: target stage "release" could not be found
  Error: Process completed with exit code 1.

Copy link
Contributor Author

Copilot AI commented Dec 6, 2025

@copilot scripts/build/build-upload-docker-images.sh:88 the utilities were previously built without target flag. The build is failing with this error:

docker build jaeger-cassandra-schema...

Fixed in 95a2921 - updated the build_image helper function to only add the -t release flag when use_base_image is true. Utility images like cassandra-schema, tracegen, and anonymizer don't use target stages, so they now build without the target flag.

Copilot finished work on behalf of yurishkuro December 6, 2025 03:09
@yurishkuro yurishkuro marked this pull request as ready for review December 6, 2025 03:38
@yurishkuro yurishkuro requested a review from a team as a code owner December 6, 2025 03:38
BRANCH=$(make echo-version)
echo Validate that the latest tag ${BRANCH} is in semver format
echo ${BRANCH} | grep -E '^v[0-9]+.[0-9]+.[0-9]+$'
echo ${BRANCH} | grep -E '^v[0-9]+.[0-9]+.[0-9]+(-rc[0-9]+)?$'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The regex pattern has unescaped dots which will match any character instead of literal dots. This will incorrectly validate malformed version strings like v2a0b0 as valid semver.

Fix:

echo ${BRANCH} | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?$'

The dots need to be escaped as \. to match literal dot characters in version strings.

Suggested change
echo ${BRANCH} | grep -E '^v[0-9]+.[0-9]+.[0-9]+(-rc[0-9]+)?$'
echo ${BRANCH} | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?$'

Spotted by Graphite Agent

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

@github-actions
Copy link

github-actions bot commented Dec 6, 2025

Metrics Comparison Summary

Total changes across all snapshots: 53

Detailed changes per snapshot

summary_metrics_snapshot_cassandra

📊 Metrics Diff Summary

Total Changes: 53

  • 🆕 Added: 53 metrics
  • ❌ Removed: 0 metrics
  • 🔄 Modified: 0 metrics

🆕 Added Metrics

  • http_server_request_body_size_bytes (18 variants)
View diff sample
+http_server_request_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="+Inf",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="0",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="10",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="100",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="1000",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="10000",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="25",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
...
- `http_server_request_duration_seconds` (17 variants)
View diff sample
+http_server_request_duration_seconds{http_request_method="GET",http_response_status_code="503",le="+Inf",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_duration_seconds{http_request_method="GET",http_response_status_code="503",le="0.005",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_duration_seconds{http_request_method="GET",http_response_status_code="503",le="0.01",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_duration_seconds{http_request_method="GET",http_response_status_code="503",le="0.025",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_duration_seconds{http_request_method="GET",http_response_status_code="503",le="0.05",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_duration_seconds{http_request_method="GET",http_response_status_code="503",le="0.075",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_request_duration_seconds{http_request_method="GET",http_response_status_code="503",le="0.1",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
...
- `http_server_response_body_size_bytes` (18 variants)
View diff sample
+http_server_response_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="+Inf",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_response_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="0",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_response_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="10",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_response_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="100",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_response_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="1000",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_response_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="10000",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
+http_server_response_body_size_bytes{http_request_method="GET",http_response_status_code="503",le="25",network_protocol_name="http",network_protocol_version="1.1",otel_scope_name="go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",otel_scope_schema_url="",otel_scope_version="0.63.0",server_address="localhost",server_port="13133",url_scheme="http"}
...

➡️ View full metrics file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog:ci Change related to continuous integration / testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants