Skip to content

Commit 4d0529f

Browse files
authored
Merge pull request #394 from snyk/chore/various-fixes
Chore/various fixes
2 parents 60bf528 + 3a42517 commit 4d0529f

File tree

4 files changed

+37
-54
lines changed

4 files changed

+37
-54
lines changed

test/setup/deployers/operator.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,13 @@
1-
import { IDeployer } from './types';
1+
import { IDeployer, IImageOptions } from './types';
22
import * as kubectl from '../../helpers/kubectl';
33

44
export const operatorDeployer: IDeployer = {
55
deploy: deployKubernetesMonitor,
66
};
77

88
async function deployKubernetesMonitor(
9-
integrationId: string,
10-
_imageOpts: {
11-
imageNameAndTag: string;
12-
imagePullPolicy: string;
13-
},
9+
_imageOptions: IImageOptions,
1410
): Promise<void> {
15-
const namespace = 'snyk-monitor';
16-
await kubectl.createNamespace(namespace);
17-
18-
const secretName = 'snyk-monitor';
19-
const gcrDockercfg = process.env['GCR_IO_DOCKERCFG'] || '{}';
20-
await kubectl.createSecret(secretName, namespace, {
21-
'dockercfg.json': gcrDockercfg,
22-
integrationId,
23-
});
24-
2511
await kubectl.applyK8sYaml('./test/fixtures/operator/operator-source.yaml');
2612
await kubectl.applyK8sYaml('./test/fixtures/operator/installation.yaml');
2713

test/setup/deployers/types.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1+
export interface IImageOptions {
2+
nameAndTag: string;
3+
pullPolicy: 'Never' | 'Always' | 'IfPresent';
4+
}
5+
16
export interface IDeployer {
2-
deploy: (
3-
integrationId: string,
4-
imageOpts: {
5-
imageNameAndTag: string;
6-
imagePullPolicy: string;
7-
},
8-
) => Promise<void>;
7+
deploy: (imageOptions: IImageOptions) => Promise<void>;
98
}

test/setup/deployers/yaml.ts

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,21 @@ import { readFileSync, writeFileSync } from 'fs';
22
import { parse, stringify } from 'yaml';
33

44
import * as kubectl from '../../helpers/kubectl';
5-
import { IDeployer } from './types';
5+
import { IDeployer, IImageOptions } from './types';
66

77
export const yamlDeployer: IDeployer = {
88
deploy: deployKubernetesMonitor,
99
};
1010

1111
async function deployKubernetesMonitor(
12-
integrationId: string,
13-
imageOpts: {
14-
imageNameAndTag: string;
15-
imagePullPolicy: string;
16-
},
12+
imageOptions: IImageOptions,
1713
): Promise<void> {
18-
const namespace = 'snyk-monitor';
19-
await kubectl.createNamespace(namespace);
20-
21-
const secretName = 'snyk-monitor';
22-
const gcrDockercfg = process.env['GCR_IO_DOCKERCFG'] || '{}';
23-
await kubectl.createSecret(secretName, namespace, {
24-
'dockercfg.json': gcrDockercfg,
25-
integrationId,
26-
});
27-
2814
const testYaml = 'snyk-monitor-test-deployment.yaml';
29-
createTestYamlDeployment(testYaml, imageOpts.imageNameAndTag, imageOpts.imagePullPolicy);
15+
createTestYamlDeployment(
16+
testYaml,
17+
imageOptions.nameAndTag,
18+
imageOptions.pullPolicy,
19+
);
3020

3121
await kubectl.applyK8sYaml('./snyk-monitor-cluster-permissions.yaml');
3222
await kubectl.applyK8sYaml('./snyk-monitor-test-deployment.yaml');
@@ -50,13 +40,6 @@ function createTestYamlDeployment(
5040
value: 'https://kubernetes-upstream.dev.snyk.io',
5141
};
5242

53-
// TODO: remove this hack once an Operator is used to deploy the snyk-monitor for OpenShift tests
54-
const testPlatform = process.env['TEST_PLATFORM'] || 'kind';
55-
if (testPlatform === 'openshift4') {
56-
delete deployment.spec.template.spec.containers[0].securityContext.runAsUser;
57-
delete deployment.spec.template.spec.containers[0].securityContext.runAsGroup;
58-
}
59-
6043
writeFileSync(newYamlPath, stringify(deployment));
6144
console.log('Created YAML snyk-monitor deployment');
6245
}

test/setup/index.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import * as uuidv4 from 'uuid/v4';
44

55
import platforms from './platforms';
66
import deployers from './deployers';
7+
import { IImageOptions } from './deployers/types';
78
import * as kubectl from '../helpers/kubectl';
89

910
const testPlatform = process.env['TEST_PLATFORM'] || 'kind';
@@ -44,6 +45,22 @@ async function createEnvironment(): Promise<void> {
4445
await sleep(5000);
4546
}
4647

48+
async function predeploy(integrationId: string): Promise<void> {
49+
try {
50+
const namespace = 'snyk-monitor';
51+
await kubectl.createNamespace(namespace);
52+
53+
const secretName = 'snyk-monitor';
54+
const gcrDockercfg = process.env['GCR_IO_DOCKERCFG'] || '{}';
55+
await kubectl.createSecret(secretName, namespace, {
56+
'dockercfg.json': gcrDockercfg,
57+
integrationId,
58+
});
59+
} catch (error) {
60+
console.log('Could not create namespace and secret, they probably already exist');
61+
}
62+
}
63+
4764
async function createSecretForGcrIoAccess(): Promise<void> {
4865
const gcrSecretName = 'gcr-io';
4966
const gcrKubectlSecretsKeyPrefix = '--';
@@ -89,17 +106,15 @@ export async function deployMonitor(): Promise<string> {
89106
await createSecretForGcrIoAccess();
90107

91108
const integrationId = getIntegrationId();
109+
await predeploy(integrationId);
92110

93111
// TODO: hack, rewrite this
94112
const imagePullPolicy = testPlatform === 'kind' ? 'Never' : 'Always';
95-
const deploymentImageOptions = {
96-
imageNameAndTag: remoteImageName,
97-
imagePullPolicy,
113+
const deploymentImageOptions: IImageOptions = {
114+
nameAndTag: remoteImageName,
115+
pullPolicy: imagePullPolicy,
98116
};
99-
await deployers[deploymentType].deploy(
100-
integrationId,
101-
deploymentImageOptions,
102-
);
117+
await deployers[deploymentType].deploy(deploymentImageOptions);
103118
await kubectl.waitForDeployment('snyk-monitor', 'snyk-monitor');
104119
console.log(`Deployed the snyk-monitor with integration ID ${integrationId}`);
105120
return integrationId;

0 commit comments

Comments
 (0)