From e7204178e175d8ad619faa626ba284c777886cd3 Mon Sep 17 00:00:00 2001 From: Aditya Rajan Date: Fri, 26 Nov 2021 18:18:30 +0530 Subject: podman-remote: copy secret to contextdir is absolute path on host Podman remote must treat build secrets as part of context directory. If secret path is absolute path on host copy it to tar file and pass it to remote server. Signed-off-by: Aditya Rajan --- pkg/api/handlers/compat/images_build.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'pkg/api/handlers') diff --git a/pkg/api/handlers/compat/images_build.go b/pkg/api/handlers/compat/images_build.go index 18f9dc98b..200d72192 100644 --- a/pkg/api/handlers/compat/images_build.go +++ b/pkg/api/handlers/compat/images_build.go @@ -247,7 +247,28 @@ func BuildImage(w http.ResponseWriter, r *http.Request) { utils.BadRequest(w, "secrets", query.Secrets, err) return } - secrets = m + + // for podman-remote all secrets must be picked from context director + // hence modify src so contextdir is added as prefix + + for _, secret := range m { + secretOpt := strings.Split(secret, ",") + if len(secretOpt) > 0 { + modifiedOpt := []string{} + for _, token := range secretOpt { + arr := strings.SplitN(token, "=", 2) + if len(arr) > 1 { + if arr[0] == "src" { + modifiedSrc := fmt.Sprintf("src=%s", filepath.Join(contextDirectory, arr[1])) + modifiedOpt = append(modifiedOpt, modifiedSrc) + } else { + modifiedOpt = append(modifiedOpt, token) + } + } + } + secrets = append(secrets, strings.Join(modifiedOpt[:], ",")) + } + } } var output string -- cgit v1.2.3-54-g00ecf