Skip to content

Commit dcedc94

Browse files
author
Amir Moualem
authored
Merge pull request #396 from snyk/feat/distroless
feat: docker-plugin with Distroless scanning support
2 parents 8252f2b + 8611be7 commit dcedc94

File tree

6 files changed

+23
-18
lines changed

6 files changed

+23
-18
lines changed

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"needle": "^2.4.0",
4040
"sleep-promise": "^8.0.1",
4141
"snyk-config": "3.0.0",
42-
"snyk-docker-plugin": "2.2.4",
42+
"snyk-docker-plugin": "2.6.1",
4343
"source-map-support": "^0.5.16",
4444
"typescript": "^3.8.3",
4545
"ws": "^7.2.1",

src/scanner/images/index.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import logger = require('../../common/logger');
55
import { pull as skopeoCopy, getDestinationForImage } from './skopeo';
66
import config = require('../../common/config');
77
import { IPullableImage } from './types';
8-
import { IStaticAnalysisOptions, StaticAnalysisImageType, IScanResult } from '../types';
8+
import { IStaticAnalysisOptions, StaticAnalysisImageType, IScanResult, IPluginOptions } from '../types';
99

1010
export async function pullImages(images: IPullableImage[]): Promise<IPullableImage[]> {
1111
const pulledImages: IPullableImage[] = [];
@@ -59,13 +59,11 @@ export function getImageTag(imageWithTag: string): string {
5959
// Exported for testing
6060
export function constructStaticAnalysisOptions(
6161
fileSystemPath: string,
62-
): { staticAnalysisOptions: IStaticAnalysisOptions } {
62+
): IStaticAnalysisOptions {
6363
return {
64-
staticAnalysisOptions: {
65-
imagePath: fileSystemPath,
66-
imageType: StaticAnalysisImageType.DockerArchive,
67-
tmpDirPath: config.IMAGE_STORAGE_ROOT,
68-
},
64+
imagePath: fileSystemPath,
65+
imageType: StaticAnalysisImageType.DockerArchive,
66+
tmpDirPath: config.IMAGE_STORAGE_ROOT,
6967
};
7068
}
7169

@@ -76,7 +74,11 @@ export async function scanImages(images: IPullableImage[]): Promise<IScanResult[
7674

7775
for (const {imageName, fileSystemPath} of images) {
7876
try {
79-
const options = constructStaticAnalysisOptions(fileSystemPath);
77+
const staticAnalysisOptions = constructStaticAnalysisOptions(fileSystemPath);
78+
const options: IPluginOptions = {
79+
staticAnalysisOptions,
80+
experimental: true,
81+
};
8082

8183
const result = await plugin.inspect(imageName, dockerfile, options);
8284

src/scanner/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ export enum StaticAnalysisImageType {
88
DockerArchive = 'docker-archive',
99
}
1010

11+
export interface IPluginOptions {
12+
staticAnalysisOptions: IStaticAnalysisOptions;
13+
experimental: boolean;
14+
}
15+
1116
export interface IStaticAnalysisOptions {
1217
imagePath: string;
1318
imageType: StaticAnalysisImageType;

test/integration/kubernetes.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ tap.test('snyk-monitor sends data to kubernetes-upstream', async (t) => {
106106
t.ok('busybox' in depGraphScratchImage.dependencyGraphResults, 'busybox was scanned');
107107
const busyboxPluginResult = JSON.parse(depGraphScratchImage.dependencyGraphResults.busybox);
108108
t.same(busyboxPluginResult.package.packageFormatVersion, 'linux:0.0.1', 'the version of the package format');
109-
t.same(busyboxPluginResult.package.targetOS, {name: 'unknown', version: '0.0'}, 'busybox operating system unknown');
109+
t.same(busyboxPluginResult.package.targetOS, {name: 'unknown', version: '0.0', prettyName: ""}, 'busybox operating system unknown');
110110
t.same(busyboxPluginResult.plugin.packageManager, 'linux', 'linux is the default package manager for scratch containers');
111111
});
112112

test/unit/scanner/images.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,9 @@ tap.test('constructStaticAnalysisOptions() tests', async (t) => {
4949
const somePath = '/var/tmp/file.tar';
5050
const options = scannerImages.constructStaticAnalysisOptions(somePath);
5151
const expectedResult = {
52-
staticAnalysisOptions: {
53-
imagePath: somePath,
54-
imageType: 'docker-archive',
55-
tmpDirPath: '/var/tmp',
56-
},
52+
imagePath: somePath,
53+
imageType: 'docker-archive',
54+
tmpDirPath: '/var/tmp',
5755
};
5856

5957
t.deepEqual(options, expectedResult, 'returned options match expectations');

0 commit comments

Comments
 (0)