@abgov/nx-oc 3.0.0-beta.1 → 3.1.0-beta.2

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abgov/nx-oc",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.1.0-beta.2",
4
4
  "license": "Apache-2.0",
5
5
  "main": "src/index.js",
6
6
  "description": "Government of Alberta - DIO - Nx plugin for OpenShift.",
@@ -13,7 +13,7 @@
13
13
  "executors": "./executors.json",
14
14
  "dependencies": {
15
15
  "yaml": "^1.10.2",
16
- "@nrwl/devkit": "13.4.3"
16
+ "@nrwl/devkit": "13.8.1"
17
17
  },
18
18
  "typings": "./src/index.d.ts",
19
19
  "peerDependencies": {}
@@ -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
- [...options.ocProject] :
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.map(ocProject => {
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=${ocProject}`
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
- }).filter((success) => !success);
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,eAAe,CAAC,OAAe;IAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACnD,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACxB,CACE,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACrB,EAAE,CACH,CAAC;IAEJ,OAAO,EAAE,UAAU,EAAE,CAAA;AACvB,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,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACxC,MAAM,aAAa,GAAG,IAAA,uBAAY,EAChC,SAAS,EACT;gBACE,iBAAiB,WAAW,IAAI,WAAW,MAAM;gBACjD,cAAc,SAAS,EAAE;aAC1B,CACF,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;iBACI;gBACH,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,uBAAY,EAAC,OAAO,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,CAAC,CAAC;gBAEhC,OAAO,OAAO,CAAC;aAChB;QACH,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO;YACL,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM;SACxB,CAAA;IACH,CAAC;CAAA;AA/BD,8BA+BC"}
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: string[];
11
+ ocProjects: PipelineEnvironment[];
7
12
  }
@@ -13,11 +13,28 @@
13
13
  {
14
14
  "type": "array",
15
15
  "items": {
16
- "type": "string"
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": ["ocProject"]
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) {
@@ -18,7 +19,7 @@ function normalizeOptions(host, options) {
18
19
  const config = (0, devkit_1.readProjectConfiguration)(host, projectName);
19
20
  let appType = null;
20
21
  switch (config.targets.build.executor) {
21
- case '@nrwl/web:build':
22
+ case '@nrwl/web:webpack':
22
23
  case '@angular-devkit/build-angular:browser':
23
24
  appType = 'frontend';
24
25
  break;
@@ -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":"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"}
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/generators/deployment/deployment.ts"],"names":[],"mappings":"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"}
@@ -1,62 +1,62 @@
1
- import { addProjectConfiguration, readProjectConfiguration } from '@nrwl/devkit';
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
- const options: Schema = { project: 'test', tenant: 'test' }
9
-
10
- it ('can run', async () => {
12
+ it('can run', async () => {
11
13
  const host = createTreeWithEmptyWorkspace();
12
- await pipeline(
13
- host,
14
- {
15
- pipeline: 'test',
16
- type: 'jenkins',
17
- infra: 'test-infra',
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:webpack',
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).toContain('test-dev');
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 ('can generate deployment for react', async () => {
43
+ it('can generate deployment for react', async () => {
41
44
  const host = createTreeWithEmptyWorkspace();
42
- await pipeline(
43
- host,
44
- {
45
- pipeline: 'test',
46
- type: 'jenkins',
47
- infra: 'test-infra',
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:webpack',
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 ('can generate deployment for angular', async () => {
70
+ it('can generate deployment for angular', async () => {
71
71
  const host = createTreeWithEmptyWorkspace();
72
- await pipeline(
73
- host,
74
- {
75
- pipeline: 'test',
76
- type: 'jenkins',
77
- infra: 'test-infra',
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 ('can generate deployment for express', async () => {
97
+ it('can generate deployment for express', async () => {
101
98
  const host = createTreeWithEmptyWorkspace();
102
- await pipeline(
103
- host,
104
- {
105
- pipeline: 'test',
106
- type: 'jenkins',
107
- infra: 'test-infra',
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 ('can generate deployment for dotnet', async () => {
124
+ it('can generate deployment for dotnet', async () => {
131
125
  const host = createTreeWithEmptyWorkspace();
132
- await pipeline(
133
- host,
134
- {
135
- pipeline: 'test',
136
- type: 'jenkins',
137
- infra: 'test-infra',
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 ('can skip unknown project type', async () => {
151
+ it('can skip unknown project type', async () => {
161
152
  const host = createTreeWithEmptyWorkspace();
162
- await pipeline(
163
- host,
164
- {
165
- pipeline: 'test',
166
- type: 'jenkins',
167
- infra: 'test-infra',
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
@@ -60,11 +60,11 @@ jobs:
60
60
 
61
61
  # Project build steps lint, test, and build
62
62
  - name: Lint
63
- run: npm run affected:lint -- --base=${{ env.AFFECTED_BASE }}
63
+ run: npx nx affected --target=lint --base=${{ env.AFFECTED_BASE }}
64
64
  - name: Test
65
- run: npm run affected:test -- --base=${{ env.AFFECTED_BASE }}
65
+ run: npx nx affected --target=test --base=${{ env.AFFECTED_BASE }}
66
66
  - name: Build
67
- run: npm run affected:build -- --base=${{ env.AFFECTED_BASE }} --configuration production
67
+ run: npx nx affected --target=build --base=${{ env.AFFECTED_BASE }} --configuration production
68
68
  # Set affected apps to env for later steps and jobs.
69
69
  - name: Set AFFECTED_APPS for OC steps
70
70
  run: echo "AFFECTED_APPS=$(npx nx affected:apps --plain --base=${{ env.AFFECTED_BASE }})" >> $GITHUB_ENV
@@ -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
@@ -95,7 +95,7 @@ jobs:
95
95
 
96
96
  deploy<%= envs[i] %>:
97
97
  runs-on: ubuntu-20.04
98
- needs: build
98
+ needs: [build<%= envs[i - 1] ? `, deploy${envs[i - 1]}` : '' %>]
99
99
  env:
100
100
  AFFECTED_APPS: ${{ needs.build.outputs.affected_apps }}
101
101
  environment:
@@ -112,13 +112,19 @@ jobs:
112
112
  run: |
113
113
  for app in $AFFECTED_APPS
114
114
  do
115
- oc tag $app:latest $app:<%= envs[i].toLowerCase() %>
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 envs = ['Dev', 'Test', 'Staging', 'Prod'];
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;;IAEnD,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,IACjE;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,OAAyB;;IAErD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEhD,MAAM,eAAe,mCAChB,OAAO,KACV,mBAAmB,EAAE,MAAA,IAAA,2BAAe,GAAE,0CAAE,IAAI,EAAE,EAC9C,IAAI,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"}
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"}
@@ -34,7 +34,7 @@
34
34
  "type": "string",
35
35
  "description": "Names of the OpenShift Projects for environments.",
36
36
  "alias": "e",
37
- "x-prompt": "What projects should be used for environments (dev test staging prod)?"
37
+ "x-prompt": "What projects should be used for environments (dev test prod)?"
38
38
  },
39
39
  "apply": {
40
40
  "type": "boolean",
@@ -0,0 +1 @@
1
+ export declare const pipelineEnvs: string[];
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pipelineEnvs = void 0;
4
+ exports.pipelineEnvs = ['Dev', 'Test', 'Prod'];
5
+ //# sourceMappingURL=pipeline-envs.js.map
@@ -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"}