Skip to content

Commit

Permalink
Alias build to buildx, so it won't fail
Browse files Browse the repository at this point in the history
Add hidden --load and --progress flag as well.

Signed-off-by: Daniel J Walsh <[email protected]>
  • Loading branch information
rhatdan committed Aug 9, 2021
1 parent 04ab2b1 commit 170fb25
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 1 deletion.
25 changes: 25 additions & 0 deletions cmd/podman/images/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,18 @@ var (
podman image build --layers --force-rm --tag imageName .`,
}

buildxBuildCmd = &cobra.Command{
Args: buildCmd.Args,
Use: buildCmd.Use,
Short: buildCmd.Short,
Long: buildCmd.Long,
RunE: buildCmd.RunE,
ValidArgsFunction: buildCmd.ValidArgsFunction,
Example: `podman buildx build .
podman buildx build --creds=username:password -t imageName -f Containerfile.simple .
podman buildx build --layers --force-rm --tag imageName .`,
}

buildOpts = buildFlagsWrapper{}
)

Expand All @@ -91,11 +103,24 @@ func init() {
Parent: imageCmd,
})
buildFlags(imageBuildCmd)
registry.Commands = append(registry.Commands, registry.CliCommand{
Command: buildxBuildCmd,
Parent: buildxCmd,
})
buildFlags(buildxBuildCmd)
}

func buildFlags(cmd *cobra.Command) {
flags := cmd.Flags()

// buildx build --load ignored, but added for compliance
flags.Bool("load", false, "buildx --load")
_ = flags.MarkHidden("load")

// buildx build --progress ignored, but added for compliance
flags.String("progress", "auto", "buildx --progress")
_ = flags.MarkHidden("progress")

// Podman flags
flags.BoolVarP(&buildOpts.SquashAll, "squash-all", "", false, "Squash all layers into a single layer")

Expand Down
29 changes: 29 additions & 0 deletions cmd/podman/images/buildx.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package images

import (
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
"github.com/spf13/cobra"
)

var (
// Command: podman _buildx_
// This is a hidden command, which was added to make converting
// from Docker to Podman easier.
// For now podman buildx build just calls into podman build
// If we are adding new buildx features, we will add them by default
// to podman build.
buildxCmd = &cobra.Command{
Use: "buildx",
Short: "Build images",
Long: "Build images",
RunE: validate.SubCommandExists,
Hidden: true,
}
)

func init() {
registry.Commands = append(registry.Commands, registry.CliCommand{
Command: buildxCmd,
})
}
4 changes: 3 additions & 1 deletion cmd/podman/shell_completion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ func TestShellCompletionFunctions(t *testing.T) {
func checkCommand(t *testing.T, cmd *cobra.Command) {
if cmd.HasSubCommands() {
for _, childCmd := range cmd.Commands() {
checkCommand(t, childCmd)
if !childCmd.Hidden {
checkCommand(t, childCmd)
}
}

// if not check if completion for that command is provided
Expand Down
2 changes: 2 additions & 0 deletions docs/source/markdown/podman-build.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ containers can be left in container storage. Use the `podman ps --all --storage`
command to see these containers. External containers can be removed with the
`podman rm --storage` command.

`podman buildx build` command is an alias of `podman build`. Not all `buildx build` features are available in Podman. The `buildx build` option is provided for scripting compatibility.

## OPTIONS

#### **--add-host**=*host*
Expand Down
21 changes: 21 additions & 0 deletions test/system/070-build.bats
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,27 @@ EOF
run_podman rmi -f build_test
}

@test "podman buildx - basic test" {
rand_filename=$(random_string 20)
rand_content=$(random_string 50)

tmpdir=$PODMAN_TMPDIR/build-test
mkdir -p $tmpdir
dockerfile=$tmpdir/Dockerfile
cat >$dockerfile <<EOF
FROM $IMAGE
RUN echo $rand_content > /$rand_filename
EOF

run_podman buildx build --load -t build_test --format=docker $tmpdir
is "$output" ".*COMMIT" "COMMIT seen in log"

run_podman run --rm build_test cat /$rand_filename
is "$output" "$rand_content" "reading generated file in image"

run_podman rmi -f build_test
}

@test "podman build test -f -" {
rand_filename=$(random_string 20)
rand_content=$(random_string 50)
Expand Down

0 comments on commit 170fb25

Please sign in to comment.