Skip to content

Commit bcbaa64

Browse files
Revert "[feat]: [CI-15228]: Embed and load buildkit image in drone buildx (drone-plugins#46)"
This reverts commit 02f7b59.
1 parent 02f7b59 commit bcbaa64

File tree

7 files changed

+24
-165
lines changed

7 files changed

+24
-165
lines changed

.drone.yml

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ steps:
1414
- name: vet
1515
image: golang:1.22
1616
commands:
17-
- sh buildkit/release.sh linux/amd64
1817
- go vet ./...
1918
environment:
2019

@@ -25,7 +24,6 @@ steps:
2524
- name: test
2625
image: golang:1.22
2726
commands:
28-
- sh buildkit/release.sh linux/amd64
2927
- go test -cover ./...
3028
environment:
3129

@@ -61,7 +59,6 @@ steps:
6159
environment:
6260
CGO_ENABLED: 0
6361
commands:
64-
- sh buildkit/release.sh linux/amd64
6562
- go build -o release/windows/amd64/drone-docker.exe ./cmd/drone-docker
6663
- name: build docker plugin
6764
image: plugins/docker@sha256:f0233d950ae87ee6cb5500b2d5497fe02aa338201c0bdce2619f443fd174cfa4
@@ -105,7 +102,6 @@ steps:
105102
environment:
106103
CGO_ENABLED: 0
107104
commands:
108-
- sh buildkit/release.sh linux/amd64
109105
- go build -o release/windows/amd64/drone-docker.exe ./cmd/drone-docker
110106
- name: build docker plugin
111107
image: plugins/docker
@@ -147,7 +143,6 @@ steps:
147143
- name: build-push
148144
image: golang:1.22
149145
commands:
150-
- sh buildkit/release.sh linux/amd64
151146
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker'
152147
environment:
153148
CGO_ENABLED: 0
@@ -159,7 +154,6 @@ steps:
159154
- name: build-tag
160155
image: golang:1.22
161156
commands:
162-
- sh buildkit/release.sh linux/amd64
163157
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker'
164158
environment:
165159
CGO_ENABLED: 0
@@ -170,7 +164,6 @@ steps:
170164
- name: executable
171165
image: golang:1.22
172166
commands:
173-
- sh buildkit/release.sh linux/amd64
174167
- ./release/linux/amd64/drone-docker --help
175168

176169
- name: publish
@@ -215,7 +208,6 @@ steps:
215208
- name: build-push
216209
image: golang:1.22
217210
commands:
218-
- sh buildkit/release.sh linux/arm64
219211
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/arm64/drone-docker ./cmd/drone-docker'
220212
environment:
221213
CGO_ENABLED: 0
@@ -227,7 +219,6 @@ steps:
227219
- name: build-tag
228220
image: golang:1.22
229221
commands:
230-
- sh buildkit/release.sh linux/arm64
231222
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/arm64/drone-docker ./cmd/drone-docker'
232223
environment:
233224
CGO_ENABLED: 0
@@ -238,7 +229,6 @@ steps:
238229
- name: executable
239230
image: golang:1.22
240231
commands:
241-
- sh buildkit/release.sh linux/arm64
242232
- ./release/linux/arm64/drone-docker --help
243233

244234
- name: publish
@@ -318,7 +308,6 @@ steps:
318308
- name: build-push
319309
image: golang:1.22
320310
commands:
321-
- sh buildkit/release.sh linux/amd64
322311
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku'
323312
environment:
324313
CGO_ENABLED: 0
@@ -329,7 +318,6 @@ steps:
329318
- name: build-tag
330319
image: golang:1.22
331320
commands:
332-
- sh buildkit/release.sh linux/amd64
333321
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku'
334322
environment:
335323
CGO_ENABLED: 0
@@ -379,7 +367,6 @@ steps:
379367
- name: build-push
380368
image: golang:1.22
381369
commands:
382-
- sh buildkit/release.sh linux/arm64
383370
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/arm64/drone-heroku ./cmd/drone-heroku'
384371
environment:
385372
CGO_ENABLED: 0
@@ -390,7 +377,6 @@ steps:
390377
- name: build-tag
391378
image: golang:1.22
392379
commands:
393-
- sh buildkit/release.sh linux/arm64
394380
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/arm64/drone-heroku ./cmd/drone-heroku'
395381
environment:
396382
CGO_ENABLED: 0
@@ -470,13 +456,11 @@ steps:
470456
pull: always
471457
image: golang:1.22
472458
commands:
473-
- sh buildkit/release.sh linux/amd64
474459
- GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -a -tags netgo -o release/drone-buildx-linux-amd64 ./cmd/drone-docker
475-
- GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -a -tags netgo -o release/drone-buildx-darwin-amd64 ./cmd/drone-docker
476-
- GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -a -tags netgo -o release/drone-buildx-windows-amd64 ./cmd/drone-docker
477-
- sh buildkit/release.sh linux/arm64
478460
- GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -a -tags netgo -o release/drone-buildx-linux-arm64 ./cmd/drone-docker
461+
- GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -a -tags netgo -o release/drone-buildx-darwin-amd64 ./cmd/drone-docker
479462
- GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w" -a -tags netgo -o release/drone-buildx-darwin-arm64 ./cmd/drone-docker
463+
- GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -a -tags netgo -o release/drone-buildx-windows-amd64 ./cmd/drone-docker
480464

481465
environment:
482466
CGO_ENABLED: 0

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@ coverage.out
33
vendor
44
.vscode/
55
Dockerfile
6-
buildkit/*.tar

README.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,8 @@
1010

1111
Drone plugin uses Docker-in-Docker to build and publish Docker images to a container registry. For the usage information and a listing of the available options please take a look at [the docs](http://plugins.drone.io/drone-plugins/drone-docker/).
1212

13-
## Updating Buildkit Version
14-
15-
If you want to update the buildkit version that is bundled with the plugin then update the version in the buildkit/version.json file and also run the following pipeline to upload the assets in the correct place: https://harness0.harness.io/ng/account/l7B_kbSEQD2wjrM7PShm5w/all/orgs/PROD/projects/CI/pipelines/Buildkit_Tarball_Uploader/pipeline-studio?storeType=INLINE
16-
1713
## Build
1814

19-
buildkit/version.json is the source of truth for the buildkit version to be used for self hosted. Please update this to use a newer buildkit version
20-
21-
Run the release script for buildkit. Give the argument according to the infra you are compiling for
22-
23-
```console
24-
sh buildkit/release.sh linux/amd64
25-
```
26-
2715
Build the binaries with the following commands:
2816

2917
```console

app.go

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -369,11 +369,6 @@ func Run() {
369369
Usage: "access token",
370370
EnvVar: "ACCESS_TOKEN",
371371
},
372-
cli.BoolTFlag{
373-
Name: "use-loaded-buildkit",
374-
Usage: "Use preloaded buildkit image. Default is true.",
375-
EnvVar: "PLUGIN_USE_LOADED_BUILDKIT",
376-
},
377372
}
378373

379374
if err := app.Run(os.Args); err != nil {
@@ -450,13 +445,12 @@ func run(c *cli.Context) error {
450445
ArtifactRegistry: c.String("artifact.registry"),
451446
},
452447
Builder: Builder{
453-
Name: c.String("builder-name"),
454-
DaemonConfig: c.String("builder-daemon-config"),
455-
Driver: c.String("builder-driver"),
456-
DriverOpts: c.Generic("builder-driver-opts").(*CustomStringSliceFlag).GetValue(),
457-
DriverOptsNew: c.Generic("builder-driver-opts-new").(*CustomStringSliceFlag).GetValue(),
458-
RemoteConn: c.String("builder-remote-conn"),
459-
UseLoadedBuildkit: c.BoolT("use-loaded-buildkit"),
448+
Name: c.String("builder-name"),
449+
DaemonConfig: c.String("builder-daemon-config"),
450+
Driver: c.String("builder-driver"),
451+
DriverOpts: c.Generic("builder-driver-opts").(*CustomStringSliceFlag).GetValue(),
452+
DriverOptsNew: c.Generic("builder-driver-opts-new").(*CustomStringSliceFlag).GetValue(),
453+
RemoteConn: c.String("builder-remote-conn"),
460454
},
461455
BaseImageRegistry: c.String("docker.baseimageregistry"),
462456
BaseImageUsername: c.String("docker.baseimageusername"),

buildkit/release.sh

Lines changed: 0 additions & 29 deletions
This file was deleted.

buildkit/version.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker.go

Lines changed: 16 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package docker
22

33
import (
4-
"bytes"
5-
"embed"
64
"encoding/json"
75
"fmt"
86
"os"
@@ -36,13 +34,12 @@ type (
3634
}
3735

3836
Builder struct {
39-
Name string // Buildx builder name
40-
DaemonConfig string // Buildx daemon config file path
41-
Driver string // Buildx driver type
42-
DriverOpts []string // Buildx driver opts
43-
DriverOptsNew []string // Buildx driver opts new
44-
RemoteConn string // Buildx remote connection endpoint
45-
UseLoadedBuildkit bool // Use loaded buildkit or no
37+
Name string // Buildx builder name
38+
DaemonConfig string // Buildx daemon config file path
39+
Driver string // Buildx driver type
40+
DriverOpts []string // Buildx driver opts
41+
DriverOptsNew []string // Buildx driver opts new
42+
RemoteConn string // Buildx remote connection endpoint
4643
}
4744

4845
// Login defines Docker login parameters.
@@ -132,25 +129,16 @@ type (
132129
TagStruct struct {
133130
Tag string `json:"Tag"`
134131
}
135-
136-
BuildKitConfig struct {
137-
BuildkitVersion string `json:"buildkit_version"`
138-
}
139132
)
140133

141-
//go:embed buildkit/buildkit.tar
142-
var buildkitTarball embed.FS
143-
144-
//go:embed buildkit/version.json
145-
var buildKitVersionFile embed.FS
146-
147134
// Exec executes the plugin step
148135
func (p Plugin) Exec() error {
149136

150137
// start the Docker daemon server
151138
if !p.Daemon.Disabled {
152139
p.startDaemon()
153140
}
141+
154142
// poll the docker daemon until it is started. This ensures the daemon is
155143
// ready to accept connections before we proceed.
156144
for i := 0; ; i++ {
@@ -243,90 +231,33 @@ func (p Plugin) Exec() error {
243231
p.Builder.Driver = dockerContainerDriver
244232
}
245233

246-
loadedBuildkitVersion := true
247-
loadedBuildkitTarball := true
248-
var config BuildKitConfig
249-
250-
if p.Builder.UseLoadedBuildkit {
251-
configData, err := buildKitVersionFile.ReadFile("buildkit/version.json")
252-
if err != nil {
253-
fmt.Printf("Failed to read embedded buildkit version.json: %v\n", err)
254-
loadedBuildkitVersion = false
255-
}
256-
257-
if err := json.Unmarshal(configData, &config); err != nil {
258-
fmt.Printf("Failed to read buildkit version.json: %v\n", err)
259-
loadedBuildkitVersion = false
260-
}
261-
262-
// Read the tarball from the embedded filesystem
263-
data, err := buildkitTarball.ReadFile("buildkit/buildkit.tar")
264-
if err != nil {
265-
fmt.Printf("Failed to load buildkit tarball: %v\n", err)
266-
loadedBuildkitTarball = false
267-
}
268-
269-
loadCmd := commandLoad()
270-
loadCmd.Stdin = bytes.NewReader(data)
271-
if loadedBuildkitTarball {
272-
if err := loadCmd.Run(); err != nil {
273-
fmt.Printf("error while loading buildkit image: %s\n", err)
274-
loadedBuildkitTarball = false
275-
}
276-
}
277-
} else {
278-
loadedBuildkitVersion = false
279-
loadedBuildkitTarball = false
280-
}
281-
282234
if p.Builder.Driver != "" && p.Builder.Driver != defaultDriver {
283235
var (
284236
raw []byte
285237
err error
286238
)
287-
288239
shouldFallback := true
289240
if len(p.Builder.DriverOptsNew) != 0 {
290241
createCmd := cmdSetupBuildx(p.Builder, p.Builder.DriverOptsNew)
291242
raw, err = createCmd.Output()
292-
if err != nil {
293-
fmt.Printf("Unable to setup buildx with new driver opts: %s\n", err)
294-
// Mark that the fallback will be used
295-
shouldFallback = true
243+
if err == nil {
244+
shouldFallback = false
296245
} else {
297-
p.Builder.Name = strings.TrimSuffix(string(raw), "\n")
298-
// If builder creation is successful, inspect the builder
299-
inspectCmd := cmdInspectBuildx(p.Builder.Name)
300-
if err := inspectCmd.Run(); err != nil {
301-
fmt.Printf("Error while inspecting buildx builder with new driver opts: %s\n", err)
302-
// Mark that the fallback will be used
303-
shouldFallback = true
304-
} else {
305-
shouldFallback = false
306-
}
246+
fmt.Printf("Unable to setup buildx with new driver opts: %s\n", err)
307247
}
308248
}
309249
if shouldFallback {
310-
// Replace the image in driver opts with the buildkit version
311-
if p.Builder.UseLoadedBuildkit && loadedBuildkitTarball && loadedBuildkitVersion {
312-
fmt.Printf("Using BuildKit Version: %s\n", config.BuildkitVersion)
313-
for i, opt := range p.Builder.DriverOpts {
314-
if strings.HasPrefix(opt, "image=") {
315-
// Replace the part after image= with config.BuildkitVersion
316-
p.Builder.DriverOpts[i] = fmt.Sprintf("image=%s", config.BuildkitVersion)
317-
}
318-
}
319-
}
320250
createCmd := cmdSetupBuildx(p.Builder, p.Builder.DriverOpts)
321251
raw, err = createCmd.Output()
322252
if err != nil {
323253
return fmt.Errorf("error while creating buildx builder: %s and err: %s", string(raw), err)
324254
}
325-
p.Builder.Name = strings.TrimSuffix(string(raw), "\n")
326-
inspectCmd := cmdInspectBuildx(p.Builder.Name)
327-
if err := inspectCmd.Run(); err != nil {
328-
return fmt.Errorf("error while bootstraping buildx builder: %s", err)
329-
}
255+
}
256+
p.Builder.Name = strings.TrimSuffix(string(raw), "\n")
257+
258+
inspectCmd := cmdInspectBuildx(p.Builder.Name)
259+
if err := inspectCmd.Run(); err != nil {
260+
return fmt.Errorf("error while bootstraping buildx builder: %s", err)
330261
}
331262

332263
removeCmd := cmdRemoveBuildx(p.Builder.Name)
@@ -339,7 +270,6 @@ func (p Plugin) Exec() error {
339270
addProxyBuildArgs(&p.Build)
340271

341272
var cmds []*exec.Cmd
342-
343273
cmds = append(cmds, commandVersion()) // docker version
344274
cmds = append(cmds, commandInfo()) // docker info
345275

@@ -813,10 +743,6 @@ func commandRmi(tag string) *exec.Cmd {
813743
return exec.Command(dockerExe, "rmi", tag)
814744
}
815745

816-
func commandLoad() *exec.Cmd {
817-
return exec.Command(dockerExe, "image", "load")
818-
}
819-
820746
func writeSSHPrivateKey(key string) (path string, err error) {
821747
home, err := os.UserHomeDir()
822748
if err != nil {

0 commit comments

Comments
 (0)