@@ -31,6 +31,7 @@ import (
3131 bclient "github.com/moby/buildkit/client"
3232 "github.com/moby/buildkit/session"
3333 "github.com/moby/buildkit/session/auth/authprovider"
34+ "github.com/moby/buildkit/session/secrets/secretsprovider"
3435 "github.com/moby/buildkit/session/sshforward/sshprovider"
3536 specs "github.com/opencontainers/image-spec/specs-go/v1"
3637
@@ -254,6 +255,26 @@ func (s *composeService) toBuildOptions(project *types.Project, service types.Se
254255 sessionConfig = append (sessionConfig , sshAgentProvider )
255256 }
256257
258+ 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 )
271+ if err != nil {
272+ return build.Options {}, err
273+ }
274+ p := secretsprovider .NewSecretProvider (store )
275+ sessionConfig = append (sessionConfig , p )
276+ }
277+
257278 return build.Options {
258279 Inputs : build.Inputs {
259280 ContextPath : service .Build .Context ,
0 commit comments