@abgov/nx-oc 3.0.1-beta.1 → 3.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/executors/apply/apply.js +19 -9
- package/src/executors/apply/apply.js.map +1 -1
- package/src/executors/apply/schema.d.ts +7 -2
- package/src/executors/apply/schema.json +20 -3
- package/src/generators/deployment/deployment.js +10 -3
- package/src/generators/deployment/deployment.js.map +1 -1
- package/src/generators/deployment/deployment.spec.ts +72 -84
- package/src/generators/pipeline/actions/openshift/environments.yml__tmpl__ +13 -0
- package/src/generators/pipeline/actions/workflows/pipeline.yml__tmpl__ +9 -3
- package/src/generators/pipeline/pipeline.js +2 -2
- package/src/generators/pipeline/pipeline.js.map +1 -1
- package/src/pipeline-envs.d.ts +1 -0
- package/src/pipeline-envs.js +5 -0
- package/src/pipeline-envs.js.map +1 -0
package/package.json
CHANGED
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
const pipeline_envs_1 = require("../../pipeline-envs");
|
|
4
5
|
const oc_utils_1 = require("../../utils/oc-utils");
|
|
6
|
+
function mapOcProject(project, i) {
|
|
7
|
+
if (typeof project === 'string') {
|
|
8
|
+
return { project: 'string', tag: pipeline_envs_1.pipelineEnvs[i].toLowerCase() };
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return project;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
5
14
|
function normalizeSchema(options) {
|
|
6
|
-
const ocProjects = Array.isArray(options.ocProject)
|
|
7
|
-
|
|
8
|
-
(options.ocProject
|
|
9
|
-
[options.ocProject] :
|
|
10
|
-
[]);
|
|
15
|
+
const ocProjects = Array.isArray(options.ocProject)
|
|
16
|
+
? options.ocProject.map(mapOcProject)
|
|
17
|
+
: [mapOcProject(options.ocProject, 0)];
|
|
11
18
|
return { ocProjects };
|
|
12
19
|
}
|
|
13
20
|
function runExecutor(options, { projectName }) {
|
|
14
21
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
15
22
|
console.log(`Running oc apply for ${projectName}...`);
|
|
16
23
|
const { ocProjects } = normalizeSchema(options);
|
|
17
|
-
const failed = ocProjects
|
|
24
|
+
const failed = ocProjects
|
|
25
|
+
.map(({ project, tag }) => {
|
|
18
26
|
const processResult = (0, oc_utils_1.runOcCommand)('process', [
|
|
19
27
|
`-f .openshift/${projectName}/${projectName}.yml`,
|
|
20
|
-
`-p PROJECT=${
|
|
28
|
+
`-p PROJECT=${project}`,
|
|
29
|
+
`-p DEPLOY_TAG=${tag}`,
|
|
21
30
|
]);
|
|
22
31
|
if (!processResult.success) {
|
|
23
32
|
return false;
|
|
@@ -27,9 +36,10 @@ function runExecutor(options, { projectName }) {
|
|
|
27
36
|
console.log(stdout === null || stdout === void 0 ? void 0 : stdout.toString());
|
|
28
37
|
return success;
|
|
29
38
|
}
|
|
30
|
-
})
|
|
39
|
+
})
|
|
40
|
+
.filter((success) => !success);
|
|
31
41
|
return {
|
|
32
|
-
success: !failed.length
|
|
42
|
+
success: !failed.length,
|
|
33
43
|
};
|
|
34
44
|
});
|
|
35
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/executors/apply/apply.ts"],"names":[],"mappings":";;;AACA,mDAAoD;AAGpD,SAAS,
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/executors/apply/apply.ts"],"names":[],"mappings":";;;AACA,uDAA2D;AAC3D,mDAAoD;AAGpD,SAAS,YAAY,CACnB,OAAqC,EACrC,CAAS;IAET,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,4BAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;KAC1D;SAAM;QACL,OAAO,OAAO,CAAC;KAChB;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;QACrC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC;AAED,SAA8B,WAAW,CACvC,OAAe,EACf,EAAE,WAAW,EAAmB;;QAEhC,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,KAAK,CAAC,CAAC;QAEtD,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,UAAU;aACtB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;YACxB,MAAM,aAAa,GAAG,IAAA,uBAAY,EAAC,SAAS,EAAE;gBAC5C,iBAAiB,WAAW,IAAI,WAAW,MAAM;gBACjD,cAAc,OAAO,EAAE;gBACvB,iBAAiB,GAAG,EAAE;aACvB,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;iBAAM;gBACL,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,uBAAY,EACtC,OAAO,EACP,EAAE,EACF,aAAa,CAAC,MAAM,CACrB,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,CAAC,CAAC;gBAEhC,OAAO,OAAO,CAAC;aAChB;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO;YACL,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;CAAA;AAlCD,8BAkCC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
export interface PipelineEnvironment {
|
|
2
|
+
project: string;
|
|
3
|
+
tag: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
1
6
|
export interface Schema {
|
|
2
|
-
ocProject: string | string[];
|
|
7
|
+
ocProject: string | string[] | PipelineEnvironment[];
|
|
3
8
|
}
|
|
4
9
|
|
|
5
10
|
export interface NormalizedSchema {
|
|
6
|
-
ocProjects:
|
|
11
|
+
ocProjects: PipelineEnvironment[];
|
|
7
12
|
}
|
|
@@ -13,11 +13,28 @@
|
|
|
13
13
|
{
|
|
14
14
|
"type": "array",
|
|
15
15
|
"items": {
|
|
16
|
-
"
|
|
16
|
+
"oneOf": [
|
|
17
|
+
{
|
|
18
|
+
"type": "string"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "object",
|
|
22
|
+
"properties": {
|
|
23
|
+
"project": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
},
|
|
26
|
+
"tag": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
17
32
|
}
|
|
18
33
|
}
|
|
19
34
|
]
|
|
20
35
|
}
|
|
21
36
|
},
|
|
22
|
-
"required": [
|
|
23
|
-
|
|
37
|
+
"required": [
|
|
38
|
+
"ocProject"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -4,6 +4,7 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const devkit_1 = require("@nrwl/devkit");
|
|
5
5
|
const path = require("path");
|
|
6
6
|
const yaml = require("yaml");
|
|
7
|
+
const pipeline_envs_1 = require("../../pipeline-envs");
|
|
7
8
|
const git_utils_1 = require("../../utils/git-utils");
|
|
8
9
|
const infraManifestFile = '.openshift/environments.yml';
|
|
9
10
|
function normalizeOptions(host, options) {
|
|
@@ -36,7 +37,7 @@ function normalizeOptions(host, options) {
|
|
|
36
37
|
ocInfraProject,
|
|
37
38
|
ocEnvProjects, adsp: {
|
|
38
39
|
tenantRealm,
|
|
39
|
-
accessServiceUrl
|
|
40
|
+
accessServiceUrl,
|
|
40
41
|
} });
|
|
41
42
|
}
|
|
42
43
|
function addFiles(host, options) {
|
|
@@ -62,8 +63,14 @@ function default_1(host, options) {
|
|
|
62
63
|
config.targets = Object.assign(Object.assign({}, config.targets), { 'apply-envs': {
|
|
63
64
|
executor: '@abgov/nx-oc:apply',
|
|
64
65
|
options: {
|
|
65
|
-
ocProject: normalizedOptions.ocEnvProjects
|
|
66
|
-
|
|
66
|
+
ocProject: normalizedOptions.ocEnvProjects.map((project, i) => {
|
|
67
|
+
var _a;
|
|
68
|
+
return ({
|
|
69
|
+
project,
|
|
70
|
+
tag: (_a = pipeline_envs_1.pipelineEnvs[i]) === null || _a === void 0 ? void 0 : _a.toLowerCase(),
|
|
71
|
+
});
|
|
72
|
+
}),
|
|
73
|
+
},
|
|
67
74
|
} });
|
|
68
75
|
(0, devkit_1.updateProjectConfiguration)(host, options.project, config);
|
|
69
76
|
addFiles(host, normalizedOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/generators/deployment/deployment.ts"],"names":[],"mappings":";;;AAAA,yCAQsB;AACtB,6BAA6B;AAC7B,6BAA6B;AAC7B,qDAAwD;AAGxD,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAExD,SAAS,gBAAgB,
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/generators/deployment/deployment.ts"],"names":[],"mappings":";;;AAAA,yCAQsB;AACtB,6BAA6B;AAC7B,6BAA6B;AAC7B,uDAA2D;AAC3D,qDAAwD;AAGxD,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAExD,SAAS,gBAAgB,CAAC,IAAU,EAAE,OAAe;;IACnD,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;IAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,CAAA,MAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,QAAQ,0CAAE,SAAS,KAAI,EAAE,CAAC;IAE3D,MAAM,SAAS,GAAG,yBAAyB,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,QAAQ,0CACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EACjE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAE7C,6CAA6C;IAC7C,MAAM,MAAM,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC3D,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;QACrC,KAAK,iBAAiB,CAAC;QACvB,KAAK,uCAAuC;YAC1C,OAAO,GAAG,UAAU,CAAC;YACrB,MAAM;QACR,KAAK,kBAAkB;YACrB,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM;QACR,KAAK,wBAAwB;YAC3B,OAAO,GAAG,QAAQ,CAAC;YACnB,MAAM;KACT;IAED,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;IACnD,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;IAE3D,uCACK,OAAO,KACV,WAAW;QACX,OAAO;QACP,cAAc;QACd,aAAa,EACb,IAAI,EAAE;YACJ,WAAW;YACX,gBAAgB;SACjB,IACD;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,OAAyB;IACrD,MAAM,eAAe,iDAChB,OAAO,GACP,OAAO,CAAC,IAAI,KACf,mBAAmB,EAAE,IAAA,2BAAe,GAAE,EACtC,IAAI,EAAE,EAAE,GACT,CAAC;IACF,IAAA,sBAAa,EACX,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,EAChD,GAAG,IAAI,CAAC,OAAO,CAAC,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC,eAAe,OAAO,CAAC,WAAW,EAAE,EAC3E,eAAe,CAChB,CAAC;AACJ,CAAC;AAED,mBAA+B,IAAU,EAAE,OAAe;;QACxD,MAAM,MAAM,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,WAAW,KAAK,aAAa,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;YACnC,OAAO,CAAC,GAAG,CACT,sEAAsE,CACvE,CAAC;YACF,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO;SACR;QAED,MAAM,CAAC,OAAO,mCACT,MAAM,CAAC,OAAO,KACjB,YAAY,EAAE;gBACZ,QAAQ,EAAE,oBAAoB;gBAC9B,OAAO,EAAE;oBACP,SAAS,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;;wBAAC,OAAA,CAAC;4BAC9D,OAAO;4BACP,GAAG,EAAE,MAAA,4BAAI,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE;yBAC5B,CAAC,CAAA;qBAAA,CAAC;iBACJ;aACF,GACF,CAAC;QAEF,IAAA,mCAA0B,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE1D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAClC,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AArCD,4BAqCC"}
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
addProjectConfiguration,
|
|
3
|
+
readProjectConfiguration,
|
|
4
|
+
} from '@nrwl/devkit';
|
|
2
5
|
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
|
|
3
6
|
import pipeline from '../pipeline/pipeline';
|
|
4
7
|
import { Schema } from './schema';
|
|
5
8
|
import generator from './deployment';
|
|
6
9
|
describe('Deployment Generator', () => {
|
|
10
|
+
const options: Schema = { project: 'test', tenant: 'test' };
|
|
7
11
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it ('can run', async () => {
|
|
12
|
+
it('can run', async () => {
|
|
11
13
|
const host = createTreeWithEmptyWorkspace();
|
|
12
|
-
await pipeline(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
envs: 'test-dev'
|
|
19
|
-
}
|
|
20
|
-
);
|
|
14
|
+
await pipeline(host, {
|
|
15
|
+
pipeline: 'test',
|
|
16
|
+
type: 'jenkins',
|
|
17
|
+
infra: 'test-infra',
|
|
18
|
+
envs: 'test-dev',
|
|
19
|
+
});
|
|
21
20
|
|
|
22
21
|
addProjectConfiguration(host, 'test', {
|
|
23
22
|
root: 'apps/test',
|
|
24
23
|
projectType: 'application',
|
|
25
24
|
targets: {
|
|
26
25
|
build: {
|
|
27
|
-
executor: '@nrwl/web:build'
|
|
28
|
-
}
|
|
29
|
-
}
|
|
26
|
+
executor: '@nrwl/web:build',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
30
29
|
});
|
|
31
30
|
|
|
32
31
|
await generator(host, options);
|
|
33
|
-
|
|
32
|
+
|
|
34
33
|
const config = readProjectConfiguration(host, 'test');
|
|
35
34
|
expect(config.targets['apply-envs']).toBeTruthy();
|
|
36
35
|
expect(config.targets['apply-envs'].executor).toBe('@abgov/nx-oc:apply');
|
|
37
|
-
expect(config.targets['apply-envs'].options.ocProject).
|
|
36
|
+
expect(config.targets['apply-envs'].options.ocProject).toEqual(
|
|
37
|
+
expect.arrayContaining([
|
|
38
|
+
expect.objectContaining({ project: 'test-dev', tag: 'dev' }),
|
|
39
|
+
])
|
|
40
|
+
);
|
|
38
41
|
});
|
|
39
42
|
|
|
40
|
-
it
|
|
43
|
+
it('can generate deployment for react', async () => {
|
|
41
44
|
const host = createTreeWithEmptyWorkspace();
|
|
42
|
-
await pipeline(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
envs: 'test-dev'
|
|
49
|
-
}
|
|
50
|
-
);
|
|
45
|
+
await pipeline(host, {
|
|
46
|
+
pipeline: 'test',
|
|
47
|
+
type: 'jenkins',
|
|
48
|
+
infra: 'test-infra',
|
|
49
|
+
envs: 'test-dev',
|
|
50
|
+
});
|
|
51
51
|
|
|
52
52
|
addProjectConfiguration(host, 'test', {
|
|
53
53
|
root: 'apps/test',
|
|
54
54
|
projectType: 'application',
|
|
55
55
|
targets: {
|
|
56
56
|
build: {
|
|
57
|
-
executor: '@nrwl/web:build'
|
|
58
|
-
}
|
|
59
|
-
}
|
|
57
|
+
executor: '@nrwl/web:build',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
60
|
});
|
|
61
61
|
|
|
62
62
|
await generator(host, options);
|
|
@@ -67,26 +67,23 @@ describe('Deployment Generator', () => {
|
|
|
67
67
|
expect(dockerfile).toContain('nginx');
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
-
it
|
|
70
|
+
it('can generate deployment for angular', async () => {
|
|
71
71
|
const host = createTreeWithEmptyWorkspace();
|
|
72
|
-
await pipeline(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
envs: 'test-dev'
|
|
79
|
-
}
|
|
80
|
-
);
|
|
72
|
+
await pipeline(host, {
|
|
73
|
+
pipeline: 'test',
|
|
74
|
+
type: 'jenkins',
|
|
75
|
+
infra: 'test-infra',
|
|
76
|
+
envs: 'test-dev',
|
|
77
|
+
});
|
|
81
78
|
|
|
82
79
|
addProjectConfiguration(host, 'test', {
|
|
83
80
|
root: 'apps/test',
|
|
84
81
|
projectType: 'application',
|
|
85
82
|
targets: {
|
|
86
83
|
build: {
|
|
87
|
-
executor: '@angular-devkit/build-angular:browser'
|
|
88
|
-
}
|
|
89
|
-
}
|
|
84
|
+
executor: '@angular-devkit/build-angular:browser',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
90
87
|
});
|
|
91
88
|
|
|
92
89
|
await generator(host, options);
|
|
@@ -97,26 +94,23 @@ describe('Deployment Generator', () => {
|
|
|
97
94
|
expect(dockerfile).toContain('nginx');
|
|
98
95
|
});
|
|
99
96
|
|
|
100
|
-
it
|
|
97
|
+
it('can generate deployment for express', async () => {
|
|
101
98
|
const host = createTreeWithEmptyWorkspace();
|
|
102
|
-
await pipeline(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
envs: 'test-dev'
|
|
109
|
-
}
|
|
110
|
-
);
|
|
99
|
+
await pipeline(host, {
|
|
100
|
+
pipeline: 'test',
|
|
101
|
+
type: 'jenkins',
|
|
102
|
+
infra: 'test-infra',
|
|
103
|
+
envs: 'test-dev',
|
|
104
|
+
});
|
|
111
105
|
|
|
112
106
|
addProjectConfiguration(host, 'test', {
|
|
113
107
|
root: 'apps/test',
|
|
114
108
|
projectType: 'application',
|
|
115
109
|
targets: {
|
|
116
110
|
build: {
|
|
117
|
-
executor: '@nrwl/node:build'
|
|
118
|
-
}
|
|
119
|
-
}
|
|
111
|
+
executor: '@nrwl/node:build',
|
|
112
|
+
},
|
|
113
|
+
},
|
|
120
114
|
});
|
|
121
115
|
|
|
122
116
|
await generator(host, options);
|
|
@@ -127,26 +121,23 @@ describe('Deployment Generator', () => {
|
|
|
127
121
|
expect(dockerfile).toContain('node');
|
|
128
122
|
});
|
|
129
123
|
|
|
130
|
-
it
|
|
124
|
+
it('can generate deployment for dotnet', async () => {
|
|
131
125
|
const host = createTreeWithEmptyWorkspace();
|
|
132
|
-
await pipeline(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
envs: 'test-dev'
|
|
139
|
-
}
|
|
140
|
-
);
|
|
126
|
+
await pipeline(host, {
|
|
127
|
+
pipeline: 'test',
|
|
128
|
+
type: 'jenkins',
|
|
129
|
+
infra: 'test-infra',
|
|
130
|
+
envs: 'test-dev',
|
|
131
|
+
});
|
|
141
132
|
|
|
142
133
|
addProjectConfiguration(host, 'test', {
|
|
143
134
|
root: 'apps/test',
|
|
144
135
|
projectType: 'application',
|
|
145
136
|
targets: {
|
|
146
137
|
build: {
|
|
147
|
-
executor: '@abgov/nx-dotnet:build'
|
|
148
|
-
}
|
|
149
|
-
}
|
|
138
|
+
executor: '@abgov/nx-dotnet:build',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
150
141
|
});
|
|
151
142
|
|
|
152
143
|
await generator(host, options);
|
|
@@ -157,32 +148,29 @@ describe('Deployment Generator', () => {
|
|
|
157
148
|
expect(dockerfile).toContain('dotnet');
|
|
158
149
|
});
|
|
159
150
|
|
|
160
|
-
it
|
|
151
|
+
it('can skip unknown project type', async () => {
|
|
161
152
|
const host = createTreeWithEmptyWorkspace();
|
|
162
|
-
await pipeline(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
envs: 'test-dev'
|
|
169
|
-
}
|
|
170
|
-
);
|
|
153
|
+
await pipeline(host, {
|
|
154
|
+
pipeline: 'test',
|
|
155
|
+
type: 'jenkins',
|
|
156
|
+
infra: 'test-infra',
|
|
157
|
+
envs: 'test-dev',
|
|
158
|
+
});
|
|
171
159
|
|
|
172
160
|
addProjectConfiguration(host, 'test', {
|
|
173
161
|
root: 'apps/test',
|
|
174
162
|
projectType: 'application',
|
|
175
163
|
targets: {
|
|
176
164
|
build: {
|
|
177
|
-
executor: '@nrwl/not-real:build'
|
|
178
|
-
}
|
|
179
|
-
}
|
|
165
|
+
executor: '@nrwl/not-real:build',
|
|
166
|
+
},
|
|
167
|
+
},
|
|
180
168
|
});
|
|
181
169
|
|
|
182
170
|
await generator(host, options);
|
|
183
171
|
expect(host.exists('.openshift/test/test.yml')).toBeFalsy();
|
|
184
172
|
expect(host.exists('.openshift/test/Dockerfile')).toBeFalsy();
|
|
185
|
-
|
|
173
|
+
|
|
186
174
|
const config = readProjectConfiguration(host, 'test');
|
|
187
175
|
expect(config.targets['apply-envs']).toBeFalsy();
|
|
188
176
|
});
|
|
@@ -16,6 +16,19 @@ items:
|
|
|
16
16
|
kind: Group
|
|
17
17
|
name: 'system:serviceaccounts:<%= ocEnvProject %>'
|
|
18
18
|
<% }); -%>
|
|
19
|
+
- apiVersion: rbac.authorization.k8s.io/v1
|
|
20
|
+
kind: RoleBinding
|
|
21
|
+
metadata:
|
|
22
|
+
name: pipeline_edit
|
|
23
|
+
namespace: <%= ocInfraProject %>
|
|
24
|
+
roleRef:
|
|
25
|
+
apiGroup: rbac.authorization.k8s.io
|
|
26
|
+
kind: ClusterRole
|
|
27
|
+
name: edit
|
|
28
|
+
subjects:
|
|
29
|
+
- kind: ServiceAccount
|
|
30
|
+
name: github-actions
|
|
31
|
+
namespace: <%= ocInfraProject %>
|
|
19
32
|
<% ocEnvProjects.forEach(function(ocEnvProject){ -%>
|
|
20
33
|
- apiVersion: rbac.authorization.k8s.io/v1
|
|
21
34
|
kind: RoleBinding
|
|
@@ -86,7 +86,7 @@ jobs:
|
|
|
86
86
|
run: |
|
|
87
87
|
for app in $AFFECTED_APPS
|
|
88
88
|
do
|
|
89
|
-
oc start-build $app --from-dir . --follow
|
|
89
|
+
oc start-build $app --from-dir . --follow --wait
|
|
90
90
|
done
|
|
91
91
|
# Set build job outputs for subsequent jobs.
|
|
92
92
|
- id: set_outputs
|
|
@@ -114,11 +114,17 @@ jobs:
|
|
|
114
114
|
do
|
|
115
115
|
oc tag $app:<%= envs[i - 1] ? envs[i - 1].toLowerCase() : 'latest' %> $app:<%= envs[i].toLowerCase() %>
|
|
116
116
|
done
|
|
117
|
+
- run: oc project <%= ocEnvProject %>
|
|
118
|
+
- name: Apply Manifests
|
|
119
|
+
run: |
|
|
120
|
+
for app in $AFFECTED_APPS
|
|
121
|
+
do
|
|
122
|
+
oc process -f .openshift/managed/$app.yml -p NAMESPACE=<%= ocEnvProject %> -p DEPLOY_TAG=<%= envs[i].toLowerCase() %> | oc apply -f -
|
|
123
|
+
done
|
|
117
124
|
- name: Deploy <%= envs[i] %>
|
|
118
125
|
run: |
|
|
119
126
|
for app in $AFFECTED_APPS
|
|
120
|
-
do
|
|
121
|
-
oc project <%= ocEnvProject %>
|
|
127
|
+
do
|
|
122
128
|
oc rollout latest dc/$app
|
|
123
129
|
oc rollout status dc/$app
|
|
124
130
|
done
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const devkit_1 = require("@nrwl/devkit");
|
|
5
5
|
const path = require("path");
|
|
6
|
+
const pipeline_envs_1 = require("../../pipeline-envs");
|
|
6
7
|
const git_utils_1 = require("../../utils/git-utils");
|
|
7
8
|
const apply_infra_1 = require("../apply-infra/apply-infra");
|
|
8
9
|
function normalizeOptions(host, options) {
|
|
@@ -16,8 +17,7 @@ function normalizeOptions(host, options) {
|
|
|
16
17
|
}
|
|
17
18
|
function addFiles(host, options) {
|
|
18
19
|
var _a;
|
|
19
|
-
const
|
|
20
|
-
const templateOptions = Object.assign(Object.assign({}, options), { sourceRepositoryUrl: (_a = (0, git_utils_1.getGitRemoteUrl)()) === null || _a === void 0 ? void 0 : _a.trim(), envs, tmpl: '' });
|
|
20
|
+
const templateOptions = Object.assign(Object.assign({}, options), { sourceRepositoryUrl: (_a = (0, git_utils_1.getGitRemoteUrl)()) === null || _a === void 0 ? void 0 : _a.trim(), envs: pipeline_envs_1.pipelineEnvs, tmpl: '' });
|
|
21
21
|
if (options.pipelineType === 'jenkins') {
|
|
22
22
|
(0, devkit_1.generateFiles)(host, path.join(__dirname, 'jenkins'), `${path.dirname((0, devkit_1.getWorkspacePath)(host))}/.openshift`, templateOptions);
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/generators/pipeline/pipeline.ts"],"names":[],"mappings":";;;AAAA,yCAKsB;AACtB,6BAA6B;AAC7B,qDAAwD;AACxD,4DAA6D;AAG7D,SAAS,gBAAgB,CAAC,IAAU,EAAE,OAAe;;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/generators/pipeline/pipeline.ts"],"names":[],"mappings":";;;AAAA,yCAKsB;AACtB,6BAA6B;AAC7B,uDAA2D;AAC3D,qDAAwD;AACxD,4DAA6D;AAG7D,SAAS,gBAAgB,CAAC,IAAU,EAAE,OAAe;;IACnD,MAAM,aAAa,GAAG,CAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,eAAe,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,uCACK,OAAO,KACV,cAAc,EAAE,OAAO,CAAC,QAAQ,EAChC,cAAc,EAAE,OAAO,CAAC,KAAK,EAC7B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAC9B,YAAY,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAChE;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,OAAyB;;IACrD,MAAM,eAAe,mCAChB,OAAO,KACV,mBAAmB,EAAE,MAAA,IAAA,2BAAe,GAAE,0CAAE,IAAI,EAAE,EAC9C,IAAI,EAAJ,4BAAI,EACJ,IAAI,EAAE,EAAE,GACT,CAAC;IAEF,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;QACtC,IAAA,sBAAa,EACX,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC,aAAa,EACpD,eAAe,CAChB,CAAC;KACH;SAAM,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;QAC7C,IAAA,sBAAa,EACX,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACzC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC,aAAa,EACpD,eAAe,CAChB,CAAC;QACF,IAAA,sBAAa,EACX,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACzC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC,oBAAoB,EAC3D,eAAe,CAChB,CAAC;KACH;AACH,CAAC;AAED,mBAA+B,IAAU,EAAE,OAAe;;QACxD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAClC,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAExB,IAAI,iBAAiB,CAAC,aAAa,EAAE;YACnC,MAAM,IAAA,qBAAmB,EAAC,IAAI,CAAC,CAAC;SACjC;IACH,CAAC;CAAA;AATD,4BASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pipelineEnvs: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-envs.js","sourceRoot":"","sources":["../../../../packages/nx-oc/src/pipeline-envs.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC"}
|