Skip to content

Commit 9d060f3

Browse files
committed
feat(compose): Add suport for build secrets in compose file
Signed-off-by: Alex-Andrei Cioc <[email protected]>
1 parent 6fcedda commit 9d060f3

File tree

3 files changed

+43
-4
lines changed

3 files changed

+43
-4
lines changed

initrd/dockerfile.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -437,13 +437,32 @@ func (initrd *dockerfile) Build(ctx context.Context) (string, error) {
437437
},
438438
}
439439

440-
fs := make([]secretsprovider.Source, 0, len(buildSecrets))
440+
// Add build secrets from the build config
441+
secretsMap := make(map[string]secretsprovider.Source)
442+
if initrd.opts.buildConfig.Secrets != nil {
443+
for _, v := range initrd.opts.buildConfig.Secrets {
444+
secretsMap[v.Name] = secretsprovider.Source{
445+
ID: v.Name,
446+
FilePath: v.File,
447+
Env: v.Env,
448+
}
449+
}
450+
}
451+
452+
// Override build secrets from the command line
441453
for _, v := range buildSecrets {
442454
s, err := parseSecret(v)
443455
if err != nil {
444456
return "", err
445457
}
446-
fs = append(fs, *s)
458+
secretsMap[s.ID] = *s
459+
}
460+
461+
// Convert map to slice
462+
fs := make([]secretsprovider.Source, 0, len(secretsMap))
463+
for _, secret := range secretsMap {
464+
fs = append(fs, secret)
465+
fmt.Printf(" - %s: %s\n", secret.ID, secret.FilePath)
447466
}
448467

449468
secretStore, err := secretsprovider.NewStore(fs)

initrd/options.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,16 @@
44
// You may not use this file except in compliance with the License.
55
package initrd
66

7+
type InitrdBuildSecret struct {
8+
Name string
9+
File string
10+
Env string
11+
}
12+
713
type InitrdBuildConfig struct {
8-
Args map[string]*string
9-
Target string
14+
Args map[string]*string
15+
Target string
16+
Secrets map[string]InitrdBuildSecret
1017
}
1118

1219
type InitrdOptions struct {

internal/cli/kraft/cloud/compose/build/build.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"kraftkit.sh/cmdfactory"
2323
"kraftkit.sh/compose"
2424
"kraftkit.sh/config"
25+
"kraftkit.sh/initrd"
2526
"kraftkit.sh/internal/cli/kraft/build"
2627
"kraftkit.sh/internal/cli/kraft/cloud/utils"
2728
"kraftkit.sh/internal/cli/kraft/pkg"
@@ -260,6 +261,18 @@ func Build(ctx context.Context, opts *BuildOptions, args ...string) error {
260261
popts.BuildConfig.Args = service.Build.Args
261262
bopts.BuildConfig.Target = service.Build.Target
262263
popts.BuildConfig.Target = service.Build.Target
264+
bopts.BuildConfig.Secrets = map[string]initrd.InitrdBuildSecret{}
265+
popts.BuildConfig.Secrets = map[string]initrd.InitrdBuildSecret{}
266+
for _, secretRef := range service.Build.Secrets {
267+
if secret, ok := opts.Project.Secrets[secretRef.Source]; ok {
268+
bopts.BuildConfig.Secrets[secretRef.Source] = initrd.InitrdBuildSecret{
269+
Name: secret.Name,
270+
File: secret.File,
271+
Env: secret.Environment,
272+
}
273+
popts.BuildConfig.Secrets[secretRef.Source] = bopts.BuildConfig.Secrets[secretRef.Source]
274+
}
275+
}
263276
bopts.Workdir = service.Build.Context
264277
popts.Workdir = service.Build.Context
265278
bopts.Project = project

0 commit comments

Comments
 (0)