@clickview/ship-it 0.0.48 → 0.0.50
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/.claude/settings.local.json +10 -0
- package/config.json +5 -0
- package/dist/W2/W2 Notes Audit.csv +57 -0
- package/lib/config.json +5 -0
- package/lib/src/api-clients/git-lab/GitLabApiClient.js +1 -1
- package/lib/src/api-clients/index.js +1 -0
- package/lib/src/api-clients/jira/JiraApiClient.js +105 -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 +33 -0
- package/lib/src/commands/ListProjectsCommand.js +1 -1
- package/lib/src/commands/ReleaseCommand.js +11 -9
- 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/constants/SlackUserEmailList.js +8 -0
- package/lib/src/inversify.config.js +7 -0
- package/lib/src/services/GitLabService.js +9 -4
- package/lib/src/services/JiraService.js +34 -0
- 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 +72 -123
- 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/JiraTicketsStatusTask.js +180 -0
- package/lib/src/tasks/ListProjectsTask.js +1 -1
- package/lib/src/tasks/PopulateTrelloBoardTask.js +1 -1
- package/lib/src/tasks/StartMonorepoBuildTask.js +1 -1
- 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]) {
|
|
@@ -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]) {
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
24
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
25
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
26
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
|
+
function step(op) {
|
|
28
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
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
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
|
+
switch (op[0]) {
|
|
33
|
+
case 0: case 1: t = op; break;
|
|
34
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
35
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
36
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
37
|
+
default:
|
|
38
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
39
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
40
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
41
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
42
|
+
if (t[2]) _.ops.pop();
|
|
43
|
+
_.trys.pop(); continue;
|
|
44
|
+
}
|
|
45
|
+
op = body.call(thisArg, _);
|
|
46
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
47
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
51
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
52
|
+
if (ar || !(i in from)) {
|
|
53
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
54
|
+
ar[i] = from[i];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
58
|
+
};
|
|
59
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
60
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
61
|
+
};
|
|
62
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
+
exports.JiraTicketsStatusTask = void 0;
|
|
64
|
+
require("reflect-metadata");
|
|
65
|
+
var inversify_1 = require("inversify");
|
|
66
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
67
|
+
var services_1 = require("../services");
|
|
68
|
+
var utils_1 = require("../utils");
|
|
69
|
+
var types_1 = require("../types");
|
|
70
|
+
var IN_PROGRESS_STATUSES = [
|
|
71
|
+
'To Do', 'Re-Triage', 'Reopened', 'Decision Needed', 'Open',
|
|
72
|
+
'Backlog', 'On Hold', 'In Progress', 'Merge Requested', 'Linked'
|
|
73
|
+
];
|
|
74
|
+
var DEV_TESTING_STATUSES = __spreadArray(__spreadArray([], IN_PROGRESS_STATUSES, true), [
|
|
75
|
+
'Awaiting Testing'
|
|
76
|
+
], false);
|
|
77
|
+
var JiraTicketsStatusTask = /** @class */ (function () {
|
|
78
|
+
function JiraTicketsStatusTask(jiraService, slackService) {
|
|
79
|
+
this.jiraService = jiraService;
|
|
80
|
+
this.slackService = slackService;
|
|
81
|
+
}
|
|
82
|
+
JiraTicketsStatusTask.prototype.run = function (options) {
|
|
83
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
84
|
+
var milestone, slackNotifier, statusList, devTestingStatusList;
|
|
85
|
+
return __generator(this, function (_a) {
|
|
86
|
+
switch (_a.label) {
|
|
87
|
+
case 0:
|
|
88
|
+
utils_1.Logger.logTask('Fetching Jira ticket status');
|
|
89
|
+
milestone = options.milestone, slackNotifier = options.slackNotifier;
|
|
90
|
+
statusList = IN_PROGRESS_STATUSES.map(function (s) { return "\"".concat(s, "\""); }).join(', ');
|
|
91
|
+
devTestingStatusList = DEV_TESTING_STATUSES.map(function (s) { return "\"".concat(s, "\""); }).join(', ');
|
|
92
|
+
return [4 /*yield*/, this.processTicketGroup({
|
|
93
|
+
label: "".concat(milestone, " To Do and In Progress Tickets"),
|
|
94
|
+
cleanMessage: 'No outstanding tickets!',
|
|
95
|
+
jql: "\"Release\" = \"".concat(milestone, "\" AND status IN (").concat(statusList, ") ORDER BY assignee ASC"),
|
|
96
|
+
slackNotifier: slackNotifier
|
|
97
|
+
})];
|
|
98
|
+
case 1:
|
|
99
|
+
_a.sent();
|
|
100
|
+
return [4 /*yield*/, this.processTicketGroup({
|
|
101
|
+
label: "".concat(milestone, " No Requires Testing Tickets"),
|
|
102
|
+
cleanMessage: 'All tickets have testing status set!',
|
|
103
|
+
jql: "\"Release\" = \"".concat(milestone, "\" AND \"Requires Testing[Radio Buttons]\" = EMPTY ORDER BY assignee ASC"),
|
|
104
|
+
slackNotifier: slackNotifier
|
|
105
|
+
})];
|
|
106
|
+
case 2:
|
|
107
|
+
_a.sent();
|
|
108
|
+
return [4 /*yield*/, this.processTicketGroup({
|
|
109
|
+
label: "".concat(milestone, " Requires Dev Testing Tickets"),
|
|
110
|
+
cleanMessage: 'No dev testing tickets outstanding!',
|
|
111
|
+
jql: "\"Release\" = \"".concat(milestone, "\" AND \"Requires Testing[Radio Buttons]\" = \"Yes - Dev\" AND status IN (").concat(devTestingStatusList, ") ORDER BY assignee ASC"),
|
|
112
|
+
slackNotifier: slackNotifier
|
|
113
|
+
})];
|
|
114
|
+
case 3:
|
|
115
|
+
_a.sent();
|
|
116
|
+
return [2 /*return*/, true];
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
JiraTicketsStatusTask.prototype.processTicketGroup = function (options) {
|
|
122
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
123
|
+
var label, cleanMessage, jql, slackNotifier, issues, _a, message, emailList;
|
|
124
|
+
return __generator(this, function (_b) {
|
|
125
|
+
switch (_b.label) {
|
|
126
|
+
case 0:
|
|
127
|
+
label = options.label, cleanMessage = options.cleanMessage, jql = options.jql, slackNotifier = options.slackNotifier;
|
|
128
|
+
utils_1.Logger.logMessage("\n".concat(label));
|
|
129
|
+
return [4 /*yield*/, this.jiraService.searchIssues(jql)];
|
|
130
|
+
case 1:
|
|
131
|
+
issues = _b.sent();
|
|
132
|
+
_a = this.buildMessage(issues), message = _a.message, emailList = _a.emailList;
|
|
133
|
+
if (!issues.length) {
|
|
134
|
+
utils_1.Logger.logSuccess(cleanMessage);
|
|
135
|
+
}
|
|
136
|
+
if (!slackNotifier)
|
|
137
|
+
return [2 /*return*/];
|
|
138
|
+
return [4 /*yield*/, this.slackService.sendSlackStatusMessage({
|
|
139
|
+
emailList: emailList,
|
|
140
|
+
threadLabel: label,
|
|
141
|
+
statusMessage: message,
|
|
142
|
+
statusCleanMessage: cleanMessage
|
|
143
|
+
})];
|
|
144
|
+
case 2:
|
|
145
|
+
_b.sent();
|
|
146
|
+
return [2 /*return*/];
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
JiraTicketsStatusTask.prototype.buildMessage = function (issues) {
|
|
152
|
+
var grouped = lodash_1.default.groupBy(issues, function (issue) { var _a; return (_a = issue.assigneeDisplayName) !== null && _a !== void 0 ? _a : 'Unassigned'; });
|
|
153
|
+
var emailList = [];
|
|
154
|
+
var message = '';
|
|
155
|
+
for (var assignee in grouped) {
|
|
156
|
+
if (assignee !== 'Unassigned') {
|
|
157
|
+
var email = this.slackService.convertToEmailFormat(assignee);
|
|
158
|
+
if (email)
|
|
159
|
+
emailList.push(email);
|
|
160
|
+
}
|
|
161
|
+
utils_1.Logger.logMessage(assignee);
|
|
162
|
+
message += "".concat(assignee, ":\n");
|
|
163
|
+
for (var _i = 0, _a = grouped[assignee]; _i < _a.length; _i++) {
|
|
164
|
+
var issue = _a[_i];
|
|
165
|
+
utils_1.Logger.logMessage("- ".concat(issue.key, ": ").concat(issue.summary, " (").concat(issue.url, ")"));
|
|
166
|
+
message += "- ".concat(issue.key, ": ").concat(issue.summary, " (").concat(issue.url, ")\n");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return { message: message, emailList: emailList };
|
|
170
|
+
};
|
|
171
|
+
JiraTicketsStatusTask = __decorate([
|
|
172
|
+
(0, inversify_1.injectable)(),
|
|
173
|
+
__param(0, (0, inversify_1.inject)(types_1.SERVICES.JiraService)),
|
|
174
|
+
__param(1, (0, inversify_1.inject)(types_1.SERVICES.SlackService)),
|
|
175
|
+
__metadata("design:paramtypes", [services_1.JiraService,
|
|
176
|
+
services_1.SlackService])
|
|
177
|
+
], JiraTicketsStatusTask);
|
|
178
|
+
return JiraTicketsStatusTask;
|
|
179
|
+
}());
|
|
180
|
+
exports.JiraTicketsStatusTask = JiraTicketsStatusTask;
|
|
@@ -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]) {
|
|
@@ -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]) {
|
|
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
38
|
function step(op) {
|
|
39
39
|
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
-
while (_) try {
|
|
40
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
41
|
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;
|
|
42
42
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
43
|
switch (op[0]) {
|
|
@@ -216,9 +216,9 @@ var ValidateTask = /** @class */ (function () {
|
|
|
216
216
|
};
|
|
217
217
|
ValidateTask.prototype.notReadyMrsLog = function (projects, milestone, slackNotifier, nextMilestone) {
|
|
218
218
|
return __awaiter(this, void 0, void 0, function () {
|
|
219
|
-
var allNotReadyMrs, emailListNotReadyMrs, _i, projects_2, project, notReadyMrs, groupedByUser, logMessageSlack, _a, _b, _c, key, name, authorEmail,
|
|
220
|
-
return __generator(this, function (
|
|
221
|
-
switch (
|
|
219
|
+
var allNotReadyMrs, emailListNotReadyMrs, _i, projects_2, project, notReadyMrs, groupedByUser, logMessageSlack, _a, _b, _c, _d, key, name, authorEmail, _e, _f, mr, updated, threadLabel, statusCleanMessage;
|
|
220
|
+
return __generator(this, function (_g) {
|
|
221
|
+
switch (_g.label) {
|
|
222
222
|
case 0:
|
|
223
223
|
allNotReadyMrs = [];
|
|
224
224
|
emailListNotReadyMrs = [];
|
|
@@ -230,14 +230,17 @@ var ValidateTask = /** @class */ (function () {
|
|
|
230
230
|
}
|
|
231
231
|
groupedByUser = lodash_1.default.groupBy(allNotReadyMrs, function (mr) { return mr.author; });
|
|
232
232
|
logMessageSlack = '';
|
|
233
|
-
_a =
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
233
|
+
_a = groupedByUser;
|
|
234
|
+
_b = [];
|
|
235
|
+
for (_c in _a)
|
|
236
|
+
_b.push(_c);
|
|
237
|
+
_d = 0;
|
|
238
|
+
_g.label = 1;
|
|
238
239
|
case 1:
|
|
239
|
-
if (!(
|
|
240
|
-
|
|
240
|
+
if (!(_d < _b.length)) return [3 /*break*/, 6];
|
|
241
|
+
_c = _b[_d];
|
|
242
|
+
if (!(_c in _a)) return [3 /*break*/, 5];
|
|
243
|
+
key = _c;
|
|
241
244
|
name = key;
|
|
242
245
|
// Pretty sure this can't happen now 😅
|
|
243
246
|
if (!name || name === 'undefined')
|
|
@@ -246,29 +249,29 @@ var ValidateTask = /** @class */ (function () {
|
|
|
246
249
|
emailListNotReadyMrs.push(authorEmail);
|
|
247
250
|
utils_1.Logger.logMessage(name);
|
|
248
251
|
logMessageSlack += "".concat(name, ":\n");
|
|
249
|
-
|
|
250
|
-
|
|
252
|
+
_e = 0, _f = groupedByUser[key];
|
|
253
|
+
_g.label = 2;
|
|
251
254
|
case 2:
|
|
252
|
-
if (!(
|
|
253
|
-
mr = _e
|
|
255
|
+
if (!(_e < _f.length)) return [3 /*break*/, 5];
|
|
256
|
+
mr = _f[_e];
|
|
254
257
|
utils_1.Logger.logMessage("- ".concat(mr.url));
|
|
255
258
|
logMessageSlack += "- ".concat(mr.url, "\n");
|
|
256
259
|
if (!nextMilestone) return [3 /*break*/, 4];
|
|
257
260
|
return [4 /*yield*/, this.updateMrMilestone(nextMilestone.id, milestone, mr)];
|
|
258
261
|
case 3:
|
|
259
|
-
updated =
|
|
262
|
+
updated = _g.sent();
|
|
260
263
|
if (updated) {
|
|
261
264
|
logMessageSlack += " -> MR has been rolled over from '".concat(milestone, "' to '").concat(nextMilestone.name, "' successfully\n");
|
|
262
265
|
}
|
|
263
266
|
else {
|
|
264
267
|
logMessageSlack += " -> Failed to roll over milestone for this MR. Check logs for error.\n";
|
|
265
268
|
}
|
|
266
|
-
|
|
269
|
+
_g.label = 4;
|
|
267
270
|
case 4:
|
|
268
|
-
|
|
271
|
+
_e++;
|
|
269
272
|
return [3 /*break*/, 2];
|
|
270
273
|
case 5:
|
|
271
|
-
|
|
274
|
+
_d++;
|
|
272
275
|
return [3 /*break*/, 1];
|
|
273
276
|
case 6:
|
|
274
277
|
if (!slackNotifier)
|
|
@@ -288,7 +291,7 @@ var ValidateTask = /** @class */ (function () {
|
|
|
288
291
|
})];
|
|
289
292
|
case 7:
|
|
290
293
|
// Send formated status update in slack
|
|
291
|
-
|
|
294
|
+
_g.sent();
|
|
292
295
|
return [2 /*return*/];
|
|
293
296
|
}
|
|
294
297
|
});
|
|
@@ -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]) {
|
|
@@ -46,7 +46,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
46
46
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
47
47
|
function step(op) {
|
|
48
48
|
if (f) throw new TypeError("Generator is already executing.");
|
|
49
|
-
while (_) try {
|
|
49
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
50
50
|
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;
|
|
51
51
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
52
52
|
switch (op[0]) {
|
|
@@ -35,7 +35,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
36
36
|
function step(op) {
|
|
37
37
|
if (f) throw new TypeError("Generator is already executing.");
|
|
38
|
-
while (_) try {
|
|
38
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
39
39
|
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;
|
|
40
40
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
41
41
|
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,7 +54,7 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var types_1 = require("../../../types");
|
|
55
55
|
var services_1 = require("../../../services");
|
|
56
56
|
var GROUP_IDS = [
|
|
57
|
-
'1091',
|
|
57
|
+
'1091', // ClickView / front-end
|
|
58
58
|
'1092' // ClickView / back-end
|
|
59
59
|
];
|
|
60
60
|
var BaseConfigureProjectsTask = /** @class */ (function () {
|
package/lib/src/tasks/index.js
CHANGED
|
@@ -21,6 +21,7 @@ __exportStar(require("./CreateBranchTask"), exports);
|
|
|
21
21
|
__exportStar(require("./CreateMergeRequestTask"), exports);
|
|
22
22
|
__exportStar(require("./CreateReleaseNotesTask"), exports);
|
|
23
23
|
__exportStar(require("./CreateNotesAuditTask"), exports);
|
|
24
|
+
__exportStar(require("./JiraTicketsStatusTask"), exports);
|
|
24
25
|
__exportStar(require("./InstallPackagesTask"), exports);
|
|
25
26
|
__exportStar(require("./StartProjectBuildsTask"), exports);
|
|
26
27
|
__exportStar(require("./StartMonorepoBuildTask"), exports);
|
|
@@ -32,5 +33,6 @@ __exportStar(require("./ValidateMergeRequestTask"), exports);
|
|
|
32
33
|
__exportStar(require("./ValidateTask"), exports);
|
|
33
34
|
__exportStar(require("./VersionTask"), exports);
|
|
34
35
|
__exportStar(require("./PopulateTrelloBoardTask"), exports);
|
|
36
|
+
__exportStar(require("./CheckReleaseReadyTask"), exports);
|
|
35
37
|
__exportStar(require("./CreateHotfixTask"), exports);
|
|
36
38
|
__exportStar(require("./UpdateMergeRequestDescriptionTask"), exports);
|
package/lib/src/types.js
CHANGED
|
@@ -3,18 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.COMMANDS = exports.TASKS = exports.SERVICES = exports.API_CLIENTS = exports.MISC = void 0;
|
|
4
4
|
exports.MISC = {
|
|
5
5
|
GitLabConfig: Symbol.for('GitLabConfig'),
|
|
6
|
+
JiraConfig: Symbol.for('JiraConfig'),
|
|
6
7
|
TeamCityConfig: Symbol.for('TeamCityConfig'),
|
|
7
8
|
TrelloConfig: Symbol.for('TrelloConfig'),
|
|
8
9
|
SlackConfig: Symbol.for('SlackConfig')
|
|
9
10
|
};
|
|
10
11
|
exports.API_CLIENTS = {
|
|
11
12
|
GitLabApiClient: Symbol.for('GitLabApiClient'),
|
|
13
|
+
JiraApiClient: Symbol.for('JiraApiClient'),
|
|
12
14
|
TeamCityApiClient: Symbol.for('TeamCityApiClient'),
|
|
13
15
|
TrelloApiClient: Symbol.for('TrelloApiClient'),
|
|
14
16
|
SlackApiClient: Symbol.for('SlackApiClient')
|
|
15
17
|
};
|
|
16
18
|
exports.SERVICES = {
|
|
17
19
|
GitLabService: Symbol.for('GitLabService'),
|
|
20
|
+
JiraService: Symbol.for('JiraService'),
|
|
18
21
|
TeamCityService: Symbol.for('TeamCityService'),
|
|
19
22
|
TrelloService: Symbol.for('TrelloService'),
|
|
20
23
|
SlackService: Symbol.for('SlackService')
|
|
@@ -29,6 +32,7 @@ exports.TASKS = {
|
|
|
29
32
|
ValidateDescriptionsTask: Symbol.for('ValidateDescriptionsTask'),
|
|
30
33
|
CreateReleaseNotesTask: Symbol.for('CreateReleaseNotesTask'),
|
|
31
34
|
CreateNotesAuditTask: Symbol.for('CreateNotesAuditTask'),
|
|
35
|
+
JiraTicketsStatusTask: Symbol.for('JiraTicketsStatusTask'),
|
|
32
36
|
InstallPackagesTask: Symbol.for('InstallPackagesTask'),
|
|
33
37
|
BumpPackagesTask: Symbol.for('BumpPackagesTask'),
|
|
34
38
|
ValidateMergeRequestTask: Symbol.for('ValidateMergeRequestTask'),
|
|
@@ -40,6 +44,7 @@ exports.TASKS = {
|
|
|
40
44
|
AddApprovalRulesTask: Symbol.for('AddApprovalRulesTask'),
|
|
41
45
|
CreateToolingBranchTask: Symbol.for('CreateToolingBranchTask'),
|
|
42
46
|
EnsureApprovalRulesTask: Symbol.for('EnsureApprovalRulesTask'),
|
|
47
|
+
CheckReleaseReadyTask: Symbol.for('CheckReleaseReadyTask'),
|
|
43
48
|
CreateHotfixTask: Symbol.for('CreateHotfixTask'),
|
|
44
49
|
ChangeMilestoneTask: Symbol.for('ChangeMilestoneTask'),
|
|
45
50
|
UpdateMergeRequestDescriptionTask: Symbol.for('UpdateMergeRequestDescriptionTask')
|
|
@@ -53,6 +58,7 @@ exports.COMMANDS = {
|
|
|
53
58
|
CreateMergeRequestCommand: Symbol.for('CreateMergeRequestCommand'),
|
|
54
59
|
CreateReleaseNotesCommand: Symbol.for('CreateReleaseNotesCommand'),
|
|
55
60
|
CreateNotesAuditCommand: Symbol.for('CreateNotesAuditCommand'),
|
|
61
|
+
JiraTicketsStatusCommand: Symbol.for('JiraTicketsStatusCommand'),
|
|
56
62
|
InstallPackagesCommand: Symbol.for('InstallPackagesCommand'),
|
|
57
63
|
BumpPackagesCommand: Symbol.for('BumpPackagesCommand'),
|
|
58
64
|
ValidateMergeRequestCommand: Symbol.for('ValidateMergeRequestCommand'),
|
|
@@ -61,6 +67,7 @@ exports.COMMANDS = {
|
|
|
61
67
|
ListProjectsCommand: Symbol.for('ListProjectsCommand'),
|
|
62
68
|
CreateTrelloCardsCommand: Symbol.for('CreateTrelloCardsCommand'),
|
|
63
69
|
ConfigureProjectsCommand: Symbol.for('ConfigureProjectsCommand'),
|
|
70
|
+
CheckReleaseReadyCommand: Symbol.for('CheckReleaseReadyCommand'),
|
|
64
71
|
CreateHotfixCommand: Symbol.for('CreateHotfixCommand'),
|
|
65
72
|
UpdateDescriptionCommand: Symbol.for('UpdateDescriptionCommand')
|
|
66
73
|
};
|