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]

Reply via email to