@@ -66,12 +66,13 @@ type GetBase func(context.Context, string) (name.Reference, Result, error)
6666
6767// buildContext provides parameters for a builder function.
6868type buildContext struct {
69- creationTime v1.Time
70- ip string
71- dir string
72- mergedEnv []string
73- platform v1.Platform
74- config Config
69+ creationTime v1.Time
70+ ip string
71+ dir string
72+ mergedEnv []string
73+ mergedFlags []string
74+ mergedLdflags []string
75+ platform v1.Platform
7576}
7677
7778type builder func (context.Context , buildContext ) (string , error )
@@ -95,6 +96,8 @@ type gobuild struct {
9596 trimpath bool
9697 buildConfigs map [string ]Config
9798 env []string
99+ flags []string
100+ ldflags []string
98101 platformMatcher * platformMatcher
99102 dir string
100103 labels map [string ]string
@@ -118,6 +121,8 @@ type gobuildOpener struct {
118121 trimpath bool
119122 buildConfigs map [string ]Config
120123 env []string
124+ flags []string
125+ ldflags []string
121126 platforms []string
122127 labels map [string ]string
123128 dir string
@@ -147,6 +152,8 @@ func (gbo *gobuildOpener) Open() (Interface, error) {
147152 trimpath : gbo .trimpath ,
148153 buildConfigs : gbo .buildConfigs ,
149154 env : gbo .env ,
155+ flags : gbo .flags ,
156+ ldflags : gbo .ldflags ,
150157 labels : gbo .labels ,
151158 dir : gbo .dir ,
152159 platformMatcher : matcher ,
@@ -830,17 +837,17 @@ func createBuildArgs(ctx context.Context, buildCtx buildContext) ([]string, erro
830837 return nil , err
831838 }
832839
833- if len (buildCtx .config . Flags ) > 0 {
834- flags , err := applyTemplating (buildCtx .config . Flags , data )
840+ if len (buildCtx .mergedFlags ) > 0 {
841+ flags , err := applyTemplating (buildCtx .mergedFlags , data )
835842 if err != nil {
836843 return nil , err
837844 }
838845
839846 args = append (args , flags ... )
840847 }
841848
842- if len (buildCtx .config . Ldflags ) > 0 {
843- ldflags , err := applyTemplating (buildCtx .config . Ldflags , data )
849+ if len (buildCtx .mergedLdflags ) > 0 {
850+ ldflags , err := applyTemplating (buildCtx .mergedLdflags , data )
844851 if err != nil {
845852 return nil , err
846853 }
@@ -927,14 +934,25 @@ func (g *gobuild) buildOne(ctx context.Context, refStr string, base v1.Image, pl
927934 return nil , fmt .Errorf ("could not create env for %s: %w" , ref .Path (), err )
928935 }
929936
937+ // Merge global and build config flags.
938+ var mergedFlags []string
939+ mergedFlags = append (mergedFlags , g .flags ... )
940+ mergedFlags = append (mergedFlags , config .Flags ... )
941+
942+ // Merge global and build config ldflags.
943+ var mergedLdflags []string
944+ mergedLdflags = append (mergedLdflags , g .ldflags ... )
945+ mergedLdflags = append (mergedLdflags , config .Ldflags ... )
946+
930947 // Do the build into a temporary file.
931948 file , err := g .build (ctx , buildContext {
932- creationTime : g .creationTime ,
933- ip : ref .Path (),
934- dir : g .dir ,
935- mergedEnv : mergedEnv ,
936- platform : * platform ,
937- config : config ,
949+ creationTime : g .creationTime ,
950+ ip : ref .Path (),
951+ dir : g .dir ,
952+ mergedEnv : mergedEnv ,
953+ mergedFlags : mergedFlags ,
954+ mergedLdflags : mergedLdflags ,
955+ platform : * platform ,
938956 })
939957 if err != nil {
940958 return nil , fmt .Errorf ("build: %w" , err )
0 commit comments