@@ -256,23 +256,11 @@ func (s *composeService) toBuildOptions(project *types.Project, service types.Se
256256 }
257257
258258 if len (service .Build .Secrets ) > 0 {
259- var sources []secretsprovider.Source
260- for _ , secret := range service .Build .Secrets {
261- config := project .Secrets [secret .Source ]
262- if config .File == "" {
263- return build.Options {}, fmt .Errorf ("build.secrets only supports file-based secrets: %q" , secret .Source )
264- }
265- sources = append (sources , secretsprovider.Source {
266- ID : secret .Source ,
267- FilePath : config .File ,
268- })
269- }
270- store , err := secretsprovider .NewStore (sources )
259+ secretsProvider , err := addSecretsConfig (project , service , sessionConfig )
271260 if err != nil {
272261 return build.Options {}, err
273262 }
274- p := secretsprovider .NewSecretProvider (store )
275- sessionConfig = append (sessionConfig , p )
263+ sessionConfig = append (sessionConfig , secretsProvider )
276264 }
277265
278266 if len (service .Build .Tags ) > 0 {
@@ -341,3 +329,30 @@ func sshAgentProvider(sshKeys types.SSHConfig) (session.Attachable, error) {
341329 }
342330 return sshprovider .NewSSHAgentProvider (sshConfig )
343331}
332+
333+ func addSecretsConfig (project * types.Project , service types.ServiceConfig , sessionConfig []session.Attachable ) (session.Attachable , error ) {
334+
335+ var sources []secretsprovider.Source
336+ for _ , secret := range service .Build .Secrets {
337+ config := project .Secrets [secret .Source ]
338+ switch {
339+ case config .File != "" :
340+ sources = append (sources , secretsprovider.Source {
341+ ID : secret .Source ,
342+ FilePath : config .File ,
343+ })
344+ case config .Environment != "" :
345+ sources = append (sources , secretsprovider.Source {
346+ ID : secret .Source ,
347+ Env : config .Environment ,
348+ })
349+ default :
350+ return nil , fmt .Errorf ("build.secrets only supports environment or file-based secrets: %q" , secret .Source )
351+ }
352+ }
353+ store , err := secretsprovider .NewStore (sources )
354+ if err != nil {
355+ return nil , err
356+ }
357+ return secretsprovider .NewSecretProvider (store ), nil
358+ }
0 commit comments