mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
podman-remote: enable support for additional build-context on macOS, remote
Feature of additional build context added here https://github.com/containers/buildah/pull/3978 already exists on `podman` following PR just enables this feature of `podman-remote` and `podman on macOS` setups. Signed-off-by: Aditya R <arajan@redhat.com>
This commit is contained in:
@ -99,7 +99,7 @@ different stages in COPY instruction.
|
||||
|
||||
Valid values could be:
|
||||
|
||||
* Local directory – e.g. --build-context project2=../path/to/project2/src
|
||||
* Local directory – e.g. --build-context project2=../path/to/project2/src (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)
|
||||
* HTTP URL to a tarball – e.g. --build-context src=https://example.org/releases/src.tar
|
||||
* Container image – specified with a container-image:// prefix, e.g. --build-context alpine=container-image://alpine:3.15, (also accepts docker://, docker-image://)
|
||||
|
||||
|
@ -72,6 +72,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||
query := struct {
|
||||
AddHosts string `schema:"extrahosts"`
|
||||
AdditionalCapabilities string `schema:"addcaps"`
|
||||
AdditionalBuildContexts string `schema:"additionalbuildcontexts"`
|
||||
AllPlatforms bool `schema:"allplatforms"`
|
||||
Annotations string `schema:"annotations"`
|
||||
AppArmor string `schema:"apparmor"`
|
||||
@ -375,6 +376,14 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||
additionalTags = append(additionalTags, possiblyNormalizedTag)
|
||||
}
|
||||
|
||||
var additionalBuildContexts = map[string]*buildahDefine.AdditionalBuildContext{}
|
||||
if _, found := r.URL.Query()["additionalbuildcontexts"]; found {
|
||||
if err := json.Unmarshal([]byte(query.AdditionalBuildContexts), &additionalBuildContexts); err != nil {
|
||||
utils.BadRequest(w, "additionalbuildcontexts", query.AdditionalBuildContexts, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var buildArgs = map[string]string{}
|
||||
if _, found := r.URL.Query()["buildargs"]; found {
|
||||
if err := json.Unmarshal([]byte(query.BuildArgs), &buildArgs); err != nil {
|
||||
@ -563,6 +572,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
|
||||
buildOptions := buildahDefine.BuildOptions{
|
||||
AddCapabilities: addCaps,
|
||||
AdditionalBuildContexts: additionalBuildContexts,
|
||||
AdditionalTags: additionalTags,
|
||||
Annotations: annotations,
|
||||
CPPFlags: cppflags,
|
||||
|
@ -81,6 +81,13 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
|
||||
for _, tag := range options.AdditionalTags {
|
||||
params.Add("t", tag)
|
||||
}
|
||||
if additionalBuildContexts := options.AdditionalBuildContexts; len(additionalBuildContexts) > 0 {
|
||||
additionalBuildContextMap, err := jsoniter.Marshal(additionalBuildContexts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
params.Set("additionalbuildcontexts", string(additionalBuildContextMap))
|
||||
}
|
||||
if buildArgs := options.Args; len(buildArgs) > 0 {
|
||||
bArgs, err := jsoniter.MarshalToString(buildArgs)
|
||||
if err != nil {
|
||||
|
@ -193,21 +193,10 @@ skip_if_remote "volumes don't work with podman-remote" \
|
||||
"buildah bud --volume" \
|
||||
"buildah-bud-policy"
|
||||
|
||||
# Most of this should work in podman remote after API implementation other than where context is host.
|
||||
skip_if_remote "--build-context option not implemented in podman-remote" \
|
||||
"build-with-additional-build-context and COPY, test pinning image" \
|
||||
"build-with-additional-build-context and COPY, stagename and additional-context conflict" \
|
||||
"build-with-additional-build-context and COPY, additionalContext and numeric value of stage" \
|
||||
"build-with-additional-build-context and COPY, additionalContext and numeric value of stage" \
|
||||
"build-with-additional-build-context and COPY, additional context from host" \
|
||||
"build-with-additional-build-context and COPY, additional context from external URL" \
|
||||
"build-with-additional-build-context and RUN --mount=from=, additional-context is URL and mounted from subdir" \
|
||||
"build-with-additional-build-context and RUN --mount=from=, additional-context not image and also test conflict with stagename" \
|
||||
"build-with-additional-build-context and RUN --mount=from=, additional-context and also test conflict with stagename" \
|
||||
"bud-multiple-platform for --all-platform with additional-build-context" \
|
||||
"build-with-additional-build-context and FROM, stagename and additional-context conflict" \
|
||||
"bud with Containerfile.in, via envariable" \
|
||||
"build-with-additional-build-context and FROM, pin busybox to alpine"
|
||||
|
||||
# Requires a local file outside context dir
|
||||
skip_if_remote "local keyfile not sent to podman-remote" \
|
||||
|
Reference in New Issue
Block a user