Copilot commented on code in PR #139:
URL:
https://github.com/apache/skywalking-infra-e2e/pull/139#discussion_r2807035124
##########
internal/components/setup/compose_listener.go:
##########
@@ -53,7 +52,7 @@ func NewComposeContainerListener(ctx context.Context, cli
*client.Client, servic
}
func (c *ComposeContainerListener) Listen(consumer func(container
*ComposeContainer)) error {
- containerEvents, errors := c.client.Events(c.ctx, types.EventsOptions{
+ containerEvents, errors := c.client.Events(c.ctx, events.ListOptions{
Filters: filters.NewArgs(
filters.Arg("type", "container"),
filters.Arg("event", "start"),
Review Comment:
`client.Events` returns channels; downstream handling should not rely on
`len(errCh)` to detect failures and should also handle channel closure (`ok`
checks) to avoid spinning on closed channels. Consider restructuring `Listen`
to propagate the first error deterministically (e.g., via select on errCh) and
exit the goroutine when channels close.
##########
internal/components/setup/compose_provider.go:
##########
@@ -262,28 +295,30 @@ func (c *DockerContainer) NetworkAliases(ctx
context.Context) (map[string][]stri
return a, nil
}
-func (c *DockerContainer) Exec(ctx context.Context, cmd []string) (int, error)
{
+func (c *DockerContainer) Exec(ctx context.Context, cmd []string, options
...exec.ProcessOption) (int, io.Reader, error) {
cli := c.provider.client
- response, err := cli.ContainerExecCreate(ctx, c.ID, types.ExecConfig{
- Cmd: cmd,
- Detach: false,
+ response, err := cli.ContainerExecCreate(ctx, c.ID,
container.ExecOptions{
+ Cmd: cmd,
+ Detach: false,
Review Comment:
`Exec` accepts `options ...exec.ProcessOption` and returns an `io.Reader`,
but the implementation currently ignores all options and never attaches to
capture stdout/stderr (it later returns a dummy reader). This can break
callers/strategies that rely on ProcessOption behavior or output content.
Consider applying options to the exec configuration and using
`ContainerExecAttach` (or otherwise documenting/removing the output return).
##########
internal/components/setup/compose.go:
##########
@@ -68,27 +69,43 @@ func ComposeSetup(e2eConfig *config.E2EConfig) error {
return err
}
- // setup docker compose
- composeFilePaths := []string{
- composeConfigPath,
- }
identifier := GetIdentity()
- compose := testcontainers.NewLocalDockerCompose(composeFilePaths,
identifier)
- // bind wait port
- services, err := buildComposeServices(e2eConfig, compose)
+ // parse compose file to get service configurations
+ composeServices, err := parseComposeFile(composeConfigPath)
+ if err != nil {
+ return fmt.Errorf("parse compose file error: %v", err)
+ }
+
+ // build wait port strategies
+ services, err := buildComposeServices(e2eConfig, composeServices)
if err != nil {
return fmt.Errorf("bind wait ports error: %v", err)
}
- // build command
- cmd := make([]string, 0)
+ // create compose stack
+ stack, err := compose.NewDockerComposeWith(
+ compose.WithStackFiles(composeConfigPath),
+ compose.StackIdentifier(identifier),
+ )
+ if err != nil {
+ return fmt.Errorf("failed to create compose stack: %w", err)
+ }
+
+ // load env file if specified
if e2eConfig.Setup.InitSystemEnvironment != "" {
profilePath :=
util.ResolveAbs(e2eConfig.Setup.InitSystemEnvironment)
- cmd = append(cmd, "--env-file", profilePath)
util.ExportEnvVars(profilePath)
+ // also load env vars from file and pass to compose
+ envVars, err := loadEnvFromFile(profilePath)
+ if err != nil {
+ return fmt.Errorf("load env file error: %v", err)
+ }
Review Comment:
Same as above: this returns a propagated error but uses `%v` instead of
`%w`, which prevents callers from unwrapping the underlying error.
##########
internal/components/setup/compose.go:
##########
@@ -68,27 +69,43 @@ func ComposeSetup(e2eConfig *config.E2EConfig) error {
return err
}
Review Comment:
The Docker client created here is never closed. The Docker SDK client holds
underlying HTTP connections; please `defer cli.Close()` after successful
creation (similar to `pullImages` in kind.go) to avoid leaking resources in
long-running processes/tests.
```suggestion
}
defer cli.Close()
```
##########
internal/components/setup/compose.go:
##########
@@ -68,27 +69,43 @@ func ComposeSetup(e2eConfig *config.E2EConfig) error {
return err
}
- // setup docker compose
- composeFilePaths := []string{
- composeConfigPath,
- }
identifier := GetIdentity()
- compose := testcontainers.NewLocalDockerCompose(composeFilePaths,
identifier)
- // bind wait port
- services, err := buildComposeServices(e2eConfig, compose)
+ // parse compose file to get service configurations
+ composeServices, err := parseComposeFile(composeConfigPath)
+ if err != nil {
+ return fmt.Errorf("parse compose file error: %v", err)
+ }
Review Comment:
These errors are formatted with `%v`, which loses wrapping semantics and
makes `errors.Is/As` harder upstream. Prefer `%w` when returning an error
you’re propagating (as done elsewhere in this file for other failures).
##########
internal/components/setup/compose.go:
##########
@@ -68,27 +69,43 @@ func ComposeSetup(e2eConfig *config.E2EConfig) error {
return err
}
- // setup docker compose
- composeFilePaths := []string{
- composeConfigPath,
- }
identifier := GetIdentity()
- compose := testcontainers.NewLocalDockerCompose(composeFilePaths,
identifier)
- // bind wait port
- services, err := buildComposeServices(e2eConfig, compose)
+ // parse compose file to get service configurations
+ composeServices, err := parseComposeFile(composeConfigPath)
+ if err != nil {
+ return fmt.Errorf("parse compose file error: %v", err)
+ }
+
+ // build wait port strategies
+ services, err := buildComposeServices(e2eConfig, composeServices)
if err != nil {
return fmt.Errorf("bind wait ports error: %v", err)
}
- // build command
- cmd := make([]string, 0)
+ // create compose stack
+ stack, err := compose.NewDockerComposeWith(
+ compose.WithStackFiles(composeConfigPath),
+ compose.StackIdentifier(identifier),
+ )
+ if err != nil {
+ return fmt.Errorf("failed to create compose stack: %w", err)
+ }
+
+ // load env file if specified
if e2eConfig.Setup.InitSystemEnvironment != "" {
profilePath :=
util.ResolveAbs(e2eConfig.Setup.InitSystemEnvironment)
- cmd = append(cmd, "--env-file", profilePath)
util.ExportEnvVars(profilePath)
+ // also load env vars from file and pass to compose
+ envVars, err := loadEnvFromFile(profilePath)
+ if err != nil {
+ return fmt.Errorf("load env file error: %v", err)
+ }
+ stack.WithEnv(envVars)
}
- cmd = append(cmd, "up", "-d")
+
+ // enable OS environment variables
+ stack.WithOsEnv()
// Listen container create
listener := NewComposeContainerListener(context.Background(), cli,
services)
Review Comment:
The callback passed to `listener.Listen` (below) mutates the outer `err`
variable from another goroutine, which is a data race and can overwrite the
function’s control-flow error value. Use a local variable inside the callback
to handle/log errors without assigning to the outer `err`.
##########
internal/components/setup/compose_provider.go:
##########
@@ -241,7 +261,20 @@ func (c *DockerContainer) ContainerIP(ctx context.Context)
(string, error) {
return "", err
}
- return inspect.NetworkSettings.IPAddress, nil
+ // Use the bridge network as the default, or find the first available
network
+ if inspect.NetworkSettings != nil && inspect.NetworkSettings.Networks
!= nil {
+ // Try bridge network first
+ if bridge, ok := inspect.NetworkSettings.Networks["bridge"]; ok
{
+ return bridge.IPAddress, nil
+ }
+ // Fall back to the first network in the map
+ for _, net := range inspect.NetworkSettings.Networks {
+ return net.IPAddress, nil
+ }
+ }
+
+ // No networks found
+ return "", nil
Review Comment:
When no networks are found, this returns an empty IP with a nil error. That
can lead to confusing downstream failures (treating "" as a valid IP). Prefer
returning a non-nil error when the container has no network/IP information
available.
```suggestion
return "", fmt.Errorf("container has no network/IP information
available")
```
##########
go.mod:
##########
@@ -1,116 +1,240 @@
module github.com/apache/skywalking-infra-e2e
-go 1.24
+go 1.25.0
require (
- github.com/docker/docker v20.10.7+incompatible
- github.com/docker/go-connections v0.4.0
- github.com/google/go-cmp v0.5.9
+ github.com/docker/docker v28.5.2+incompatible
+ github.com/docker/go-connections v0.6.0
+ github.com/google/go-cmp v0.7.0
github.com/pterm/pterm v0.12.45
- github.com/sirupsen/logrus v1.7.0
- github.com/spf13/cobra v1.8.0
- github.com/testcontainers/testcontainers-go v0.11.1
+ github.com/sirupsen/logrus v1.9.4
+ github.com/spf13/cobra v1.10.1
+ github.com/testcontainers/testcontainers-go v0.40.0
+ github.com/testcontainers/testcontainers-go/modules/compose v0.40.0
gopkg.in/yaml.v2 v2.4.0
- k8s.io/api v0.22.2
- k8s.io/apimachinery v0.22.2
- k8s.io/cli-runtime v0.22.2
- k8s.io/client-go v0.22.2
- k8s.io/kubectl v0.22.2
- sigs.k8s.io/kind v0.27.0
+ k8s.io/api v0.35.1
+ k8s.io/apimachinery v0.35.1
+ k8s.io/cli-runtime v0.35.1
+ k8s.io/client-go v0.35.1
+ k8s.io/kubectl v0.35.1
+ sigs.k8s.io/kind v0.31.0
)
require (
al.essio.dev/pkg/shellescape v1.5.1 // indirect
atomicgo.dev/cursor v0.1.1 // indirect
atomicgo.dev/keyboard v0.2.8 // indirect
- github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 //
indirect
+ dario.cat/mergo v1.0.2 // indirect
+ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c //
indirect
github.com/BurntSushi/toml v1.4.0 // indirect
- github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd //
indirect
- github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3 //
indirect
- github.com/Microsoft/hcsshim v0.8.16 // indirect
- github.com/PuerkitoBio/purell v1.1.1 // indirect
- github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 //
indirect
- github.com/cenkalti/backoff v2.2.1+incompatible // indirect
- github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 //
indirect
- github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68 //
indirect
- github.com/containerd/console v1.0.3 // indirect
- github.com/containerd/containerd v1.5.0-beta.4 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/docker/distribution v2.7.1+incompatible // indirect
- github.com/docker/go-units v0.4.0 // indirect
- github.com/evanphx/json-patch v4.11.0+incompatible // indirect
+ github.com/DefangLabs/secret-detector
v0.0.0-20250403165618-22662109213e // indirect
+ github.com/MakeNowJust/heredoc v1.0.0 // indirect
+ github.com/Masterminds/semver/v3 v3.4.0 // indirect
+ github.com/Microsoft/go-winio v0.6.2 // indirect
+ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d //
indirect
+ github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
+ github.com/aws/aws-sdk-go-v2 v1.30.3 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.27.27 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3
// indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 //
indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect
+ github.com/aws/smithy-go v1.20.3 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/blang/semver/v4 v4.0.0 // indirect
+ github.com/buger/goterm v1.0.4 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/chai2010/gettext-go v1.0.2 // indirect
+ github.com/compose-spec/compose-go/v2 v2.9.0 // indirect
+ github.com/containerd/console v1.0.5 // indirect
+ github.com/containerd/containerd/api v1.9.0 // indirect
+ github.com/containerd/containerd/v2 v2.1.4 // indirect
+ github.com/containerd/continuity v0.4.5 // indirect
+ github.com/containerd/errdefs v1.0.0 // indirect
+ github.com/containerd/errdefs/pkg v0.3.0 // indirect
+ github.com/containerd/log v0.1.0 // indirect
+ github.com/containerd/platforms v1.0.0-rc.1 // indirect
+ github.com/containerd/ttrpc v1.2.7 // indirect
+ github.com/containerd/typeurl/v2 v2.2.3 // indirect
+ github.com/cpuguy83/dockercfg v0.3.2 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc //
indirect
+ github.com/distribution/reference v0.6.0 // indirect
+ github.com/docker/buildx v0.29.1 // indirect
+ github.com/docker/cli v28.5.1+incompatible // indirect
+ github.com/docker/cli-docs-tool v0.10.0 // indirect
+ github.com/docker/compose/v2 v2.40.2 // indirect
+ github.com/docker/distribution v2.8.3+incompatible // indirect
+ github.com/docker/docker-credential-helpers v0.9.3 // indirect
+ github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect
+ github.com/docker/go-metrics v0.0.1 // indirect
+ github.com/docker/go-units v0.5.0 // indirect
+ github.com/ebitengine/purego v0.9.1 // indirect
+ github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 //
indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
- github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d //
indirect
+ github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f //
indirect
github.com/fatih/camelcase v1.0.0 // indirect
- github.com/fvbommel/sortorder v1.0.1 // indirect
- github.com/go-errors/errors v1.0.1 // indirect
- github.com/go-logr/logr v0.4.0 // indirect
- github.com/go-openapi/jsonpointer v0.19.5 // indirect
- github.com/go-openapi/jsonreference v0.19.5 // indirect
- github.com/go-openapi/swag v0.19.14 // indirect
+ github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/fsnotify/fsevents v0.2.0 // indirect
+ github.com/fvbommel/sortorder v1.1.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
+ github.com/go-errors/errors v1.4.2 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/go-openapi/jsonpointer v0.21.0 // indirect
+ github.com/go-openapi/jsonreference v0.20.2 // indirect
+ github.com/go-openapi/swag v0.23.0 // indirect
+ github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
+ github.com/gofrs/flock v0.12.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da //
indirect
- github.com/golang/protobuf v1.5.2 // indirect
- github.com/google/btree v1.0.1 // indirect
- github.com/google/gofuzz v1.1.0 // indirect
- github.com/google/safetext v0.0.0-20230106111101-7156a760e523 //
indirect
+ github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
+ github.com/google/btree v1.1.3 // indirect
+ github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
- github.com/google/uuid v1.2.0 // indirect
- github.com/googleapis/gnostic v0.5.5 // indirect
+ github.com/google/uuid v1.6.0 // indirect
github.com/gookit/color v1.5.0 // indirect
- github.com/gorilla/mux v1.8.0 // indirect
- github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 //
indirect
- github.com/imdario/mergo v0.3.11 // indirect
+ github.com/gorilla/mux v1.8.1 // indirect
+ github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 //
indirect
+ github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 //
indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
+ github.com/hashicorp/errwrap v1.1.0 // indirect
+ github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
+ github.com/hashicorp/go-multierror v1.1.1 // indirect
+ github.com/hashicorp/go-version v1.7.0 // indirect
+ github.com/in-toto/in-toto-golang v0.9.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
+ github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf //
indirect
+ github.com/jonboulle/clockwork v0.5.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
- github.com/json-iterator/go v1.1.11 // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
+ github.com/klauspost/compress v1.18.4 // indirect
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de //
indirect
github.com/lithammer/fuzzysearch v1.1.5 // indirect
- github.com/mailru/easyjson v0.7.6 // indirect
+ github.com/lufia/plan9stats v0.0.0-20251013123823-9fd1530e3ec3 //
indirect
+ github.com/magiconair/properties v1.8.10 // indirect
+ github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
- github.com/mattn/go-runewidth v0.0.13 // indirect
- github.com/mitchellh/go-wordwrap v1.0.0 // indirect
- github.com/moby/spdystream v0.2.0 // indirect
- github.com/moby/sys/mount v0.2.0 // indirect
- github.com/moby/sys/mountinfo v0.4.1 // indirect
- github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect
+ github.com/mattn/go-runewidth v0.0.16 // indirect
+ github.com/mattn/go-shellwords v1.0.12 // indirect
+ github.com/miekg/pkcs11 v1.1.1 // indirect
+ github.com/mitchellh/go-wordwrap v1.0.1 // indirect
+ github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
+ github.com/moby/buildkit v0.25.1 // indirect
+ github.com/moby/docker-image-spec v1.3.1 // indirect
+ github.com/moby/go-archive v0.2.0 // indirect
+ github.com/moby/locker v1.0.1 // indirect
+ github.com/moby/patternmatcher v0.6.0 // indirect
+ github.com/moby/spdystream v0.5.0 // indirect
+ github.com/moby/sys/atomicwriter v0.1.0 // indirect
+ github.com/moby/sys/capability v0.4.0 // indirect
+ github.com/moby/sys/mountinfo v0.7.2 // indirect
+ github.com/moby/sys/sequential v0.6.0 // indirect
+ github.com/moby/sys/signal v0.7.1 // indirect
+ github.com/moby/sys/symlink v0.3.0 // indirect
+ github.com/moby/sys/user v0.4.0 // indirect
+ github.com/moby/sys/userns v0.1.0 // indirect
+ github.com/moby/term v0.5.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd //
indirect
- github.com/modern-go/reflect2 v1.0.1 // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee //
indirect
github.com/monochromegane/go-gitignore
v0.0.0-20200626010858-205db1a8cc00 // indirect
- github.com/morikuni/aec v1.0.0 // indirect
+ github.com/morikuni/aec v1.1.0 // indirect
+ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 //
indirect
+ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f //
indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
- github.com/opencontainers/image-spec v1.0.1 // indirect
- github.com/opencontainers/runc v1.0.0-rc93 // indirect
+ github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.9.1 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10
// indirect
+ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 //
indirect
+ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 //
indirect
+ github.com/prometheus/client_golang v1.23.2 // indirect
+ github.com/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.66.1 // indirect
+ github.com/prometheus/procfs v0.16.1 // indirect
github.com/rivo/uniseg v0.2.0 // indirect
- github.com/russross/blackfriday v1.5.2 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/stretchr/testify v1.7.0 // indirect
- github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect
+ github.com/russross/blackfriday/v2 v2.1.0 // indirect
+ github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect
+ github.com/secure-systems-lab/go-securesystemslib v0.6.0 // indirect
+ github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b //
indirect
+ github.com/shibumi/go-pathspec v1.3.0 // indirect
+ github.com/shirou/gopsutil/v4 v4.26.1 // indirect
+ github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 //
indirect
+ github.com/spf13/pflag v1.0.10 // indirect
+ github.com/stretchr/testify v1.11.1 // indirect
+ github.com/theupdateframework/notary v0.7.0 // indirect
+ github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 //
indirect
+ github.com/tklauser/go-sysconf v0.3.16 // indirect
+ github.com/tklauser/numcpus v0.11.0 // indirect
+ github.com/tonistiigi/dchapes-mode v0.0.0-20250318174251-73d941a28323
// indirect
+ github.com/tonistiigi/fsutil v0.0.0-20250605211040-586307ad452f //
indirect
+ github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 //
indirect
+ github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea //
indirect
+ github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab //
indirect
+ github.com/x448/float16 v0.8.4 // indirect
+ github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
+ github.com/xlab/treeprint v1.2.0 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
- go.opencensus.io v0.23.0 // indirect
- go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect
- golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 // indirect
- golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 // indirect
- golang.org/x/sys v0.9.0 // indirect
- golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
- golang.org/x/text v0.3.7 // indirect
- golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c //
indirect
- google.golang.org/grpc v1.38.0 // indirect
- google.golang.org/protobuf v1.26.0 // indirect
+ github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ github.com/zclconf/go-cty v1.17.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
v0.60.0 // indirect
+
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace
v0.60.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0
// indirect
+ go.opentelemetry.io/otel v1.40.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
v1.35.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp
v1.35.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0
// indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0
// indirect
+ go.opentelemetry.io/otel/metric v1.40.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.40.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect
+ go.opentelemetry.io/otel/trace v1.40.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.9.0 // indirect
+ go.yaml.in/yaml/v2 v2.4.3 // indirect
+ go.yaml.in/yaml/v3 v3.0.4 // indirect
+ golang.org/x/crypto v0.48.0 // indirect
+ golang.org/x/net v0.49.0 // indirect
+ golang.org/x/oauth2 v0.30.0 // indirect
+ golang.org/x/sync v0.19.0 // indirect
+ golang.org/x/sys v0.41.0 // indirect
+ golang.org/x/term v0.40.0 // indirect
+ golang.org/x/text v0.34.0 // indirect
+ golang.org/x/time v0.11.0 // indirect
+ google.golang.org/genproto/googleapis/api
v0.0.0-20250825161204-c5933d9347a5 // indirect
+ google.golang.org/genproto/googleapis/rpc
v0.0.0-20250825161204-c5933d9347a5 // indirect
+ google.golang.org/grpc v1.75.1 // indirect
+ google.golang.org/protobuf v1.36.11 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
+ gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/component-base v0.22.2 // indirect
- k8s.io/klog/v2 v2.9.0 // indirect
- k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e // indirect
- k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a // indirect
- sigs.k8s.io/kustomize/api v0.8.11 // indirect
- sigs.k8s.io/kustomize/kyaml v0.11.0 // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect
- sigs.k8s.io/yaml v1.4.0 // indirect
+ k8s.io/component-base v0.35.1 // indirect
+ k8s.io/component-helpers v0.35.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
+ k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
+ sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
+ sigs.k8s.io/kustomize/api v0.20.1 // indirect
+ sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
+ tags.cncf.io/container-device-interface v1.0.1 // indirect
)
+
+// Compatibility fix for docker/cli which imports
github.com/docker/docker/pkg/archive
+// but the package has been moved to github.com/moby/go-archive
+replace github.com/moby/go-archive => github.com/moby/go-archive v0.1.0
+
+replace github.com/docker/docker/pkg/archive => github.com/moby/go-archive
v0.1.0
Review Comment:
This self-replace (`replace X => X v...`) is effectively a version pin but
is non-idiomatic and easy to misread as a no-op. Prefer adding an explicit
`require github.com/moby/go-archive v0.1.0` (or letting `go mod tidy` select)
and keep `replace` only for the actual path substitution that’s needed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]