Dependency conflict: go.opentelemetry.io version incompatibility with gitlab-runner
Summary
A dependency conflict prevents upgrading gitlab-runner to use step-runner@v0.25.0. The issue stems from incompatible versions of go.opentelemetry.io/otel/sdk.
Problem
When attempting to upgrade step-runner in gitlab-runner:
gitlab-runner % go get gitlab.com/gitlab-org/step-runner@v0.25.0
go: upgraded github.com/spf13/cobra v1.9.1 => v1.10.2
go: upgraded gitlab.com/gitlab-org/step-runner v0.24.0 => v0.25.0
gitlab-runner % go mod tidy
go: finding module for package go.opentelemetry.io/otel/sdk/internal/internaltest
go: gitlab.com/gitlab-org/gitlab-runner/functions/script_legacy imports
gitlab.com/gitlab-org/step-runner/pkg/runner tested by
gitlab.com/gitlab-org/step-runner/pkg/runner.test imports
gitlab.com/gitlab-org/step-runner/pkg/testutil/bldr imports
github.com/distribution/distribution/v3/registry imports
github.com/distribution/distribution/v3/tracing imports
go.opentelemetry.io/contrib/exporters/autoexport imports
go.opentelemetry.io/otel/sdk/log tested by
go.opentelemetry.io/otel/sdk/log.test imports
go.opentelemetry.io/otel/sdk/internal/internaltest: module go.opentelemetry.io/otel/sdk@latest found (v1.39.0), but does not contain package go.opentelemetry.io/otel/sdk/internal/internaltest
Root Cause
-
gitlab-runner requires
go.opentelemetry.io/otel/sdkv1.39.0 -
step-runner uses
github.com/distribution/distribution/v3 v3.0.0for starting an OCI registry server in tests (viapkg/testutil/bldr) -
distribution/v3 has an internal dependency on
go.opentelemetry.iov1.32.0 - The
go.opentelemetry.io/otel/sdklibrary made a non-backwards compatible change between v1.32.0 and v1.39.0, removing or relocating theinternal/internaltestpackage
Impact
This blocks merging step-runner v0.25.0 into gitlab-runner.
Potential Solutions
-
Upgrade
github.com/distribution/distribution/v3to a newer version that supportsgo.opentelemetry.io/otel/sdkv1.39.0 (if available) - Find an alternative to distribution/v3 for the OCI registry test server
- Isolate the test dependency so it doesn't leak into consumers of step-runner
- Wait for upstream fix in distribution/v3 to update their OpenTelemetry dependency