@clickview/ship-it 0.0.49 → 0.0.51
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/config.json +7 -1
- package/lib/config.json +7 -1
- package/lib/src/api-clients/git-lab/GitLabApiClient.js +30 -1
- package/lib/src/api-clients/index.js +1 -0
- package/lib/src/api-clients/slack/SlackApiClient.js +27 -25
- package/lib/src/api-clients/team-city/TeamCityApiClient.js +1 -1
- package/lib/src/api-clients/trello/TrelloApiClient.js +1 -1
- package/lib/src/commands/BumpPackagesCommand.js +1 -1
- package/lib/src/commands/CheckReleaseReadyCommand.js +1 -1
- package/lib/src/commands/ConfigureProjectsCommand.js +1 -1
- package/lib/src/commands/CreateBranchCommand.js +1 -1
- package/lib/src/commands/CreateHotfixCommand.js +1 -1
- package/lib/src/commands/CreateMergeRequestCommand.js +1 -1
- package/lib/src/commands/CreateNotesAuditCommand.js +1 -1
- package/lib/src/commands/CreateReleaseNotesCommand.js +1 -1
- package/lib/src/commands/CreateTrelloCardsCommand.js +1 -1
- package/lib/src/commands/InstallPackagesCommand.js +1 -1
- package/lib/src/commands/JiraTicketsStatusCommand.js +1 -41
- package/lib/src/commands/ListProjectsCommand.js +1 -1
- package/lib/src/commands/ReleaseCommand.js +1 -1
- package/lib/src/commands/StartProjectBuildsCommand.js +1 -1
- package/lib/src/commands/StatusCommand.js +1 -1
- package/lib/src/commands/TagMasterCommand.js +1 -1
- package/lib/src/commands/ToolingReleaseCommand.js +1 -1
- package/lib/src/commands/UpdateDescriptionCommand.js +1 -1
- package/lib/src/commands/ValidateMergeRequestCommand.js +1 -1
- package/lib/src/commands/VersionCommand.js +1 -1
- package/lib/src/commands/index.js +2 -0
- package/lib/src/constants/CommandTypeMapping.js +2 -0
- package/lib/src/inversify.config.js +7 -0
- package/lib/src/services/GitLabService.js +12 -4
- package/lib/src/services/SlackService.js +3 -7
- package/lib/src/services/TrelloService.js +1 -1
- package/lib/src/services/index.js +1 -0
- package/lib/src/startup/AddMilestoneCommand.js +1 -1
- package/lib/src/startup/GetAction.js +1 -1
- package/lib/src/startup/SetupCommands.js +3 -1
- package/lib/src/tasks/BumpPackagesTask.js +1 -1
- package/lib/src/tasks/BumpVersionTxtTask.js +1 -1
- package/lib/src/tasks/ChangeMilestoneTask.js +1 -1
- package/lib/src/tasks/CheckReleaseReadyTask.js +29 -17
- package/lib/src/tasks/CreateBranchTask.js +1 -1
- package/lib/src/tasks/CreateHotfixTask.js +1 -1
- package/lib/src/tasks/CreateMergeRequestTask.js +1 -1
- package/lib/src/tasks/CreateNotesAuditTask.js +40 -16
- package/lib/src/tasks/CreateReleaseNotesTask.js +1 -1
- package/lib/src/tasks/InstallPackagesTask.js +1 -1
- package/lib/src/tasks/ListProjectsTask.js +1 -1
- package/lib/src/tasks/PopulateTrelloBoardTask.js +1 -1
- package/lib/src/tasks/StartMonorepoBuildTask.js +20 -26
- package/lib/src/tasks/StartProjectBuildsTask.js +1 -1
- package/lib/src/tasks/TagMasterTask.js +1 -1
- package/lib/src/tasks/UpdateMergeRequestDescriptionTask.js +1 -1
- package/lib/src/tasks/ValidateCommitsTask.js +1 -1
- package/lib/src/tasks/ValidateDescriptionsTask.js +1 -1
- package/lib/src/tasks/ValidateMergeRequestTask.js +1 -1
- package/lib/src/tasks/ValidateTask.js +23 -20
- package/lib/src/tasks/VersionTask.js +1 -1
- package/lib/src/tasks/configure-projects/AddApprovalRulesTask.js +1 -1
- package/lib/src/tasks/configure-projects/CreateToolingBranchTask.js +1 -1
- package/lib/src/tasks/configure-projects/EnsureApprovalRulesTask.js +1 -1
- package/lib/src/tasks/configure-projects/primitives/BaseConfigureProjectsTask.js +2 -2
- package/lib/src/tasks/index.js +2 -0
- package/lib/src/types.js +7 -0
- package/lib/src/utils/Descriptions.js +38 -10
- package/package.json +6 -5
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -89,7 +89,7 @@ var SlackService = /** @class */ (function () {
|
|
|
89
89
|
SlackService.prototype.sendSlackStatusMessage = function (options) {
|
|
90
90
|
var _a, _b;
|
|
91
91
|
return __awaiter(this, void 0, void 0, function () {
|
|
92
|
-
var threadTs, _c,
|
|
92
|
+
var threadTs, _c, authorList, userList, mentionUserString;
|
|
93
93
|
return __generator(this, function (_d) {
|
|
94
94
|
switch (_d.label) {
|
|
95
95
|
case 0: return [4 /*yield*/, this.apiClient.findLatestMessageTs(options.threadLabel)];
|
|
@@ -105,8 +105,7 @@ var SlackService = /** @class */ (function () {
|
|
|
105
105
|
threadTs = _c;
|
|
106
106
|
if (!options.statusMessage)
|
|
107
107
|
options.statusMessage = options.statusCleanMessage;
|
|
108
|
-
|
|
109
|
-
return [4 /*yield*/, this.apiClient.replyInThread(formatedMessage, threadTs)];
|
|
108
|
+
return [4 /*yield*/, this.apiClient.replyInThread(options.statusMessage, threadTs, options.sendAsFile)];
|
|
110
109
|
case 5:
|
|
111
110
|
_d.sent();
|
|
112
111
|
if (!((_b = options.emailList) === null || _b === void 0 ? void 0 : _b.length))
|
|
@@ -129,9 +128,6 @@ var SlackService = /** @class */ (function () {
|
|
|
129
128
|
SlackService.prototype.formatMentionUsers = function (usernames) {
|
|
130
129
|
return usernames.map(function (username) { return "<@".concat(username, ">"); }).join(' ');
|
|
131
130
|
};
|
|
132
|
-
SlackService.prototype.createTextFileMessage = function (fileContent) {
|
|
133
|
-
return "```\n".concat(fileContent, "\n```");
|
|
134
|
-
};
|
|
135
131
|
SlackService = __decorate([
|
|
136
132
|
(0, inversify_1.injectable)(),
|
|
137
133
|
__param(0, (0, inversify_1.inject)(types_1.API_CLIENTS.SlackApiClient)),
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./GitLabService"), exports);
|
|
18
|
+
__exportStar(require("./JiraService"), exports);
|
|
18
19
|
__exportStar(require("./TeamCityService"), exports);
|
|
19
20
|
__exportStar(require("./TrelloService"), exports);
|
|
20
21
|
__exportStar(require("./SlackService"), exports);
|
|
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
14
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
18
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
14
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
18
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
29
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
|
@@ -60,8 +60,10 @@ function setupCommands(program, container) {
|
|
|
60
60
|
addMilestoneCommand('create-branches', 'Create release branches for all projects that are part of a milestone');
|
|
61
61
|
addMilestoneCommand('create-mrs', 'Create merge requests for all projects that are part of a milestone');
|
|
62
62
|
addMilestoneCommand('create-notes-audit', 'Builds a spreadsheet of all the customer changes and who wrote them.');
|
|
63
|
+
addMilestoneCommand('testing-status', 'Fetches Jira ticket status for a milestone and posts results to Slack.');
|
|
63
64
|
addMilestoneCommand('tag-master', 'Tags master for all release MRs that are part of a milestone');
|
|
64
65
|
addMilestoneCommand('create-trello-cards', 'Creates the cards on the ship-it trello board for all projects that are part of a milestone');
|
|
66
|
+
addMilestoneCommand('check-release-ready', 'Checks for all pre-release tasks to ensure release is ready to be pushed');
|
|
65
67
|
addMilestoneCommand('update-description', 'Recreates descriptions for release MRs');
|
|
66
68
|
program.command('status')
|
|
67
69
|
.description('Get the status of all MRs in a milestone')
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -62,31 +62,34 @@ var CheckReleaseReadyTask = /** @class */ (function () {
|
|
|
62
62
|
}
|
|
63
63
|
CheckReleaseReadyTask.prototype.run = function (options) {
|
|
64
64
|
return __awaiter(this, void 0, void 0, function () {
|
|
65
|
-
var projects, deployDependenciesTasks, beforeReleaseTasks, afterReleaseTasks, sqlSections, _i, projects_1, project, branchName, mergeRequest, deployDependencies, beforeTasks, afterTasks, beforeSQL, afterSQL, milestoneLabel, taskSummary, sqlMessage;
|
|
66
|
-
return __generator(this, function (
|
|
67
|
-
switch (
|
|
65
|
+
var projects, deployDependenciesTasks, beforeReleaseTasks, afterReleaseTasks, sqlSections, failedProjects, _i, projects_1, project, branchName, mergeRequest, deployDependencies, beforeTasks, afterTasks, beforeSQL, afterSQL, _a, failedProjects_1, _b, project, branch, milestoneLabel, taskSummary, sqlMessage;
|
|
66
|
+
return __generator(this, function (_c) {
|
|
67
|
+
switch (_c.label) {
|
|
68
68
|
case 0:
|
|
69
69
|
Logger_1.Logger.logTask('Checking status of the current release...');
|
|
70
70
|
return [4 /*yield*/, this.service.getReleaseProjects(options.milestone, options.projectIds, options.omittedProjectIds, options.sourceBranch)];
|
|
71
71
|
case 1:
|
|
72
|
-
projects =
|
|
72
|
+
projects = _c.sent();
|
|
73
73
|
deployDependenciesTasks = [];
|
|
74
74
|
beforeReleaseTasks = [];
|
|
75
75
|
afterReleaseTasks = [];
|
|
76
76
|
sqlSections = [];
|
|
77
|
+
failedProjects = [];
|
|
77
78
|
_i = 0, projects_1 = projects;
|
|
78
|
-
|
|
79
|
+
_c.label = 2;
|
|
79
80
|
case 2:
|
|
80
81
|
if (!(_i < projects_1.length)) return [3 /*break*/, 6];
|
|
81
82
|
project = projects_1[_i];
|
|
82
83
|
return [4 /*yield*/, this.service.getNextBranchInfo(project.id, options.version)];
|
|
83
84
|
case 3:
|
|
84
|
-
branchName = (
|
|
85
|
+
branchName = (_c.sent()).branchName;
|
|
85
86
|
return [4 /*yield*/, this.service.getMergeRequest(project.id, branchName)];
|
|
86
87
|
case 4:
|
|
87
|
-
mergeRequest =
|
|
88
|
-
if (!mergeRequest)
|
|
89
|
-
|
|
88
|
+
mergeRequest = _c.sent();
|
|
89
|
+
if (!mergeRequest) {
|
|
90
|
+
failedProjects.push([project.title, branchName]);
|
|
91
|
+
return [3 /*break*/, 5];
|
|
92
|
+
}
|
|
90
93
|
deployDependencies = utils_1.Descriptions.getDescriptionSection('Dependencies', mergeRequest);
|
|
91
94
|
beforeTasks = utils_1.Descriptions.getDescriptionSection('BeforeRelease', mergeRequest, 'Tasks');
|
|
92
95
|
afterTasks = utils_1.Descriptions.getDescriptionSection('AfterRelease', mergeRequest, 'Tasks');
|
|
@@ -102,16 +105,25 @@ var CheckReleaseReadyTask = /** @class */ (function () {
|
|
|
102
105
|
sqlSections.push({ project: project.title, mr: mergeRequest.title, content: beforeSQL, phase: 'BeforeRelease' });
|
|
103
106
|
if (afterSQL)
|
|
104
107
|
sqlSections.push({ project: project.title, mr: mergeRequest.title, content: afterSQL, phase: 'AfterRelease' });
|
|
105
|
-
|
|
108
|
+
_c.label = 5;
|
|
106
109
|
case 5:
|
|
107
110
|
_i++;
|
|
108
111
|
return [3 /*break*/, 2];
|
|
109
112
|
case 6:
|
|
113
|
+
if (failedProjects.length > 0) {
|
|
114
|
+
Logger_1.Logger.logError('Failed to find release MR for the following projects:');
|
|
115
|
+
for (_a = 0, failedProjects_1 = failedProjects; _a < failedProjects_1.length; _a++) {
|
|
116
|
+
_b = failedProjects_1[_a], project = _b[0], branch = _b[1];
|
|
117
|
+
Logger_1.Logger.logError("- ".concat(project, " on branch ").concat(branch));
|
|
118
|
+
}
|
|
119
|
+
return [2 /*return*/, false];
|
|
120
|
+
}
|
|
110
121
|
this.logSection('====== ALL DEPLOY DEPENDENCIES ======', deployDependenciesTasks);
|
|
111
122
|
this.logSection('====== ALL BEFORE RELEASE TASKS ======', beforeReleaseTasks);
|
|
112
123
|
this.logSection('====== ALL AFTER RELEASE TASKS ======', afterReleaseTasks);
|
|
113
124
|
this.logSection('====== ALL SQL CHANGES (with context) ======', sqlSections, function (item) { return item.phase === 'BeforeRelease' ? 'Before Release' : 'After Release'; });
|
|
114
|
-
if (!options.slackNotifier)
|
|
125
|
+
if (!options.slackNotifier)
|
|
126
|
+
return [2 /*return*/, true];
|
|
115
127
|
milestoneLabel = "".concat(options.milestone, " Release");
|
|
116
128
|
taskSummary = [
|
|
117
129
|
this.formatSection('Deploy Dependencies', deployDependenciesTasks),
|
|
@@ -121,13 +133,13 @@ var CheckReleaseReadyTask = /** @class */ (function () {
|
|
|
121
133
|
if (!taskSummary) return [3 /*break*/, 8];
|
|
122
134
|
return [4 /*yield*/, this.slackService.sendSlackStatusMessage({
|
|
123
135
|
emailList: [],
|
|
124
|
-
threadLabel: "".concat(milestoneLabel, " Tasks
|
|
136
|
+
threadLabel: "".concat(milestoneLabel, " Tasks and Dependencies"),
|
|
125
137
|
statusMessage: taskSummary,
|
|
126
138
|
statusCleanMessage: 'No Before/After Release Tasks found!'
|
|
127
139
|
})];
|
|
128
140
|
case 7:
|
|
129
|
-
|
|
130
|
-
|
|
141
|
+
_c.sent();
|
|
142
|
+
_c.label = 8;
|
|
131
143
|
case 8:
|
|
132
144
|
sqlMessage = this.formatSection('SQL Changes', sqlSections, function (item) { return item.phase === 'BeforeRelease' ? 'Before Release' : 'After Release'; });
|
|
133
145
|
if (!sqlMessage) return [3 /*break*/, 10];
|
|
@@ -139,8 +151,8 @@ var CheckReleaseReadyTask = /** @class */ (function () {
|
|
|
139
151
|
sendAsFile: true
|
|
140
152
|
})];
|
|
141
153
|
case 9:
|
|
142
|
-
|
|
143
|
-
|
|
154
|
+
_c.sent();
|
|
155
|
+
_c.label = 10;
|
|
144
156
|
case 10: return [2 /*return*/, true];
|
|
145
157
|
}
|
|
146
158
|
});
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -61,24 +61,26 @@ var services_1 = require("../services");
|
|
|
61
61
|
var utils_1 = require("../utils");
|
|
62
62
|
var Csv_1 = require("../utils/Csv");
|
|
63
63
|
var CreateNotesAuditTask = /** @class */ (function () {
|
|
64
|
-
function CreateNotesAuditTask(service) {
|
|
64
|
+
function CreateNotesAuditTask(service, slackService) {
|
|
65
65
|
this.service = service;
|
|
66
|
+
this.slackService = slackService;
|
|
66
67
|
}
|
|
67
68
|
CreateNotesAuditTask.prototype.run = function (options) {
|
|
69
|
+
var _a;
|
|
68
70
|
return __awaiter(this, void 0, void 0, function () {
|
|
69
|
-
var projects, projectTestingNotes, _i, projects_1, project,
|
|
70
|
-
return __generator(this, function (
|
|
71
|
-
switch (
|
|
71
|
+
var projects, projectTestingNotes, _i, projects_1, project, _b, _c, mr, description, outputPath, error_1, csv, fileContent, threadLabel, threadTs, _d;
|
|
72
|
+
return __generator(this, function (_e) {
|
|
73
|
+
switch (_e.label) {
|
|
72
74
|
case 0:
|
|
73
75
|
utils_1.Logger.logTask('Creating release notes audit');
|
|
74
76
|
return [4 /*yield*/, this.service.getReleaseProjects(options.milestone, options.projectIds, options.omittedProjectIds, options.sourceBranch)];
|
|
75
77
|
case 1:
|
|
76
|
-
projects =
|
|
78
|
+
projects = _e.sent();
|
|
77
79
|
projectTestingNotes = [];
|
|
78
80
|
for (_i = 0, projects_1 = projects; _i < projects_1.length; _i++) {
|
|
79
81
|
project = projects_1[_i];
|
|
80
|
-
for (
|
|
81
|
-
mr = _b
|
|
82
|
+
for (_b = 0, _c = project.mergeRequests; _b < _c.length; _b++) {
|
|
83
|
+
mr = _c[_b];
|
|
82
84
|
description = '';
|
|
83
85
|
if (project.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID) {
|
|
84
86
|
description = utils_1.Descriptions.getMonorepoDescriptionSection('CustomerChanges', mr);
|
|
@@ -102,18 +104,18 @@ var CreateNotesAuditTask = /** @class */ (function () {
|
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
106
|
outputPath = path_1.default.resolve("./dist/".concat(options.milestone));
|
|
105
|
-
|
|
107
|
+
_e.label = 2;
|
|
106
108
|
case 2:
|
|
107
|
-
|
|
109
|
+
_e.trys.push([2, 4, , 6]);
|
|
108
110
|
return [4 /*yield*/, fs_extra_1.default.access(outputPath)];
|
|
109
111
|
case 3:
|
|
110
|
-
|
|
112
|
+
_e.sent();
|
|
111
113
|
return [3 /*break*/, 6];
|
|
112
114
|
case 4:
|
|
113
|
-
error_1 =
|
|
115
|
+
error_1 = _e.sent();
|
|
114
116
|
return [4 /*yield*/, fs_extra_1.default.ensureDir(outputPath)];
|
|
115
117
|
case 5:
|
|
116
|
-
|
|
118
|
+
_e.sent();
|
|
117
119
|
return [3 /*break*/, 6];
|
|
118
120
|
case 6:
|
|
119
121
|
csv = new Csv_1.CsvFile({
|
|
@@ -122,10 +124,30 @@ var CreateNotesAuditTask = /** @class */ (function () {
|
|
|
122
124
|
});
|
|
123
125
|
return [4 /*yield*/, csv.create(projectTestingNotes)];
|
|
124
126
|
case 7:
|
|
125
|
-
|
|
127
|
+
_e.sent();
|
|
126
128
|
utils_1.Logger.logMessage('Created file');
|
|
127
129
|
utils_1.Logger.logInfo("".concat(path_1.default.resolve(outputPath), "\n"));
|
|
128
|
-
return [
|
|
130
|
+
if (!options.slackNotifier) return [3 /*break*/, 14];
|
|
131
|
+
return [4 /*yield*/, csv.read()];
|
|
132
|
+
case 8:
|
|
133
|
+
fileContent = (_e.sent()).toString();
|
|
134
|
+
threadLabel = "".concat(options.milestone, " Notes Audit");
|
|
135
|
+
return [4 /*yield*/, this.slackService.findLatestMessageTs(threadLabel)];
|
|
136
|
+
case 9:
|
|
137
|
+
if (!((_a = _e.sent()) !== null && _a !== void 0)) return [3 /*break*/, 10];
|
|
138
|
+
_d = _a;
|
|
139
|
+
return [3 /*break*/, 12];
|
|
140
|
+
case 10: return [4 /*yield*/, this.slackService.sendMessageToChannel(threadLabel)];
|
|
141
|
+
case 11:
|
|
142
|
+
_d = (_e.sent()).ts;
|
|
143
|
+
_e.label = 12;
|
|
144
|
+
case 12:
|
|
145
|
+
threadTs = _d;
|
|
146
|
+
return [4 /*yield*/, this.slackService.uploadFileToChannel(fileContent, "".concat(options.milestone, " Notes Audit.csv"), threadTs)];
|
|
147
|
+
case 13:
|
|
148
|
+
_e.sent();
|
|
149
|
+
_e.label = 14;
|
|
150
|
+
case 14: return [2 /*return*/, true];
|
|
129
151
|
}
|
|
130
152
|
});
|
|
131
153
|
});
|
|
@@ -133,7 +155,9 @@ var CreateNotesAuditTask = /** @class */ (function () {
|
|
|
133
155
|
CreateNotesAuditTask = __decorate([
|
|
134
156
|
(0, inversify_1.injectable)(),
|
|
135
157
|
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
136
|
-
|
|
158
|
+
__param(1, (0, inversify_1.inject)(types_1.SERVICES.SlackService)),
|
|
159
|
+
__metadata("design:paramtypes", [services_1.GitLabService,
|
|
160
|
+
services_1.SlackService])
|
|
137
161
|
], CreateNotesAuditTask);
|
|
138
162
|
return CreateNotesAuditTask;
|
|
139
163
|
}());
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -20,7 +20,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
20
20
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
21
21
|
function step(op) {
|
|
22
22
|
if (f) throw new TypeError("Generator is already executing.");
|
|
23
|
-
while (_) try {
|
|
23
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
24
24
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
25
25
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
26
26
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -54,20 +54,17 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var utils_1 = require("../utils");
|
|
55
55
|
var services_1 = require("../services");
|
|
56
56
|
var types_1 = require("../types");
|
|
57
|
-
var TeamCityBuildIDs_1 = require("../constants/TeamCityBuildIDs");
|
|
58
|
-
var MonorepoProjectNames_1 = require("../constants/MonorepoProjectNames");
|
|
59
57
|
var StartMonorepoBuildTask = /** @class */ (function () {
|
|
60
|
-
function StartMonorepoBuildTask(
|
|
61
|
-
this.teamCityService = teamCityService;
|
|
58
|
+
function StartMonorepoBuildTask(gitLabService) {
|
|
62
59
|
this.gitLabService = gitLabService;
|
|
63
60
|
}
|
|
64
61
|
StartMonorepoBuildTask.prototype.run = function (options) {
|
|
65
62
|
return __awaiter(this, void 0, void 0, function () {
|
|
66
|
-
var branchName,
|
|
63
|
+
var branchName, stage, pipeline, err_1;
|
|
67
64
|
return __generator(this, function (_a) {
|
|
68
65
|
switch (_a.label) {
|
|
69
66
|
case 0:
|
|
70
|
-
utils_1.Logger.logTask('Starting Monorepo
|
|
67
|
+
utils_1.Logger.logTask('Starting Monorepo pipeline in GitLab');
|
|
71
68
|
return [4 /*yield*/, this.gitLabService.getReleaseBranchNameMilestone(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.milestone)];
|
|
72
69
|
case 1:
|
|
73
70
|
branchName = _a.sent();
|
|
@@ -75,34 +72,31 @@ var StartMonorepoBuildTask = /** @class */ (function () {
|
|
|
75
72
|
utils_1.Logger.logError("Monorepo release branch with milestone \"".concat(options.milestone, "\" was not found."));
|
|
76
73
|
return [2 /*return*/, false];
|
|
77
74
|
}
|
|
78
|
-
|
|
75
|
+
stage = branchName.startsWith('hotfix/') ? 'prd' : 'rc';
|
|
76
|
+
_a.label = 2;
|
|
79
77
|
case 2:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
// Find all relevant monorepo project package names in release
|
|
86
|
-
if (MonorepoProjectNames_1.MonorepoProjectNames[project.id]) {
|
|
87
|
-
packageNames.push(MonorepoProjectNames_1.MonorepoProjectNames[project.id]);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
utils_1.Logger.logMessage("List of monorepo projects found in release: ".concat(String(packageNames)));
|
|
91
|
-
return [4 /*yield*/, this.teamCityService.startCustomBuild(bulkBuildID, branchName, String(packageNames))];
|
|
78
|
+
_a.trys.push([2, 4, , 5]);
|
|
79
|
+
return [4 /*yield*/, this.gitLabService.triggerPipeline(utils_1.ProjectIds.MONOREPO_PROJECT_ID, branchName, {
|
|
80
|
+
project: 'all',
|
|
81
|
+
stage: stage
|
|
82
|
+
})];
|
|
92
83
|
case 3:
|
|
93
|
-
|
|
94
|
-
utils_1.Logger.logSuccess("Successfully
|
|
84
|
+
pipeline = _a.sent();
|
|
85
|
+
utils_1.Logger.logSuccess("Successfully triggered monorepo pipeline. View progress here: ".concat(pipeline.web_url));
|
|
95
86
|
return [2 /*return*/, true];
|
|
87
|
+
case 4:
|
|
88
|
+
err_1 = _a.sent();
|
|
89
|
+
utils_1.Logger.logError("Failed to trigger monorepo pipeline: ".concat(err_1.message));
|
|
90
|
+
return [2 /*return*/, false];
|
|
91
|
+
case 5: return [2 /*return*/];
|
|
96
92
|
}
|
|
97
93
|
});
|
|
98
94
|
});
|
|
99
95
|
};
|
|
100
96
|
StartMonorepoBuildTask = __decorate([
|
|
101
97
|
(0, inversify_1.injectable)(),
|
|
102
|
-
__param(0, (0, inversify_1.inject)(types_1.SERVICES.
|
|
103
|
-
|
|
104
|
-
__metadata("design:paramtypes", [services_1.TeamCityService,
|
|
105
|
-
services_1.GitLabService])
|
|
98
|
+
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
99
|
+
__metadata("design:paramtypes", [services_1.GitLabService])
|
|
106
100
|
], StartMonorepoBuildTask);
|
|
107
101
|
return StartMonorepoBuildTask;
|
|
108
102
|
}());
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|
|
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
26
26
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
27
|
function step(op) {
|
|
28
28
|
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
30
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
31
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
32
|
switch (op[0]) {
|