Allow using key-value data

This commit is contained in:
PapaTutuWawa 2023-10-08 16:01:53 +02:00
parent 0f0aba7f82
commit b34ee789bc
3 changed files with 27 additions and 4 deletions

View File

@ -159,11 +159,11 @@ func settingsFlags(settings *plugin.Settings) []cli.Flag {
Value: true,
Destination: &settings.Build.LabelsAuto,
},
&cli.StringSliceFlag{
&cli.StringFlag{
Name: "args",
EnvVars: []string{"PLUGIN_BUILD_ARGS"},
Usage: "sets custom build arguments for the build",
Destination: &settings.Build.Args,
Usage: "sets custom build arguments for the build. Must be a JSON string",
Destination: &settings.Build.ArgsRaw,
},
&cli.StringSliceFlag{
Name: "args-from-env",

View File

@ -19,7 +19,7 @@ func main() {
if _, err := os.Stat("/run/drone/env"); err == nil {
godotenv.Overload("/run/drone/env")
}
if envFile, set := os.LookupEnv("PLUGIN_ENV_FILE"); set {
godotenv.Overload(envFile)
}

View File

@ -58,6 +58,7 @@ type Build struct {
LabelsAuto bool // Docker build auto labels
Labels cli.StringSlice // Docker build labels
Platforms cli.StringSlice // Docker build target platforms
ArgsRaw string // Docker build args (as JSON)
Args cli.StringSlice // Docker build args
ArgsEnv cli.StringSlice // Docker build args from env
Target string // Docker build target
@ -87,6 +88,26 @@ func (l Login) anonymous() bool {
return l.Username == "" || l.Password == ""
}
// Parse the provided build args into b.Args
func (b Build) BuildArgs() {
if len(b.ArgsRaw) > 0 {
buildArgsRaw := map[string]string{}
err := json.Unmarshal([]byte(b.ArgsRaw), &buildArgsRaw)
if err != nil {
fmt.Printf("Failed to parse build args: %s", err)
}
for key, value := range buildArgsRaw {
b.Args = *cli.NewStringSlice(
append(
b.Args.Value(),
fmt.Sprintf("%s=%s", key, value),
)...,
)
}
}
}
// Init initialise plugin settings
func (p *Plugin) InitSettings() error {
if p.settings.LoginsRaw != "" {
@ -227,6 +248,8 @@ func (p *Plugin) writeBuildkitConfig() error {
// Execute provides the implementation of the plugin.
func (p *Plugin) Execute() error {
p.settings.Build.BuildArgs()
// start the Docker daemon server
if !p.settings.Daemon.Disabled {
// If no custom DNS value set start internal DNS server