From e16cdb9b4e6d7f3a215779f0a1b5d97a7e751616 Mon Sep 17 00:00:00 2001 From: Yves Brissaud Date: Fri, 4 Nov 2022 14:10:31 +0100 Subject: [PATCH 1/4] dep: bump snyk to v1.1044.0 Signed-off-by: Yves Brissaud --- vars.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vars.mk b/vars.mk index 079794d..08ff584 100644 --- a/vars.mk +++ b/vars.mk @@ -1,9 +1,9 @@ # Pinned Versions -SNYK_DESKTOP_VERSION=1.1025.0 -SNYK_USER_VERSION=1.1025.0 +SNYK_DESKTOP_VERSION=1.1044.0 +SNYK_USER_VERSION=1.1044.0 SNYK_OLD_VERSION=1.382.1 -# Digest of the 1.1025.0 snyk/snyk:docker image -SNYK_IMAGE_DIGEST=sha256:b979e1827473ce7675439213a918687ac532481c3370818bce61884735bdb09d +# Digest of the 1.1044.0 snyk/snyk:docker image +SNYK_IMAGE_DIGEST=sha256:ef50ac24ff634e0aac409b0262a199b0264770d95707dc8d8d73544fc327853d GO_VERSION=1.17.5 CLI_VERSION=20.10.11 ALPINE_VERSION=3.15.0 From 03f7e5aef0bfee1628bb14963af02106a12b79ae Mon Sep 17 00:00:00 2001 From: Yves Brissaud Date: Fri, 4 Nov 2022 14:24:01 +0100 Subject: [PATCH 2/4] test: standalone Signed-off-by: Yves Brissaud --- e2e/version_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/version_test.go b/e2e/version_test.go index 428c958..4e708d3 100644 --- a/e2e/version_test.go +++ b/e2e/version_test.go @@ -123,7 +123,7 @@ Provider: %s } func getProviderVersion(env string) string { - if runtime.GOOS != "windows" { + if runtime.GOOS == "linux" { return fmt.Sprintf("Snyk (%s (standalone))", os.Getenv(env)) } return fmt.Sprintf("Snyk (%s)", os.Getenv(env)) From 50e0dcc8fd24a111d72ac677416ed463aacd8e4a Mon Sep 17 00:00:00 2001 From: Yves Brissaud Date: Tue, 8 Nov 2022 16:24:28 +0100 Subject: [PATCH 3/4] dep: bump snyk to v1.1054.0 Signed-off-by: Yves Brissaud --- vars.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vars.mk b/vars.mk index 08ff584..b12fef4 100644 --- a/vars.mk +++ b/vars.mk @@ -1,9 +1,9 @@ # Pinned Versions -SNYK_DESKTOP_VERSION=1.1044.0 -SNYK_USER_VERSION=1.1044.0 +SNYK_DESKTOP_VERSION=1.1054.0 +SNYK_USER_VERSION=1.1054.0 SNYK_OLD_VERSION=1.382.1 -# Digest of the 1.1044.0 snyk/snyk:docker image -SNYK_IMAGE_DIGEST=sha256:ef50ac24ff634e0aac409b0262a199b0264770d95707dc8d8d73544fc327853d +# Digest of the 1.1054.0 snyk/snyk:docker image +SNYK_IMAGE_DIGEST=sha256:81c312b1dd662a492a1cf40e597359dd391653293bd17674f8f60a021d687c58 GO_VERSION=1.17.5 CLI_VERSION=20.10.11 ALPINE_VERSION=3.15.0 From 9d7de7e1f1aedc8b7c83e676f0793e7e5d49f9de Mon Sep 17 00:00:00 2001 From: Yves Brissaud Date: Tue, 8 Nov 2022 16:54:30 +0100 Subject: [PATCH 4/4] fix: set SNYK_INTEGRATION_VERSION Signed-off-by: Yves Brissaud --- cmd/docker-scan/main.go | 2 +- internal/provider/containerizedsnyk.go | 9 +++++++-- internal/provider/provider.go | 13 +++++++++++-- internal/provider/snyk.go | 4 +++- internal/provider/snyk_test.go | 15 +++++++++++---- 5 files changed, 33 insertions(+), 10 deletions(-) diff --git a/cmd/docker-scan/main.go b/cmd/docker-scan/main.go index 8aed11a..ff40ac3 100644 --- a/cmd/docker-scan/main.go +++ b/cmd/docker-scan/main.go @@ -214,7 +214,7 @@ func runAuthentication(ctx context.Context, dockerCli command.Cli, flags options func runScan(ctx context.Context, cmd *cobra.Command, dockerCli command.Cli, flags options, args []string) error { scanProvider, err := configureProvider(ctx, dockerCli, flags, provider.WithAuthConfig(func(hub *registry.IndexInfo) types.AuthConfig { return command.ResolveAuthConfig(context.Background(), dockerCli, hub) - })) + }), provider.WithVersion(internal.Version)) if len(args) != 1 { if err := cmd.Usage(); err != nil { return err diff --git a/internal/provider/containerizedsnyk.go b/internal/provider/containerizedsnyk.go index f565bab..626d54e 100644 --- a/internal/provider/containerizedsnyk.go +++ b/internal/provider/containerizedsnyk.go @@ -144,6 +144,7 @@ func (d *dockerSnykProvider) createContainer(token string, containerName string) "NO_UPDATE_NOTIFIER=true", "SNYK_CFG_DISABLESUGGESTIONS=true", "SNYK_INTEGRATION_NAME=DOCKER_DESKTOP", + "SNYK_INTEGRATION_VERSION=" + d.version, "SNYK_UTM_MEDIUM=Partner", "SNYK_UTM_SOURCE=Docker", "SNYK_UTM_CAMPAIGN=Docker-Desktop-2020", @@ -282,8 +283,12 @@ func (d *dockerSnykProvider) newCommand(envVars []string, arg ...string) (string arg[index] = "--file=/app/Dockerfile" } } - defaultEnvs := []string{"NO_UPDATE_NOTIFIER=true", "SNYK_CFG_DISABLESUGGESTIONS=true", - "SNYK_INTEGRATION_NAME=DOCKER_DESKTOP"} + defaultEnvs := []string{ + "NO_UPDATE_NOTIFIER=true", + "SNYK_CFG_DISABLESUGGESTIONS=true", + "SNYK_INTEGRATION_NAME=DOCKER_DESKTOP", + "SNYK_INTEGRATION_VERSION=" + d.version, + } envVars = append(envVars, defaultEnvs...) args := strslice.StrSlice{"snyk"} diff --git a/internal/provider/provider.go b/internal/provider/provider.go index f052028..cae4a0f 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -45,6 +45,7 @@ type Options struct { out io.Writer err io.Writer path string + version string } // NewProvider returns default provider options setup with the give options @@ -78,7 +79,7 @@ func WithAuthConfig(authResolver func(*registry.IndexInfo) types.AuthConfig) Ops } } -//WithContext update the provider with a cancelable context +// WithContext update the provider with a cancelable context func WithContext(ctx context.Context) Ops { return func(options *Options) error { options.context = ctx @@ -86,7 +87,7 @@ func WithContext(ctx context.Context) Ops { } } -//WithStreams sets the out and err streams to be used by commands +// WithStreams sets the out and err streams to be used by commands func WithStreams(out, err io.Writer) Ops { return func(options *Options) error { options.out = out @@ -184,6 +185,14 @@ func WithExperimental() Ops { } } +// WithVersion set the version of the scan cli plugin to the provider +func WithVersion(version string) Ops { + return func(provider *Options) error { + provider.version = version + return nil + } +} + func getToken(opts Options) (string, error) { if opts.auth.Username == "" { return "", fmt.Errorf(`You need to be logged in to Docker Hub to use the scan feature. diff --git a/internal/provider/snyk.go b/internal/provider/snyk.go index 8f06d41..c03b739 100644 --- a/internal/provider/snyk.go +++ b/internal/provider/snyk.go @@ -112,7 +112,9 @@ func (s *snykProvider) newCommand(arg ...string) *exec.Cmd { cmd.Env = append(os.Environ(), "NO_UPDATE_NOTIFIER=true", "SNYK_CFG_DISABLESUGGESTIONS=true", - "SNYK_INTEGRATION_NAME=DOCKER_DESKTOP") + "SNYK_INTEGRATION_NAME=DOCKER_DESKTOP", + "SNYK_INTEGRATION_VERSION="+s.version, + ) return cmd } diff --git a/internal/provider/snyk_test.go b/internal/provider/snyk_test.go index 934944d..30d7cbb 100644 --- a/internal/provider/snyk_test.go +++ b/internal/provider/snyk_test.go @@ -35,7 +35,8 @@ var ( ) const ( - snykToken = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + snykToken = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + fakeVersion = "abcd1234" ) func TestSnykLoginEnvVars(t *testing.T) { @@ -48,8 +49,10 @@ func TestSnykLoginEnvVars(t *testing.T) { err := provider.Authenticate(snykToken) assert.NilError(t, err) - // SNYK_INTEGRATION is always set + // SNYK_INTEGRATION_NAME is always set assert.Assert(t, strings.Contains(outStream.String(), "SNYK_INTEGRATION_NAME=DOCKER_DESKTOP")) + // SNYK_INTEGRATION_VERSION is always set + assert.Assert(t, strings.Contains(outStream.String(), "SNYK_INTEGRATION_VERSION="+fakeVersion)) // NO_UPDATE_NOTIFIER disables node.js automatic update notification in console assert.Assert(t, strings.Contains(outStream.String(), "NO_UPDATE_NOTIFIER=true")) // SNYK_CFG_DISABLESUGGESTIONS removes user hints from snyk @@ -78,8 +81,10 @@ func TestSnykScanEnvVars(t *testing.T) { err := provider.Scan("image") assert.NilError(t, err) - // SNYK_INTEGRATION is always set + // SNYK_INTEGRATION_NAME is always set assert.Assert(t, strings.Contains(outStream.String(), "SNYK_INTEGRATION_NAME=DOCKER_DESKTOP")) + // SNYK_INTEGRATION_VERSION is always set + assert.Assert(t, strings.Contains(outStream.String(), "SNYK_INTEGRATION_VERSION="+fakeVersion)) // NO_UPDATE_NOTIFIER disables node.js automatic update notification in console assert.Assert(t, strings.Contains(outStream.String(), "NO_UPDATE_NOTIFIER=true")) // SNYK_CFG_DISABLESUGGESTIONS removes user hints from snyk @@ -95,7 +100,9 @@ func setupMockSnykBinary(t *testing.T) (Provider, *bytes.Buffer) { defaultProvider, err := NewProvider(WithContext(context.Background()), WithPath(snykPath), - WithStreams(outStream, errStream)) + WithStreams(outStream, errStream), + WithVersion(fakeVersion), + ) assert.NilError(t, err) provider, err := NewSnykProvider( defaultProvider)