Skip to content

Commit c11cc4b

Browse files
authored
fix: Enable docker API negotiation (#272)
It seems every time we update the Go Docker SDK it forces users to update their local docker installation too due to API compatibility. For example the current client version we use is `1.44` but GitHub Actions run on `1.43` so publishing fails: https://github.com/cloudquery/cloudquery/actions/runs/8155813989/job/22292120213#step:12:12 ---
1 parent 8d582d8 commit c11cc4b

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

managedplugin/docker.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,17 @@ func (pr *dockerProgressReader) Read(_ []byte) (n int, err error) {
7171
return 0, nil
7272
}
7373

74+
func newDockerClient(options ...client.Opt) (*client.Client, error) {
75+
defaultOptions := []client.Opt{
76+
client.FromEnv,
77+
client.WithAPIVersionNegotiation(),
78+
}
79+
options = append(defaultOptions, options...)
80+
return client.NewClientWithOpts(options...)
81+
}
82+
7483
func isDockerImageAvailable(ctx context.Context, imageName string) (bool, error) {
75-
cli, err := client.NewClientWithOpts(client.FromEnv)
84+
cli, err := newDockerClient()
7685
if err != nil {
7786
return false, fmt.Errorf("failed to create Docker client: %w", err)
7887
}
@@ -123,7 +132,7 @@ func pullDockerImage(ctx context.Context, imageName string, authToken string, te
123132
opts.RegistryAuth = dockerHubAuth
124133
}
125134

126-
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithHTTPHeaders(additionalHeaders))
135+
cli, err := newDockerClient(client.WithHTTPHeaders(additionalHeaders))
127136
if err != nil {
128137
return fmt.Errorf("failed to create Docker client: %v", err)
129138
}

managedplugin/plugin.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ func (c *Client) Metrics() Metrics {
268268
}
269269

270270
func (c *Client) startDockerPlugin(ctx context.Context, configPath string) error {
271-
cli, err := dockerClient.NewClientWithOpts(dockerClient.FromEnv)
271+
cli, err := newDockerClient()
272272
if err != nil {
273273
return fmt.Errorf("failed to create Docker client: %w", err)
274274
}
@@ -640,7 +640,7 @@ func (c *Client) Terminate() error {
640640
}()
641641
}
642642
if c.containerID != "" {
643-
cli, err := dockerClient.NewClientWithOpts(dockerClient.FromEnv)
643+
cli, err := newDockerClient()
644644
if err != nil {
645645
return fmt.Errorf("failed to create Docker client: %w", err)
646646
}

managedplugin/plugin_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import (
66
"path/filepath"
77
"runtime"
88
"testing"
9-
10-
"github.com/docker/docker/client"
119
)
1210

1311
func TestManagedPluginGitHub(t *testing.T) {
@@ -97,7 +95,7 @@ func TestManagedPluginCloudQuery(t *testing.T) {
9795

9896
func TestManagedPluginCloudQueryDocker(t *testing.T) {
9997
ctx := context.Background()
100-
cli, err := client.NewClientWithOpts(client.FromEnv)
98+
cli, err := newDockerClient()
10199
if err != nil {
102100
t.Fatal(err)
103101
}
@@ -151,7 +149,7 @@ func TestManagedPluginCloudQueryDocker(t *testing.T) {
151149

152150
func TestManagedPluginDocker(t *testing.T) {
153151
ctx := context.Background()
154-
cli, err := client.NewClientWithOpts(client.FromEnv)
152+
cli, err := newDockerClient()
155153
if err != nil {
156154
t.Fatal(err)
157155
}

0 commit comments

Comments
 (0)