Просмотр исходного кода

add env from container to build (#4345)

Feroze Mohideen 2 лет назад
Родитель
Сommit
396fd4cefb
2 измененных файлов с 19 добавлено и 3 удалено
  1. 3 2
      cli/cmd/docker/builder.go
  2. 16 1
      cli/cmd/v2/apply.go

+ 3 - 2
cli/cmd/docker/builder.go

@@ -62,7 +62,6 @@ func (a *Agent) BuildLocal(ctx context.Context, opts *BuildOpts) (err error) {
 
 
 	if len(dockerIgnoreBytes) != 0 {
 	if len(dockerIgnoreBytes) != 0 {
 		excludes, err = dockerignore.ReadAll(bytes.NewBuffer(dockerIgnoreBytes))
 		excludes, err = dockerignore.ReadAll(bytes.NewBuffer(dockerIgnoreBytes))
-
 		if err != nil {
 		if err != nil {
 			return fmt.Errorf("error reading .dockerignore: %w", err)
 			return fmt.Errorf("error reading .dockerignore: %w", err)
 		}
 		}
@@ -92,7 +91,6 @@ func (a *Agent) BuildLocal(ctx context.Context, opts *BuildOpts) (err error) {
 
 
 		// add the dockerfile to the build context
 		// add the dockerfile to the build context
 		tar, dockerfilePath, err = AddDockerfileToBuildContext(dockerfileCtx, tar)
 		tar, dockerfilePath, err = AddDockerfileToBuildContext(dockerfileCtx, tar)
-
 		if err != nil {
 		if err != nil {
 			return fmt.Errorf("error adding Dockerfile to build context: %w", err)
 			return fmt.Errorf("error adding Dockerfile to build context: %w", err)
 		}
 		}
@@ -222,6 +220,9 @@ func buildLocalWithBuildkit(ctx context.Context, opts BuildOpts) error {
 		"--cache-from", fmt.Sprintf("type=registry,ref=%s:%s", opts.ImageRepo, opts.CurrentTag),
 		"--cache-from", fmt.Sprintf("type=registry,ref=%s:%s", opts.ImageRepo, opts.CurrentTag),
 	}
 	}
 	for key, val := range opts.Env {
 	for key, val := range opts.Env {
+		if key == "PORTER_BUILDKIT_ARGS" {
+			continue
+		}
 		commandArgs = append(commandArgs, "--build-arg", fmt.Sprintf("%s=%s", key, val))
 		commandArgs = append(commandArgs, "--build-arg", fmt.Sprintf("%s=%s", key, val))
 	}
 	}
 
 

+ 16 - 1
cli/cmd/v2/apply.go

@@ -9,6 +9,7 @@ import (
 	"os/signal"
 	"os/signal"
 	"path/filepath"
 	"path/filepath"
 	"strconv"
 	"strconv"
+	"strings"
 	"syscall"
 	"syscall"
 	"time"
 	"time"
 
 
@@ -180,13 +181,27 @@ func Apply(ctx context.Context, inp ApplyInput) error {
 
 
 		color.New(color.FgGreen).Printf("Building new image with tag %s...\n", commitSHA) // nolint:errcheck,gosec
 		color.New(color.FgGreen).Printf("Building new image with tag %s...\n", commitSHA) // nolint:errcheck,gosec
 
 
+		buildEnvVariables := make(map[string]string)
+		for k, v := range buildSettings.BuildEnvVariables {
+			buildEnvVariables[k] = v
+		}
+
+		// use all env variables from running container in build
+		env := os.Environ()
+		for _, v := range env {
+			pair := strings.SplitN(v, "=", 2)
+			if len(pair) == 2 {
+				buildEnvVariables[pair[0]] = pair[1]
+			}
+		}
+
 		buildInput, err := buildInputFromBuildSettings(buildInputFromBuildSettingsInput{
 		buildInput, err := buildInputFromBuildSettings(buildInputFromBuildSettingsInput{
 			projectID:            cliConf.Project,
 			projectID:            cliConf.Project,
 			appName:              appName,
 			appName:              appName,
 			commitSHA:            commitSHA,
 			commitSHA:            commitSHA,
 			image:                buildSettings.Image,
 			image:                buildSettings.Image,
 			build:                buildSettings.Build,
 			build:                buildSettings.Build,
-			buildEnv:             buildSettings.BuildEnvVariables,
+			buildEnv:             buildEnvVariables,
 			pullImageBeforeBuild: inp.PullImageBeforeBuild,
 			pullImageBeforeBuild: inp.PullImageBeforeBuild,
 		})
 		})
 		if err != nil {
 		if err != nil {