@eui/tools 6.14.21 → 6.15.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/.version.properties +1 -1
- package/CHANGELOG.md +18 -0
- package/package.json +1 -1
- package/sandbox.js +15 -25
- package/scripts/csdr/audit/styles.js +1 -1
- package/scripts/csdr/config/remotes.js +1 -1
- package/scripts/csdr/install/build-app.js +2 -2
- package/scripts/csdr/install/build-package.js +2 -2
- package/scripts/csdr/install/common.js +1 -1
- package/scripts/csdr/install/composite-core.js +49 -87
- package/scripts/csdr/install/projects.js +5 -7
- package/scripts/csdr/install/remotes.js +11 -11
- package/scripts/csdr/metadata/app.js +2 -2
- package/scripts/csdr/metadata/backend.js +148 -0
- package/scripts/csdr/metadata/metadata-utils.js +3 -4
- package/scripts/csdr/metadata/{package.js → package-utils.js} +0 -164
- package/scripts/csdr/metadata/remote-history.js +353 -0
- package/scripts/csdr/metadata/remote-package.js +188 -1
- package/scripts/csdr/metadata/stats.js +79 -79
- package/scripts/csdr/release/app/release-app.js +8 -17
- package/scripts/csdr/release/package/common.js +19 -119
- package/scripts/csdr/release/package/release-backend.js +7 -6
- package/scripts/csdr/release/package/release-old-remote.js +4 -23
- package/scripts/csdr/release/package/release-package.js +1 -1
- package/scripts/csdr/release/package/release-ui.js +30 -47
- package/scripts/csdr/release/package/release-virtual-remote.js +44 -19
- package/scripts/csdr/version/common.js +0 -2
- package/scripts/csdr/version/package-remote.js +2 -4
- package/scripts/index.js +4 -4
- package/scripts/utils/notification/slack-utils.js +1 -1
- package/scripts/utils/remotes/remotes-utils.js +6 -0
- package/scripts/csdr/metadata/package-envs.js +0 -70
- package/scripts/csdr/metadata/package-history.js +0 -368
- package/scripts/csdr/metadata/package-versions.js +0 -91
- package/scripts/csdr/metadata/v2/app/_app.js +0 -21
- package/scripts/csdr/metadata/v2/app/app.js +0 -25
- package/scripts/csdr/metadata/v2/app/index.js +0 -3
- package/scripts/csdr/metadata/v2/global/_global.js +0 -21
- package/scripts/csdr/metadata/v2/global/global.js +0 -25
- package/scripts/csdr/metadata/v2/global/index.js +0 -3
- package/scripts/csdr/metadata/v2/index.js +0 -5
- package/scripts/csdr/metadata/v2/migrate-devops-metadata.js +0 -207
- package/scripts/csdr/metadata/v2/package/_package.js +0 -21
- package/scripts/csdr/metadata/v2/package/index.js +0 -3
- package/scripts/csdr/metadata/v2/package/package.js +0 -25
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// GLOBAL
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
// LOCAL
|
|
7
|
+
const tools = require('../../utils/tools');
|
|
8
|
+
|
|
9
|
+
// FETCH ARGS
|
|
10
|
+
const { dryRun } = tools.getArgs();
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const storeBuildMetadataBackend = (pkg, pkgVersion, pkgMetadata, envTarget) => {
|
|
14
|
+
return Promise.resolve()
|
|
15
|
+
.then(() => {
|
|
16
|
+
tools.logInfo('Storing package BUILD metadata...');
|
|
17
|
+
|
|
18
|
+
let generatedMetadata = {};
|
|
19
|
+
let versions = [];
|
|
20
|
+
|
|
21
|
+
let pkgMetadataFile = path.join(pkg.paths.root, 'package-build-metadata.json');
|
|
22
|
+
|
|
23
|
+
if (tools.isFileExists(pkgMetadataFile)) {
|
|
24
|
+
generatedMetadata = require(pkgMetadataFile);
|
|
25
|
+
versions = generatedMetadata.versions;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
versions.push({ name: pkgVersion, envTarget: envTarget, gitMetadata: pkgMetadata });
|
|
29
|
+
generatedMetadata.versions = versions;
|
|
30
|
+
|
|
31
|
+
tools.logInfo(`Write metadata on ${pkgMetadataFile}`);
|
|
32
|
+
if (dryRun) {
|
|
33
|
+
tools.logInfo('DRY-RUN...');
|
|
34
|
+
console.log(generatedMetadata);
|
|
35
|
+
} else {
|
|
36
|
+
tools.writeJsonFileSync(pkgMetadataFile, generatedMetadata);
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
.catch((e) => {
|
|
41
|
+
throw e;
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const storeMetadataVersionsBackend = (pkg, pkgVersion, duration, envTarget) => {
|
|
46
|
+
return Promise.resolve()
|
|
47
|
+
.then(() => {
|
|
48
|
+
tools.logInfo('Storing package version history metadata...');
|
|
49
|
+
|
|
50
|
+
let generatedMetadata = {};
|
|
51
|
+
let versions = [];
|
|
52
|
+
let pkgMetadataFile = path.join(pkg.paths.root, 'package-versions-metadata.json');
|
|
53
|
+
|
|
54
|
+
if (tools.isFileExists(pkgMetadataFile)) {
|
|
55
|
+
generatedMetadata = require(pkgMetadataFile);
|
|
56
|
+
versions = generatedMetadata.versions;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const newVersionMetadata = {
|
|
60
|
+
name: pkg.name,
|
|
61
|
+
version: pkgVersion,
|
|
62
|
+
date: moment(new Date()).format("YYYYMMDD-HH:mm"),
|
|
63
|
+
npmPkg: pkg.npmPkg,
|
|
64
|
+
duration: duration,
|
|
65
|
+
envTarget: envTarget,
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
console.log(newVersionMetadata);
|
|
69
|
+
versions.push(newVersionMetadata);
|
|
70
|
+
generatedMetadata.versions = versions;
|
|
71
|
+
|
|
72
|
+
tools.logInfo(`Write metadata on ${pkgMetadataFile}`);
|
|
73
|
+
|
|
74
|
+
if (dryRun) {
|
|
75
|
+
tools.logInfo('DRY RUN...outputing newVersionMetadata');
|
|
76
|
+
console.log(newVersionMetadata);
|
|
77
|
+
|
|
78
|
+
} else {
|
|
79
|
+
tools.writeJsonFileSync(pkgMetadataFile, generatedMetadata);
|
|
80
|
+
}
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
.catch((e) => {
|
|
84
|
+
throw e;
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const storePipelineMetadata = (pkgMetadata) => {
|
|
89
|
+
return Promise.resolve()
|
|
90
|
+
.then(() => {
|
|
91
|
+
tools.logInfo('Storing package pipeline metadata into root variables...');
|
|
92
|
+
|
|
93
|
+
const variablesFile = path.join(process.cwd(), 'variables');
|
|
94
|
+
|
|
95
|
+
let fileContent;
|
|
96
|
+
if (tools.isFileExists(variablesFile)) {
|
|
97
|
+
fileContent = tools.getFileContent(variablesFile);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (pkgMetadata && pkgMetadata.issues) {
|
|
101
|
+
const issuesList = pkgMetadata.issues.join(',');
|
|
102
|
+
tools.logInfo(`Unique issues found for this version : ${issuesList}`);
|
|
103
|
+
|
|
104
|
+
tools.logInfo(`Write metadata on ${variablesFile}`);
|
|
105
|
+
if (!dryRun) {
|
|
106
|
+
fileContent += `export ISSUES_LIST=${issuesList}\n`;
|
|
107
|
+
tools.writeFileContent(variablesFile, fileContent);
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
110
|
+
tools.logInfo('No issues found for this release');
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
.catch((e) => {
|
|
115
|
+
console.log(e);
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
module.exports.storeMetadataBackend = (pkg, pkgVersion, pkgMetadata, isMaster, duration, envTarget) => {
|
|
121
|
+
tools.logTitle('Storing Backend metadata...');
|
|
122
|
+
|
|
123
|
+
return Promise.resolve()
|
|
124
|
+
.then(() => {
|
|
125
|
+
return storeMetadataVersionsBackend(pkg, pkgVersion, duration, envTarget);
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
.then(() => {
|
|
129
|
+
if (isMaster) {
|
|
130
|
+
return storeBuildMetadataBackend(pkg, pkgVersion, pkgMetadata, envTarget);
|
|
131
|
+
}
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
.then(() => {
|
|
135
|
+
if (isMaster) {
|
|
136
|
+
return storePipelineMetadata(pkgMetadata);
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
.then(() => {
|
|
141
|
+
tools.logSuccess();
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
.catch((e) => {
|
|
145
|
+
throw e;
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
|
|
@@ -5,11 +5,10 @@ module.exports.appEnvs = require('./app-envs');
|
|
|
5
5
|
module.exports.appHistory = require('./app-history');
|
|
6
6
|
module.exports.appVersions = require('./app-versions');
|
|
7
7
|
module.exports.app = require('./app');
|
|
8
|
+
module.exports.backend = require('./backend');
|
|
8
9
|
module.exports.commit = require('./commit');
|
|
9
10
|
module.exports.common = require('./common');
|
|
10
|
-
module.exports.
|
|
11
|
-
module.exports.packageHistory = require('./package-history');
|
|
12
|
-
module.exports.packageEnvs = require('./package-envs');
|
|
13
|
-
module.exports.packageVersions = require('./package-versions');
|
|
11
|
+
module.exports.packageUtils = require('./package-utils');
|
|
14
12
|
module.exports.remotePackage = require('./remote-package');
|
|
13
|
+
module.exports.remoteHistory = require('./remote-history');
|
|
15
14
|
module.exports.stats = require('./stats');
|
|
@@ -10,174 +10,10 @@ const tools = require('../../utils/tools');
|
|
|
10
10
|
const configUtils = require('../config/config-utils');
|
|
11
11
|
const gitUtils = require('../../utils/git-utils');
|
|
12
12
|
|
|
13
|
-
// INNER MODULES
|
|
14
|
-
const innerPackageEnvs = require('./package-envs');
|
|
15
|
-
const innerPackageVersions = require('./package-versions');
|
|
16
|
-
|
|
17
13
|
// FETCH ARGS
|
|
18
14
|
const { dryRun, debug } = tools.getArgs();
|
|
19
15
|
|
|
20
|
-
module.exports.storeMetadata = (pkg, pkgVersion, pkgMetadata, branches, pkgCompositeDeps, duration, envTarget) => {
|
|
21
|
-
tools.logTitle('Storing central and package metadata...');
|
|
22
|
-
|
|
23
|
-
return Promise.resolve()
|
|
24
|
-
.then(() => {
|
|
25
|
-
if (pkg.remote) {
|
|
26
|
-
return innerPackageVersions.storeMetadata(pkg, pkgVersion, pkgCompositeDeps, duration, envTarget);
|
|
27
|
-
}
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
.then(() => {
|
|
31
|
-
if (pkg.remote) {
|
|
32
|
-
return innerPackageEnvs.storeMetadata(pkg, pkgVersion, pkgCompositeDeps, envTarget);
|
|
33
|
-
}
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
.then(() => {
|
|
37
|
-
if (branches.isMaster) {
|
|
38
|
-
return storeBuildMetadata(pkg, pkgVersion, pkgMetadata, envTarget);
|
|
39
|
-
}
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
.then(() => {
|
|
43
|
-
if (branches.isMaster) {
|
|
44
|
-
return storePipelineMetadata(pkgMetadata);
|
|
45
|
-
}
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
.then(() => {
|
|
49
|
-
tools.logSuccess();
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
.catch((e) => {
|
|
53
|
-
throw e;
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
const storeBuildMetadata = (pkg, pkgVersion, pkgMetadata, envTarget) => {
|
|
58
|
-
return Promise.resolve()
|
|
59
|
-
.then(() => {
|
|
60
|
-
tools.logInfo('Storing package BUILD metadata...');
|
|
61
|
-
|
|
62
|
-
const configOptions = configUtils.global.getConfigOptions();
|
|
63
|
-
|
|
64
|
-
let generatedMetadata = {};
|
|
65
|
-
let versions = [];
|
|
66
|
-
|
|
67
|
-
let pkgMetadataFile;
|
|
68
|
-
|
|
69
|
-
if (pkg.backend) {
|
|
70
|
-
pkgMetadataFile = path.join(pkg.paths.root, 'package-build-metadata.json');
|
|
71
|
-
} else {
|
|
72
|
-
pkgMetadataFile = path.join(configOptions.DEVOPS_METADATA_PATH, pkg.devopsMetadataFile);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (tools.isFileExists(pkgMetadataFile)) {
|
|
76
|
-
generatedMetadata = require(pkgMetadataFile);
|
|
77
|
-
versions = generatedMetadata.versions;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
versions.push({ name: pkgVersion, envTarget: envTarget, gitMetadata: pkgMetadata });
|
|
81
|
-
generatedMetadata.versions = versions;
|
|
82
|
-
|
|
83
|
-
tools.logInfo(`Write metadata on ${pkgMetadataFile}`);
|
|
84
|
-
if (dryRun) {
|
|
85
|
-
tools.logInfo('DRY-RUN...');
|
|
86
|
-
console.log(generatedMetadata);
|
|
87
|
-
} else {
|
|
88
|
-
tools.writeJsonFileSync(pkgMetadataFile, generatedMetadata);
|
|
89
|
-
}
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
.catch((e) => {
|
|
93
|
-
throw e;
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
module.exports.storeMetadataBackend = (pkg, pkgVersion, pkgMetadata, isMaster, duration, envTarget) => {
|
|
98
|
-
tools.logTitle('Storing Backend metadata...');
|
|
99
|
-
|
|
100
|
-
return Promise.resolve()
|
|
101
|
-
|
|
102
|
-
.then(() => {
|
|
103
|
-
return innerPackageVersions.storeMetadata(pkg, pkgVersion, {}, duration, envTarget);
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
.then(() => {
|
|
107
|
-
if (isMaster) {
|
|
108
|
-
return storeBuildMetadata(pkg, pkgVersion, pkgMetadata, envTarget);
|
|
109
|
-
}
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
.then(() => {
|
|
113
|
-
if (isMaster) {
|
|
114
|
-
return storePipelineMetadata(pkgMetadata);
|
|
115
|
-
}
|
|
116
|
-
})
|
|
117
|
-
|
|
118
|
-
.then(() => {
|
|
119
|
-
tools.logSuccess();
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
.catch((e) => {
|
|
123
|
-
throw e;
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
const storePipelineMetadata = (pkgMetadata) => {
|
|
128
|
-
return Promise.resolve()
|
|
129
|
-
.then(() => {
|
|
130
|
-
tools.logInfo('Storing package pipeline metadata into root variables...');
|
|
131
|
-
|
|
132
|
-
const variablesFile = path.join(process.cwd(), 'variables');
|
|
133
|
-
|
|
134
|
-
let fileContent;
|
|
135
|
-
if (tools.isFileExists(variablesFile)) {
|
|
136
|
-
fileContent = tools.getFileContent(variablesFile);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (pkgMetadata && pkgMetadata.issues) {
|
|
140
|
-
const issuesList = pkgMetadata.issues.join(',');
|
|
141
|
-
tools.logInfo(`Unique issues found for this version : ${issuesList}`);
|
|
142
|
-
|
|
143
|
-
tools.logInfo(`Write metadata on ${variablesFile}`);
|
|
144
|
-
if (!dryRun) {
|
|
145
|
-
fileContent += `export ISSUES_LIST=${issuesList}\n`;
|
|
146
|
-
tools.writeFileContent(variablesFile, fileContent);
|
|
147
|
-
}
|
|
148
|
-
} else {
|
|
149
|
-
tools.logInfo('No issues found for this release');
|
|
150
|
-
}
|
|
151
|
-
})
|
|
152
16
|
|
|
153
|
-
.catch((e) => {
|
|
154
|
-
console.log(e);
|
|
155
|
-
});
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
module.exports.storeMetadataAssets = (pkg, pkgCompositeDeps) => {
|
|
159
|
-
return Promise.resolve()
|
|
160
|
-
.then(() => {
|
|
161
|
-
const pkgMetadataFile = path.join(pkg.paths.dist, 'bundles', 'package-metadata.json');
|
|
162
|
-
const pkgMetadataRootFile = path.join(pkg.paths.root, 'package-metadata.json');
|
|
163
|
-
|
|
164
|
-
const pkgMetadata = {
|
|
165
|
-
dependencies: pkgCompositeDeps,
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
tools.logInfo(`Creating ${pkgMetadataFile}`);
|
|
169
|
-
console.log(pkgMetadata);
|
|
170
|
-
|
|
171
|
-
if (!dryRun) {
|
|
172
|
-
tools.writeJsonFileSync(pkgMetadataFile, pkgMetadata);
|
|
173
|
-
tools.writeJsonFileSync(pkgMetadataRootFile, pkgMetadata);
|
|
174
|
-
}
|
|
175
|
-
})
|
|
176
|
-
|
|
177
|
-
.catch((e) => {
|
|
178
|
-
throw e;
|
|
179
|
-
});
|
|
180
|
-
};
|
|
181
17
|
|
|
182
18
|
const getPackageVersions = (module.exports.getPackageVersions = (pkg) => {
|
|
183
19
|
let npmOutput;
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// GLOBAL
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
// LOCAL
|
|
7
|
+
const tools = require('../../utils/tools');
|
|
8
|
+
const configUtils = require('../config/config-utils');
|
|
9
|
+
const gitUtils = require('../../utils/git-utils');
|
|
10
|
+
const pipelineUtils = require('../../utils/pipeline-utils');
|
|
11
|
+
|
|
12
|
+
// INNER MODULES
|
|
13
|
+
const innerRemotePackage = require('./remote-package');
|
|
14
|
+
const innerCommit = require('./commit');
|
|
15
|
+
|
|
16
|
+
// ARGS
|
|
17
|
+
const { dryRun } = tools.getArgs();
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
const getDiffsFromDeps = (fromDeps, toDeps) => {
|
|
21
|
+
const diffs = [];
|
|
22
|
+
Object.keys(fromDeps).forEach((k) => {
|
|
23
|
+
if ({}.hasOwnProperty.call(toDeps, k) && toDeps[k] !== fromDeps[k]) {
|
|
24
|
+
diffs.push({ package: k, old: fromDeps[k], new: toDeps[k] });
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// remove snapshots as they are not stored in the package metadata
|
|
29
|
+
const cleanDiffs = diffs.filter((item) => {
|
|
30
|
+
return item.old.indexOf('-snapshot') === -1 &&
|
|
31
|
+
item.new.indexOf('-snapshot') === -1 &&
|
|
32
|
+
item.package.indexOf('@eui') === -1;
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
tools.logInfo(JSON.stringify(cleanDiffs, null, 2));
|
|
36
|
+
|
|
37
|
+
return cleanDiffs;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
const getDiffBetweenBuildVersions = (pkg, fromBuildMetadata, toBuildMetadata) => {
|
|
42
|
+
tools.logInfo('Get differences between versions metadata');
|
|
43
|
+
tools.logInfo('FROM : ');
|
|
44
|
+
console.log(fromBuildMetadata);
|
|
45
|
+
|
|
46
|
+
tools.logInfo('TO : ');
|
|
47
|
+
console.log(toBuildMetadata);
|
|
48
|
+
|
|
49
|
+
if (!fromBuildMetadata) {
|
|
50
|
+
tools.logWarning('No previous metadata found for package...skipping');
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return Promise.resolve()
|
|
55
|
+
.then(() => {
|
|
56
|
+
// get differences from old in previous major release to new currently generated
|
|
57
|
+
const diffs = getDiffsFromDeps(fromBuildMetadata.dependencies, toBuildMetadata.dependencies);
|
|
58
|
+
|
|
59
|
+
// Iterate over the
|
|
60
|
+
const mappedPkg = diffs.map((item) => {
|
|
61
|
+
|
|
62
|
+
tools.logInfo(`parsing item : ${item.package}`);
|
|
63
|
+
|
|
64
|
+
const pkgItem = configUtils.packages.getPackageByNpmPkg(item.package, true);
|
|
65
|
+
let pkgName;
|
|
66
|
+
if (pkgItem) {
|
|
67
|
+
pkgName = pkgItem.name;
|
|
68
|
+
|
|
69
|
+
if (pkgItem.child) {
|
|
70
|
+
pkgName = pkgItem.parentPkg;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return { npmPkg: item.package, name: pkgName, old: item.old, new: item.new };
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
return mappedPkg;
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
.catch((e) => {
|
|
81
|
+
throw e;
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
const getDiffByEnvTarget = (pkg, envTarget) => {
|
|
88
|
+
tools.logInfo(`Getting differences for ${pkg.name} - ${envTarget}`);
|
|
89
|
+
|
|
90
|
+
return Promise.resolve()
|
|
91
|
+
.then(() => {
|
|
92
|
+
return innerRemotePackage.getPackageVersionsLatest(pkg);
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
.then((pkgVersions) => {
|
|
96
|
+
const envVersions = pkgVersions.filter((v) => {
|
|
97
|
+
return v.envTarget === envTarget
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const fromVersion = envVersions[envVersions.length - 2];
|
|
101
|
+
const toVersion = envVersions[envVersions.length - 1];
|
|
102
|
+
|
|
103
|
+
if (!fromVersion || !toVersion) {
|
|
104
|
+
tools.logWarning('WARNING: could not find versions matching for generating diff report');
|
|
105
|
+
return null;
|
|
106
|
+
} else {
|
|
107
|
+
return getDiffBetweenBuildVersions(pkg, fromVersion, toVersion);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
.catch((e) => {
|
|
113
|
+
throw e;
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
// get differences of package versions between last(current) and previous major
|
|
121
|
+
|
|
122
|
+
const generateDiffReport = module.exports.generateDiffReport = (pkg, envTarget, fromVersion, toVersion) => {
|
|
123
|
+
tools.logTitle('Generate packages differences report from previous major version...');
|
|
124
|
+
|
|
125
|
+
if (envTarget && pkg.build && pkg.build.envTargetActive) {
|
|
126
|
+
|
|
127
|
+
return Promise.resolve()
|
|
128
|
+
.then(() => {
|
|
129
|
+
return getDiffByEnvTarget(pkg, envTarget);
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
.catch((e) => {
|
|
133
|
+
throw e;
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
} else {
|
|
138
|
+
return Promise.resolve()
|
|
139
|
+
.then(() => {
|
|
140
|
+
return innerRemotePackage.getPackageVersionsLatest(pkg);
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
.then((pkgVersions) => {
|
|
144
|
+
if (fromVersion && toVersion) {
|
|
145
|
+
const fromVersionMetadata = pkgVersions.filter((v) => {
|
|
146
|
+
return v.version === fromVersion;
|
|
147
|
+
})[0];
|
|
148
|
+
|
|
149
|
+
const toVersionMetadata = pkgVersions.filter((v) => {
|
|
150
|
+
return v.version === toVersion;
|
|
151
|
+
})[0];
|
|
152
|
+
|
|
153
|
+
return getDiffBetweenBuildVersions(pkg, fromVersionMetadata, toVersionMetadata);
|
|
154
|
+
|
|
155
|
+
} else {
|
|
156
|
+
return getDiffBetweenBuildVersions(pkg, pkgVersions[pkgVersions.length - 2], pkgVersions[pkgVersions.length - 1]);
|
|
157
|
+
}
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
.catch((e) => {
|
|
161
|
+
throw e;
|
|
162
|
+
})
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
module.exports.generateDiffCommitsMetadataReport = (pkg, envTarget, fromVersion, toVersion) => {
|
|
168
|
+
tools.logTitle('Generating metadata diffs report and extract commits');
|
|
169
|
+
|
|
170
|
+
let diffsMetadata;
|
|
171
|
+
|
|
172
|
+
return Promise.resolve()
|
|
173
|
+
.then(() => {
|
|
174
|
+
return generateDiffReport(pkg, envTarget, fromVersion, toVersion);
|
|
175
|
+
})
|
|
176
|
+
|
|
177
|
+
.then((metadata) => {
|
|
178
|
+
// save for later export
|
|
179
|
+
diffsMetadata = metadata;
|
|
180
|
+
|
|
181
|
+
// processing single pkg from diffs metadata found
|
|
182
|
+
const getDiffsMetadataForPkg = (item) => {
|
|
183
|
+
const pkg = configUtils.packages.getPackage(item.name, true);
|
|
184
|
+
|
|
185
|
+
tools.logTitle(`Extract commits for pkg: ${pkg.name}`);
|
|
186
|
+
tools.logInfo('Diff metadata found: ');
|
|
187
|
+
console.log(item);
|
|
188
|
+
|
|
189
|
+
return Promise.resolve()
|
|
190
|
+
.then(() => {
|
|
191
|
+
return gitUtils.cloneAndCheckout(pkg.repository, pkg.paths.root, 'master');
|
|
192
|
+
})
|
|
193
|
+
.then(() => {
|
|
194
|
+
return gitUtils.getTags(pkg.paths.root);
|
|
195
|
+
})
|
|
196
|
+
.then((tags) => {
|
|
197
|
+
const oldTag = tags.find(t => t.indexOf(item.old) > -1);
|
|
198
|
+
const newTag = tags.find(t => t.indexOf(item.new) > -1);
|
|
199
|
+
|
|
200
|
+
tools.logInfo('Processing tags found:');
|
|
201
|
+
console.log('oldTag:', oldTag, ' - newTag:', newTag);
|
|
202
|
+
|
|
203
|
+
if (oldTag && newTag) {
|
|
204
|
+
return innerCommit.getMetadata(pkg, {fromTag: oldTag, toTag: newTag});
|
|
205
|
+
|
|
206
|
+
} else {
|
|
207
|
+
tools.logWarning('Either old tag or new tag cannot be found - commit results will be empty for this pkg');
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
.then((commitsMetadata) => {
|
|
212
|
+
return {
|
|
213
|
+
pkgName: pkg.name,
|
|
214
|
+
metadata: commitsMetadata
|
|
215
|
+
}
|
|
216
|
+
})
|
|
217
|
+
.catch((e) => {
|
|
218
|
+
tools.logWarning('ERROR found processing item :');
|
|
219
|
+
console.log(item);
|
|
220
|
+
console.log(e);
|
|
221
|
+
})
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// check if current item pkg is valid for this remote (either rootPkg or part of linkedPackages list of remote)
|
|
225
|
+
const isPkgIncluded = (pkg, item) => {
|
|
226
|
+
let isIncluded = false;
|
|
227
|
+
|
|
228
|
+
if (pkg.skeletonConfig && pkg.skeletonConfig.rootNpmPkg === item.npmPkg) {
|
|
229
|
+
isIncluded = true;
|
|
230
|
+
} else {
|
|
231
|
+
if (pkg.linkedPackages) {
|
|
232
|
+
if (pkg.linkedPackages.filter(p => p === item.name).length !== 0) {
|
|
233
|
+
isIncluded = true;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return isIncluded;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
// extracting commits for diffs metadata found / looping on promise
|
|
242
|
+
const getDiffsMetadata = async (pkg, diffs) => {
|
|
243
|
+
let metadata = [];
|
|
244
|
+
for (const item of diffs) {
|
|
245
|
+
if (isPkgIncluded(pkg, item)) {
|
|
246
|
+
tools.logInfo(`Package ${item.name} is included from parsing, processing...`);
|
|
247
|
+
const result = await getDiffsMetadataForPkg(item);
|
|
248
|
+
metadata.push(result);
|
|
249
|
+
} else {
|
|
250
|
+
tools.logInfo(`Package ${item.name} excluded from parsing`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return metadata;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// main function call
|
|
257
|
+
return getDiffsMetadata(pkg, metadata);
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
.then((pkgMetadata) => {
|
|
262
|
+
tools.logInfo('Commits metadata found :');
|
|
263
|
+
console.log(JSON.stringify(pkgMetadata, null, 2));
|
|
264
|
+
|
|
265
|
+
tools.logInfo('Processing metadata');
|
|
266
|
+
|
|
267
|
+
let commitsMetadata = [], finalIssues = [];
|
|
268
|
+
|
|
269
|
+
pkgMetadata.forEach(pm => {
|
|
270
|
+
if (pm.metadata.commits && pm.metadata.commits.length !== 0) {
|
|
271
|
+
pm.metadata.commits.forEach(c => {
|
|
272
|
+
commitsMetadata.push({ pkgName: pm.pkgName, date: c.date, hash: c.hash, subject: c.originalSubject });
|
|
273
|
+
})
|
|
274
|
+
}
|
|
275
|
+
if (pm.metadata.issues && pm.metadata.issues.length !== 0) {
|
|
276
|
+
finalIssues = [ ...finalIssues, ...pm.metadata.issues ];
|
|
277
|
+
}
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
finalIssues = tools.removeArrayDuplicates(finalIssues);
|
|
281
|
+
|
|
282
|
+
return { commits: commitsMetadata, issues: finalIssues};
|
|
283
|
+
})
|
|
284
|
+
|
|
285
|
+
.then((commitsMetadata) => {
|
|
286
|
+
tools.logInfo('Final metadata and issues generated: ');
|
|
287
|
+
console.log(JSON.stringify(commitsMetadata, null, 2));
|
|
288
|
+
|
|
289
|
+
return {
|
|
290
|
+
diffsMetadata: diffsMetadata,
|
|
291
|
+
commitsMetadata: commitsMetadata
|
|
292
|
+
}
|
|
293
|
+
})
|
|
294
|
+
|
|
295
|
+
.catch((e) => {
|
|
296
|
+
throw e;
|
|
297
|
+
})
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
module.exports.storeMetadataHistory = (pkg, metadata, newVersion) => {
|
|
302
|
+
tools.logTitle('Storing pkg history metadata');
|
|
303
|
+
|
|
304
|
+
const DEVOPS_METADATA_PATH = configUtils.global.getConfigOptions().DEVOPS_METADATA_PATH;
|
|
305
|
+
|
|
306
|
+
let historyMetadata = {};
|
|
307
|
+
|
|
308
|
+
return Promise.resolve()
|
|
309
|
+
.then(() => {
|
|
310
|
+
const historyFile = path.join(DEVOPS_METADATA_PATH, pkg.devopsHistoryMetadataFile);
|
|
311
|
+
|
|
312
|
+
var versions = [];
|
|
313
|
+
|
|
314
|
+
if (tools.isFileExists(historyFile)) {
|
|
315
|
+
historyMetadata = require(historyFile);
|
|
316
|
+
versions = historyMetadata.versions;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
versions.push({
|
|
320
|
+
name: newVersion,
|
|
321
|
+
metadata: metadata,
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
historyMetadata.versions = versions;
|
|
325
|
+
if (dryRun) {
|
|
326
|
+
tools.logWarning('DryRun...skipping');
|
|
327
|
+
} else {
|
|
328
|
+
tools.writeJsonFileSync(historyFile, historyMetadata);
|
|
329
|
+
}
|
|
330
|
+
})
|
|
331
|
+
.catch((e) => {
|
|
332
|
+
throw e;
|
|
333
|
+
})
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
module.exports.generatePipelineIssuesList = (issuesList) => {
|
|
338
|
+
return Promise.resolve()
|
|
339
|
+
// storing issuesList gathered into gitlab variables for post CI processing
|
|
340
|
+
.then(() => {
|
|
341
|
+
tools.logInfo('Extracting Jira issues list to gitlab variables');
|
|
342
|
+
|
|
343
|
+
if (dryRun) {
|
|
344
|
+
tools.logWarning('DryRun...skipping');
|
|
345
|
+
console.log(`export ISSUES_LIST=${issuesList.join(',')}\n`);
|
|
346
|
+
} else {
|
|
347
|
+
return pipelineUtils.setVariables(process.cwd(), `export ISSUES_LIST=${issuesList.join(',')}\n`);
|
|
348
|
+
}
|
|
349
|
+
})
|
|
350
|
+
.catch((e) => {
|
|
351
|
+
throw e;
|
|
352
|
+
})
|
|
353
|
+
}
|