@@ -6,6 +6,8 @@ package cmd
66
77import (
88 "context"
9+ "fmt"
10+ "net"
911
1012 "github.com/spf13/cobra"
1113 "golang.org/x/xerrors"
@@ -46,7 +48,12 @@ func getImagebuildsClient(ctx context.Context) (*grpc.ClientConn, api.ImageBuild
4648 comp = "image-builder-mk3"
4749 }
4850
49- port := "20202:8080"
51+ freePort , err := GetFreePort ()
52+ if err != nil {
53+ return nil , nil , err
54+ }
55+
56+ port := fmt .Sprintf ("%d:8080" , freePort )
5057 podName , err := util .FindAnyPodForComponent (clientSet , namespace , comp )
5158 if err != nil {
5259 return nil , nil , err
@@ -71,9 +78,21 @@ func getImagebuildsClient(ctx context.Context) (*grpc.ClientConn, api.ImageBuild
7178 secopt = grpc .WithTransportCredentials (creds )
7279 }
7380
74- conn , err := grpc .Dial ("localhost:20202" , secopt )
81+ conn , err := grpc .Dial (fmt . Sprintf ( "localhost:%d" , freePort ) , secopt )
7582 if err != nil {
7683 return nil , nil , err
7784 }
7885 return conn , api .NewImageBuilderClient (conn ), nil
7986}
87+
88+ func GetFreePort () (port int , err error ) {
89+ var a * net.TCPAddr
90+ if a , err = net .ResolveTCPAddr ("tcp" , "localhost:0" ); err == nil {
91+ var l * net.TCPListener
92+ if l , err = net .ListenTCP ("tcp" , a ); err == nil {
93+ defer l .Close ()
94+ return l .Addr ().(* net.TCPAddr ).Port , nil
95+ }
96+ }
97+ return
98+ }
0 commit comments