diff options
author | Aditya Rajan <arajan@redhat.com> | 2021-11-26 18:18:30 +0530 |
---|---|---|
committer | Aditya Rajan <arajan@redhat.com> | 2021-11-30 14:19:29 +0530 |
commit | e7204178e175d8ad619faa626ba284c777886cd3 (patch) | |
tree | 4903432e6c852b299695a92756cfc72bb1476186 /pkg/api | |
parent | bfcaf538bb000d7eb72975d234a95f566da54715 (diff) | |
download | podman-e7204178e175d8ad619faa626ba284c777886cd3.tar.gz podman-e7204178e175d8ad619faa626ba284c777886cd3.tar.bz2 podman-e7204178e175d8ad619faa626ba284c777886cd3.zip |
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 <arajan@redhat.com>
Diffstat (limited to 'pkg/api')
-rw-r--r-- | pkg/api/handlers/compat/images_build.go | 23 |
1 files changed, 22 insertions, 1 deletions
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 |