summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2022-01-13 14:28:53 +0100
committerPaul Holzinger <pholzing@redhat.com>2022-01-13 15:01:28 +0100
commit92e7875210d3f6a52b3ef43e8a249022aba5a07c (patch)
treed5f7e1ad060c6fc2b53e9b040c5650e9b3ec3e5e
parentb24063582d425e40f68f8fc2a773cf19546e9f94 (diff)
downloadpodman-92e7875210d3f6a52b3ef43e8a249022aba5a07c.tar.gz
podman-92e7875210d3f6a52b3ef43e8a249022aba5a07c.tar.bz2
podman-92e7875210d3f6a52b3ef43e8a249022aba5a07c.zip
podman build enable --all-platforms and --unsetenv
Make sure we add support for allplatforms and unsetenv to both local and remote podman. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
-rw-r--r--cmd/podman/images/build.go4
-rw-r--r--pkg/api/handlers/compat/images_build.go4
-rw-r--r--pkg/api/server/register_images.go14
-rw-r--r--pkg/bindings/images/build.go10
4 files changed, 30 insertions, 2 deletions
diff --git a/cmd/podman/images/build.go b/cmd/podman/images/build.go
index 751db099f..606c18aae 100644
--- a/cmd/podman/images/build.go
+++ b/cmd/podman/images/build.go
@@ -514,11 +514,10 @@ func buildFlagsWrapperToOptions(c *cobra.Command, contextDir string, flags *buil
opts := buildahDefine.BuildOptions{
AddCapabilities: flags.CapAdd,
AdditionalTags: tags,
+ AllPlatforms: flags.AllPlatforms,
Annotations: flags.Annotation,
Args: args,
BlobDirectory: flags.BlobCache,
- CNIConfigDir: flags.CNIConfigDir,
- CNIPluginPath: flags.CNIPlugInPath,
CommonBuildOpts: commonOpts,
Compression: compression,
ConfigureNetwork: networkPolicy,
@@ -559,6 +558,7 @@ func buildFlagsWrapperToOptions(c *cobra.Command, contextDir string, flags *buil
SystemContext: systemContext,
Target: flags.Target,
TransientMounts: flags.Volumes,
+ UnsetEnvs: flags.UnsetEnvs,
}
if flags.IgnoreFile != "" {
diff --git a/pkg/api/handlers/compat/images_build.go b/pkg/api/handlers/compat/images_build.go
index 1a5665152..6d4fe5513 100644
--- a/pkg/api/handlers/compat/images_build.go
+++ b/pkg/api/handlers/compat/images_build.go
@@ -73,6 +73,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
AdditionalCapabilities string `schema:"addcaps"`
Annotations string `schema:"annotations"`
AppArmor string `schema:"apparmor"`
+ AllPlatforms bool `schema:"allplatforms"`
BuildArgs string `schema:"buildargs"`
CacheFrom string `schema:"cachefrom"`
Compression uint64 `schema:"compression"`
@@ -121,6 +122,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
Target string `schema:"target"`
Timestamp int64 `schema:"timestamp"`
Ulimits string `schema:"ulimits"`
+ UnsetEnvs []string `schema:"unsetenv"`
Secrets string `schema:"secrets"`
}{
Dockerfile: "Dockerfile",
@@ -495,6 +497,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
AdditionalTags: additionalTags,
Annotations: annotations,
Args: buildArgs,
+ AllPlatforms: query.AllPlatforms,
CommonBuildOpts: &buildah.CommonBuildOptions{
AddHost: addhosts,
ApparmorProfile: apparmor,
@@ -548,6 +551,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
Squash: query.Squash,
Target: query.Target,
SystemContext: systemContext,
+ UnsetEnvs: query.UnsetEnvs,
}
for _, platformSpec := range query.Platform {
diff --git a/pkg/api/server/register_images.go b/pkg/api/server/register_images.go
index bf8eeef40..d9cda8579 100644
--- a/pkg/api/server/register_images.go
+++ b/pkg/api/server/register_images.go
@@ -1388,6 +1388,14 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error {
// default: latest
// description: A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default latest value is assumed. You can provide several t parameters.
// - in: query
+ // name: allplatforms
+ // type: boolean
+ // default: false
+ // description: |
+ // Instead of building for a set of platforms specified using the platform option, inspect the build's base images,
+ // and build for all of the platforms that are available. Stages that use *scratch* as a starting point can not be inspected,
+ // so at least one non-*scratch* stage must be present for detection to work usefully.
+ // - in: query
// name: extrahosts
// type: string
// default:
@@ -1570,6 +1578,12 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error {
// description: |
// Inject http proxy environment variables into container
// (As of version 2.0.0)
+ // - in: query
+ // name: unsetenv
+ // description: Unset environment variables from the final image.
+ // type: array
+ // items:
+ // type: string
// produces:
// - application/json
// responses:
diff --git a/pkg/bindings/images/build.go b/pkg/bindings/images/build.go
index 7bca43132..6b5159f52 100644
--- a/pkg/bindings/images/build.go
+++ b/pkg/bindings/images/build.go
@@ -62,6 +62,11 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
}
params.Set("annotations", l)
}
+
+ if options.AllPlatforms {
+ params.Add("allplatforms", "1")
+ }
+
params.Add("t", options.Output)
for _, tag := range options.AdditionalTags {
params.Add("t", tag)
@@ -289,6 +294,11 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
}
params.Set("ulimits", string(ulimitsJSON))
}
+
+ for _, uenv := range options.UnsetEnvs {
+ params.Add("unsetenv", uenv)
+ }
+
var (
headers map[string]string
err error