mirror of https://github.com/containers/podman.git
Fixup Buildah merge
Changes since 2022-09-09: - man page: add --skip-unused-stages (buildah 4249) - man page: bring in new Note for --cache-ttl (4248) - system tests: de-stutter (4205) - (internal): in skip() applier: escape asterisk, otherwise the "bud with --dns* flags" sed expression never applies. Signed-off-by: Ed Santiago <santiago@redhat.com> Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
parent
54653ceebe
commit
f5e83f6849
|
@ -18,6 +18,7 @@ import (
|
||||||
"github.com/containers/common/pkg/completion"
|
"github.com/containers/common/pkg/completion"
|
||||||
"github.com/containers/common/pkg/config"
|
"github.com/containers/common/pkg/config"
|
||||||
"github.com/containers/image/v5/docker/reference"
|
"github.com/containers/image/v5/docker/reference"
|
||||||
|
"github.com/containers/image/v5/types"
|
||||||
encconfig "github.com/containers/ocicrypt/config"
|
encconfig "github.com/containers/ocicrypt/config"
|
||||||
enchelpers "github.com/containers/ocicrypt/helpers"
|
enchelpers "github.com/containers/ocicrypt/helpers"
|
||||||
"github.com/containers/podman/v4/cmd/podman/common"
|
"github.com/containers/podman/v4/cmd/podman/common"
|
||||||
|
@ -205,6 +206,24 @@ func build(cmd *cobra.Command, args []string) error {
|
||||||
return errors.New("'--output' option is not supported in remote mode")
|
return errors.New("'--output' option is not supported in remote mode")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if buildOpts.Network == "none" {
|
||||||
|
if cmd.Flag("dns").Changed {
|
||||||
|
return errors.New("the --dns option cannot be used with --network=none")
|
||||||
|
}
|
||||||
|
if cmd.Flag("dns-option").Changed {
|
||||||
|
return errors.New("the --dns-option option cannot be used with --network=none")
|
||||||
|
}
|
||||||
|
if cmd.Flag("dns-search").Changed {
|
||||||
|
return errors.New("the --dns-search option cannot be used with --network=none")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if cmd.Flag("network").Changed {
|
||||||
|
if buildOpts.Network != "host" && buildOpts.Isolation == buildahDefine.IsolationChroot.String() {
|
||||||
|
return fmt.Errorf("cannot set --network other than host with --isolation %s", buildOpts.Isolation)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Extract container files from the CLI (i.e., --file/-f) first.
|
// Extract container files from the CLI (i.e., --file/-f) first.
|
||||||
var containerFiles []string
|
var containerFiles []string
|
||||||
for _, f := range buildOpts.File {
|
for _, f := range buildOpts.File {
|
||||||
|
@ -613,6 +632,9 @@ func buildFlagsWrapperToOptions(c *cobra.Command, contextDir string, flags *buil
|
||||||
timestamp := time.Unix(flags.Timestamp, 0).UTC()
|
timestamp := time.Unix(flags.Timestamp, 0).UTC()
|
||||||
opts.Timestamp = ×tamp
|
opts.Timestamp = ×tamp
|
||||||
}
|
}
|
||||||
|
if c.Flag("skip-unused-stages").Changed {
|
||||||
|
opts.SkipUnusedStages = types.NewOptionalBool(flags.SkipUnusedStages)
|
||||||
|
}
|
||||||
|
|
||||||
return &entities.BuildOptions{BuildOptions: opts}, nil
|
return &entities.BuildOptions{BuildOptions: opts}, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,6 +145,10 @@ Limit the use of cached images to only consider images with created timestamps l
|
||||||
For example if `--cache-ttl=1h` is specified, Buildah will only consider intermediate cache images which are created
|
For example if `--cache-ttl=1h` is specified, Buildah will only consider intermediate cache images which are created
|
||||||
under the duration of one hour, and intermediate cache images outside this duration will be ignored.
|
under the duration of one hour, and intermediate cache images outside this duration will be ignored.
|
||||||
|
|
||||||
|
Note: Setting `--cache-ttl=0` manually is equivalent to using `--no-cache` in the
|
||||||
|
implementation since this would effectively mean that user is not willing to use
|
||||||
|
cache at all.
|
||||||
|
|
||||||
#### **--cap-add**=*CAP\_xxx*
|
#### **--cap-add**=*CAP\_xxx*
|
||||||
|
|
||||||
When executing RUN instructions, run the command specified in the instruction
|
When executing RUN instructions, run the command specified in the instruction
|
||||||
|
@ -564,6 +568,10 @@ as a seccomp filter
|
||||||
|
|
||||||
Sign the image using a GPG key with the specified FINGERPRINT. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines,)
|
Sign the image using a GPG key with the specified FINGERPRINT. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines,)
|
||||||
|
|
||||||
|
#### **--skip-unused-stages**
|
||||||
|
|
||||||
|
Skip stages in multi-stage builds which don't affect the target stage. (Default: **true**).
|
||||||
|
|
||||||
#### **--squash**
|
#### **--squash**
|
||||||
|
|
||||||
Squash all of the image's new layers into a single new layer; any preexisting
|
Squash all of the image's new layers into a single new layer; any preexisting
|
||||||
|
|
|
@ -130,6 +130,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||||
Secrets string `schema:"secrets"`
|
Secrets string `schema:"secrets"`
|
||||||
SecurityOpt string `schema:"securityopt"`
|
SecurityOpt string `schema:"securityopt"`
|
||||||
ShmSize int `schema:"shmsize"`
|
ShmSize int `schema:"shmsize"`
|
||||||
|
SkipUnusedStages bool `schema:"skipunusedstages"`
|
||||||
Squash bool `schema:"squash"`
|
Squash bool `schema:"squash"`
|
||||||
TLSVerify bool `schema:"tlsVerify"`
|
TLSVerify bool `schema:"tlsVerify"`
|
||||||
Tags []string `schema:"t"`
|
Tags []string `schema:"t"`
|
||||||
|
@ -144,6 +145,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||||
Rm: true,
|
Rm: true,
|
||||||
ShmSize: 64 * 1024 * 1024,
|
ShmSize: 64 * 1024 * 1024,
|
||||||
TLSVerify: true,
|
TLSVerify: true,
|
||||||
|
SkipUnusedStages: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
decoder := r.Context().Value(api.DecoderKey).(*schema.Decoder)
|
decoder := r.Context().Value(api.DecoderKey).(*schema.Decoder)
|
||||||
|
@ -675,6 +677,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||||
RemoveIntermediateCtrs: query.Rm,
|
RemoveIntermediateCtrs: query.Rm,
|
||||||
ReportWriter: reporter,
|
ReportWriter: reporter,
|
||||||
RusageLogFile: query.RusageLogFile,
|
RusageLogFile: query.RusageLogFile,
|
||||||
|
SkipUnusedStages: types.NewOptionalBool(query.SkipUnusedStages),
|
||||||
Squash: query.Squash,
|
Squash: query.Squash,
|
||||||
SystemContext: systemContext,
|
SystemContext: systemContext,
|
||||||
Target: query.Target,
|
Target: query.Target,
|
||||||
|
|
|
@ -233,6 +233,14 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
|
||||||
if options.CacheFrom != nil {
|
if options.CacheFrom != nil {
|
||||||
params.Set("cachefrom", options.CacheFrom.String())
|
params.Set("cachefrom", options.CacheFrom.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch options.SkipUnusedStages {
|
||||||
|
case types.OptionalBoolTrue:
|
||||||
|
params.Set("skipunusedstages", "1")
|
||||||
|
case types.OptionalBoolFalse:
|
||||||
|
params.Set("skipunusedstages", "0")
|
||||||
|
}
|
||||||
|
|
||||||
if options.CacheTo != nil {
|
if options.CacheTo != nil {
|
||||||
params.Set("cacheto", options.CacheTo.String())
|
params.Set("cacheto", options.CacheTo.String())
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,10 @@ function _skip() {
|
||||||
for t in "$@"; do
|
for t in "$@"; do
|
||||||
if fgrep -qx "@test \"$t\" {" $BUD; then
|
if fgrep -qx "@test \"$t\" {" $BUD; then
|
||||||
$ECHO "@test \"$t\" : $skip \"$reason\""
|
$ECHO "@test \"$t\" : $skip \"$reason\""
|
||||||
|
# Escape slash in test name, 'custom files in /run/'
|
||||||
t=${t//\//\\/}
|
t=${t//\//\\/}
|
||||||
|
# Escape star in test name, 'bud with --dns* flags'
|
||||||
|
t=${t//\*/\\\*}
|
||||||
sed -i -e "/^\@test \"$t\" {/ a \ \ $skip \"$reason\"" $BUD
|
sed -i -e "/^\@test \"$t\" {/ a \ \ $skip \"$reason\"" $BUD
|
||||||
else
|
else
|
||||||
warn "[$skip] Did not find test \"$t\" in $BUD"
|
warn "[$skip] Did not find test \"$t\" in $BUD"
|
||||||
|
|
|
@ -246,7 +246,7 @@ EOF
|
||||||
# Now test COPY. That should fail.
|
# Now test COPY. That should fail.
|
||||||
sed -i -e 's/ADD/COPY/' $tmpdir/Dockerfile
|
sed -i -e 's/ADD/COPY/' $tmpdir/Dockerfile
|
||||||
run_podman 125 build -t copy_url $tmpdir
|
run_podman 125 build -t copy_url $tmpdir
|
||||||
is "$output" ".*error building at STEP .*: source can't be a URL for COPY"
|
is "$output" ".* building at STEP .*: source can't be a URL for COPY"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -853,7 +853,7 @@ EOF
|
||||||
|
|
||||||
run_podman 125 build -t build_test --pull-never $tmpdir
|
run_podman 125 build -t build_test --pull-never $tmpdir
|
||||||
is "$output" \
|
is "$output" \
|
||||||
".*Error: error creating build container: quay.io/libpod/nosuchimage:nosuchtag: image not known" \
|
".*Error: creating build container: quay.io/libpod/nosuchimage:nosuchtag: image not known" \
|
||||||
"--pull-never fails with expected error message"
|
"--pull-never fails with expected error message"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -988,7 +988,7 @@ COPY ./ ./
|
||||||
COPY subdir ./
|
COPY subdir ./
|
||||||
EOF
|
EOF
|
||||||
run_podman 125 build -t build_test $tmpdir
|
run_podman 125 build -t build_test $tmpdir
|
||||||
is "$output" ".*Error: error building at STEP \"COPY subdir ./\"" ".dockerignore was ignored"
|
is "$output" ".*Error: building at STEP \"COPY subdir ./\"" ".dockerignore was ignored"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "podman build .containerignore and .dockerignore test" {
|
@test "podman build .containerignore and .dockerignore test" {
|
||||||
|
|
Loading…
Reference in New Issue