Skip to content

Commit edf0a2c

Browse files
author
Andrew Pennebaker
committed
fix batching; work around many other buildx glitches; pin demo os version
1 parent 4c785a3 commit edf0a2c

File tree

3 files changed

+17
-37
lines changed

3 files changed

+17
-37
lines changed

example/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
FROM busybox
1+
FROM busybox:1.34
22
RUN echo "Hello World!" >/banner

job.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (o Job) runBatch() error {
7979
return cmd.Run()
8080
}
8181

82-
cmd.Args = append(cmd.Args, "build")
82+
cmd.Args = append(cmd.Args, "build", "--builder", TugBuilderName)
8383

8484
var platformPairs []string
8585

@@ -165,6 +165,12 @@ func (o Job) Run() error {
165165
o.Platforms = o.Platforms[batchSize:]
166166
}
167167

168+
//
169+
// Work around corruption glitch in buildx --push.
170+
//
171+
push := o.Push
172+
o.Push = false
173+
168174
for _, platformGroup := range platformGroups {
169175
o.Platforms = platformGroup
170176

@@ -173,5 +179,11 @@ func (o Job) Run() error {
173179
}
174180
}
175181

182+
if push {
183+
o.Push = true
184+
o.Platforms = platforms
185+
return o.runBatch()
186+
}
187+
176188
return nil
177189
}

platform.go

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ func (o Platforms) Less(i int, j int) bool {
7070
return o[i].Format() < o[j].Format()
7171
}
7272

73-
// EnsureTugBuilderExists creates a tug buildx builder when necessary.
74-
func EnsureTugBuilderExists() error {
73+
// EnsureTugBuilder prepares the tug buildx builder.
74+
func EnsureTugBuilder() error {
7575
cmd := exec.Command("docker")
7676
cmd.Args = []string{"docker", "buildx", "ls"}
7777
cmd.Env = os.Environ()
@@ -105,7 +105,7 @@ func EnsureTugBuilderExists() error {
105105

106106
if !foundTugBuilder {
107107
cmd := exec.Command("docker")
108-
cmd.Args = []string{"docker", "buildx", "create", "--name", TugBuilderName}
108+
cmd.Args = []string{"docker", "buildx", "create", "--bootstrap", "--name", TugBuilderName}
109109
cmd.Env = os.Environ()
110110
cmd.Stderr = os.Stderr
111111
return cmd.Run()
@@ -114,37 +114,6 @@ func EnsureTugBuilderExists() error {
114114
return nil
115115
}
116116

117-
// EnsureTugBuilderInUse activates the tug buildx builder.
118-
func EnsureTugBuilderInUse() error {
119-
cmd := exec.Command("docker")
120-
cmd.Args = []string{"docker", "buildx", "use", TugBuilderName}
121-
cmd.Env = os.Environ()
122-
cmd.Stderr = os.Stderr
123-
return cmd.Run()
124-
}
125-
126-
// EnsureTugBuilderBootstrapped prepares the tug buildx builder for building.
127-
func EnsureTugBuilderBootstrapped() error {
128-
cmd := exec.Command("docker")
129-
cmd.Args = []string{"docker", "buildx", "inspect", "--bootstrap"}
130-
cmd.Env = os.Environ()
131-
cmd.Stderr = os.Stderr
132-
return cmd.Run()
133-
}
134-
135-
// EnsureTugBuilder fully initializes the tug buildx builder.
136-
func EnsureTugBuilder() error {
137-
if err := EnsureTugBuilderExists(); err != nil {
138-
return err
139-
}
140-
141-
if err := EnsureTugBuilderInUse(); err != nil {
142-
return err
143-
}
144-
145-
return EnsureTugBuilderBootstrapped()
146-
}
147-
148117
// AvailablePlatforms initializes tug and reports the available buildx platforms.
149118
func AvailablePlatforms() ([]Platform, error) {
150119
if err := EnsureTugBuilder(); err != nil {
@@ -200,6 +169,5 @@ func AvailablePlatforms() ([]Platform, error) {
200169
}
201170

202171
sort.Sort(Platforms(platforms))
203-
204172
return platforms, nil
205173
}

0 commit comments

Comments
 (0)