@clickview/ship-it 0.0.47-dev.0 → 0.0.48
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/.gitlab-ci.yml +1 -1
- package/dist/P3/P3 Notes Audit.csv +49 -0
- package/dist/R1/R1 Notes Audit.csv +117 -0
- package/dist/S3/S3 Notes Audit.csv +13 -0
- package/lib/src/commands/CheckReleaseReadyCommand.js +76 -0
- package/lib/src/commands/ReleaseCommand.js +8 -10
- package/lib/src/constants/ProjectNames.js +3 -1
- package/lib/src/constants/TeamCityBuildIDs.js +0 -36
- package/lib/src/index.js +0 -0
- package/lib/src/startup/SetupCommands.js +1 -0
- package/lib/src/tasks/BumpPackagesTask.js +7 -2
- package/lib/src/tasks/CheckReleaseReadyTask.js +242 -0
- package/package.json +6 -5
- package/dist/P3/Account.Api.md +0 -20
- package/dist/P3/Analytics Web.md +0 -13
- package/dist/P3/Batch.Api.md +0 -25
- package/dist/P3/Classroom.Api.md +0 -21
- package/dist/P3/ClickView Online.md +0 -18
- package/dist/P3/ClickView.Cron.JobProcessor.md +0 -28
- package/dist/P3/ClickView.Curator.md +0 -39
- package/dist/P3/Clients.md +0 -31
- package/dist/P3/Collection.Api.md +0 -28
- package/dist/P3/Discover.Api.md +0 -23
- package/dist/P3/Domain.Api.md +0 -36
- package/dist/P3/Exchange.Web.md +0 -6
- package/dist/P3/File.Api.IngestService.md +0 -38
- package/dist/P3/File.Api.md +0 -26
- package/dist/P3/FileGenerator.md +0 -14
- package/dist/P3/Hydration.App.md +0 -20
- package/dist/P3/Integrations.Api.md +0 -68
- package/dist/P3/Krakend.md +0 -29
- package/dist/P3/LeadQualifier.App.md +0 -19
- package/dist/P3/Library Editor.md +0 -14
- package/dist/P3/Library.Api.md +0 -29
- package/dist/P3/Lite.md +0 -6
- package/dist/P3/LocalCache.Api.md +0 -22
- package/dist/P3/LoginAnalytics.Api.md +0 -20
- package/dist/P3/Master.Api.md +0 -13
- package/dist/P3/Master.Auth.md +0 -28
- package/dist/P3/Objects.Api.md +0 -27
- package/dist/P3/Permissions.Api.md +0 -23
- package/dist/P3/Release Notes.md +0 -1196
- package/dist/P3/Search.Api.md +0 -14
- package/dist/P3/Share.Api.md +0 -16
- package/dist/P3/StreamableLearning.Web.md +0 -6
- package/dist/P3/Subjects.API.md +0 -13
- package/dist/P3/Tools.md +0 -13
- package/dist/P3/Tv.Web.md +0 -35
- package/dist/P3/TvConversion.App.md +0 -14
- package/dist/P3/TvRecording.App.md +0 -18
- package/dist/P3/TvSplice.App.md +0 -14
- package/dist/P3/Users.Api.md +0 -46
- package/dist/P3/VideoCollections.Api.md +0 -6
- package/dist/P3/VideoViews.Api.md +0 -29
- package/dist/P3/WorkspaceSplice.App.md +0 -14
- package/dist/P3/clickview.md +0 -130
- package/dist/P3/index.app.md +0 -58
|
@@ -0,0 +1,242 @@
|
|
|
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 (_) 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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.CheckReleaseReadyTask = void 0;
|
|
52
|
+
require("reflect-metadata");
|
|
53
|
+
var inversify_1 = require("inversify");
|
|
54
|
+
var Logger_1 = require("../utils/Logger");
|
|
55
|
+
var types_1 = require("../types");
|
|
56
|
+
var services_1 = require("../services");
|
|
57
|
+
var utils_1 = require("../utils");
|
|
58
|
+
var CheckReleaseReadyTask = /** @class */ (function () {
|
|
59
|
+
function CheckReleaseReadyTask(service, slackService, trelloService) {
|
|
60
|
+
this.service = service;
|
|
61
|
+
this.slackService = slackService;
|
|
62
|
+
this.trelloService = trelloService;
|
|
63
|
+
}
|
|
64
|
+
CheckReleaseReadyTask.prototype.run = function (options) {
|
|
65
|
+
var _a;
|
|
66
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
67
|
+
var projects, deployDependenciesTasks, beforeReleaseTasks, afterReleaseTasks, sqlSections, _i, projects_1, project, branchName, mergeRequest, owner, deployDependencies, beforeTasks, afterTasks, beforeSQL, afterSQL, _b, deployDependenciesTasks_1, task, _c, beforeReleaseTasks_1, task, _d, afterReleaseTasks_1, task, _e, sqlSections_1, sql, milestoneLabel, deployDependenciesMessage, beforeTasksMessage, afterTasksMessage, sqlMessage, taskSummary;
|
|
68
|
+
return __generator(this, function (_f) {
|
|
69
|
+
switch (_f.label) {
|
|
70
|
+
case 0:
|
|
71
|
+
Logger_1.Logger.logTask('Checking status of the current release...');
|
|
72
|
+
return [4 /*yield*/, this.service.getReleaseProjects(options.milestone, options.projectIds, options.omittedProjectIds, options.sourceBranch)];
|
|
73
|
+
case 1:
|
|
74
|
+
projects = _f.sent();
|
|
75
|
+
deployDependenciesTasks = [];
|
|
76
|
+
beforeReleaseTasks = [];
|
|
77
|
+
afterReleaseTasks = [];
|
|
78
|
+
sqlSections = [];
|
|
79
|
+
_i = 0, projects_1 = projects;
|
|
80
|
+
_f.label = 2;
|
|
81
|
+
case 2:
|
|
82
|
+
if (!(_i < projects_1.length)) return [3 /*break*/, 7];
|
|
83
|
+
project = projects_1[_i];
|
|
84
|
+
return [4 /*yield*/, this.service.getNextBranchInfo(project.id, options.version)];
|
|
85
|
+
case 3:
|
|
86
|
+
branchName = (_f.sent()).branchName;
|
|
87
|
+
return [4 /*yield*/, this.service.getMergeRequest(project.id, branchName)];
|
|
88
|
+
case 4:
|
|
89
|
+
mergeRequest = _f.sent();
|
|
90
|
+
if (!mergeRequest)
|
|
91
|
+
return [3 /*break*/, 6];
|
|
92
|
+
return [4 /*yield*/, this.trelloService.getMember(mergeRequest.url)];
|
|
93
|
+
case 5:
|
|
94
|
+
owner = (_a = _f.sent()) !== null && _a !== void 0 ? _a : 'Unknown';
|
|
95
|
+
deployDependencies = utils_1.Descriptions.getDescriptionSection('Dependencies', mergeRequest);
|
|
96
|
+
beforeTasks = utils_1.Descriptions.getDescriptionSubSection('BeforeRelease', 'Tasks', mergeRequest);
|
|
97
|
+
afterTasks = utils_1.Descriptions.getDescriptionSubSection('AfterRelease', 'Tasks', mergeRequest);
|
|
98
|
+
beforeSQL = utils_1.Descriptions.getDescriptionSubSection('BeforeRelease', 'SQL', mergeRequest);
|
|
99
|
+
afterSQL = utils_1.Descriptions.getDescriptionSubSection('AfterRelease', 'SQL', mergeRequest);
|
|
100
|
+
if (deployDependencies) {
|
|
101
|
+
deployDependenciesTasks.push({
|
|
102
|
+
project: project.title,
|
|
103
|
+
mr: mergeRequest.title,
|
|
104
|
+
content: deployDependencies,
|
|
105
|
+
owner: owner
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (beforeTasks) {
|
|
109
|
+
beforeReleaseTasks.push({
|
|
110
|
+
project: project.title,
|
|
111
|
+
mr: mergeRequest.title,
|
|
112
|
+
content: beforeTasks,
|
|
113
|
+
owner: owner
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (afterTasks) {
|
|
117
|
+
afterReleaseTasks.push({
|
|
118
|
+
project: project.title,
|
|
119
|
+
mr: mergeRequest.title,
|
|
120
|
+
content: afterTasks,
|
|
121
|
+
owner: owner
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
if (beforeSQL) {
|
|
125
|
+
sqlSections.push({
|
|
126
|
+
project: project.title,
|
|
127
|
+
mr: mergeRequest.title,
|
|
128
|
+
content: beforeSQL,
|
|
129
|
+
phase: 'BeforeRelease',
|
|
130
|
+
owner: owner
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (afterSQL) {
|
|
134
|
+
sqlSections.push({
|
|
135
|
+
project: project.title,
|
|
136
|
+
mr: mergeRequest.title,
|
|
137
|
+
content: afterSQL,
|
|
138
|
+
phase: 'AfterRelease',
|
|
139
|
+
owner: owner
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
_f.label = 6;
|
|
143
|
+
case 6:
|
|
144
|
+
_i++;
|
|
145
|
+
return [3 /*break*/, 2];
|
|
146
|
+
case 7:
|
|
147
|
+
// PRINTING TIME
|
|
148
|
+
Logger_1.Logger.logInfo('====== ALL DEPLOY DEPENDENCIES ======');
|
|
149
|
+
for (_b = 0, deployDependenciesTasks_1 = deployDependenciesTasks; _b < deployDependenciesTasks_1.length; _b++) {
|
|
150
|
+
task = deployDependenciesTasks_1[_b];
|
|
151
|
+
Logger_1.Logger.logMessage("\uD83D\uDD39 ".concat(task.project, " | ").concat(task.mr, " | \uD83D\uDC64 ").concat(task.owner));
|
|
152
|
+
Logger_1.Logger.logMessage(task.content);
|
|
153
|
+
}
|
|
154
|
+
Logger_1.Logger.logInfo('====== ALL BEFORE RELEASE TASKS ======');
|
|
155
|
+
for (_c = 0, beforeReleaseTasks_1 = beforeReleaseTasks; _c < beforeReleaseTasks_1.length; _c++) {
|
|
156
|
+
task = beforeReleaseTasks_1[_c];
|
|
157
|
+
Logger_1.Logger.logMessage("\uD83D\uDD39 ".concat(task.project, " | ").concat(task.mr, " | \uD83D\uDC64 ").concat(task.owner));
|
|
158
|
+
Logger_1.Logger.logMessage(task.content);
|
|
159
|
+
}
|
|
160
|
+
Logger_1.Logger.logInfo('====== ALL AFTER RELEASE TASKS ======');
|
|
161
|
+
for (_d = 0, afterReleaseTasks_1 = afterReleaseTasks; _d < afterReleaseTasks_1.length; _d++) {
|
|
162
|
+
task = afterReleaseTasks_1[_d];
|
|
163
|
+
Logger_1.Logger.logMessage("\uD83D\uDD39 ".concat(task.project, " | ").concat(task.mr, " | \uD83D\uDC64 ").concat(task.owner));
|
|
164
|
+
Logger_1.Logger.logMessage(task.content);
|
|
165
|
+
}
|
|
166
|
+
Logger_1.Logger.logInfo('====== ALL SQL CHANGES (with context) ======');
|
|
167
|
+
for (_e = 0, sqlSections_1 = sqlSections; _e < sqlSections_1.length; _e++) {
|
|
168
|
+
sql = sqlSections_1[_e];
|
|
169
|
+
Logger_1.Logger.logMessage("\uD83E\uDDFE ".concat(sql.project, " | ").concat(sql.mr, " (").concat(sql.phase === 'BeforeRelease' ? 'Before Release' : 'After Release', ") | \uD83D\uDC64 ").concat(sql.owner));
|
|
170
|
+
Logger_1.Logger.logMessage(sql.content);
|
|
171
|
+
}
|
|
172
|
+
if (!options.slackNotifier) return [3 /*break*/, 11];
|
|
173
|
+
milestoneLabel = "".concat(options.milestone, " Release");
|
|
174
|
+
deployDependenciesMessage = this.formatTaskSection('Deploy Dependencies', deployDependenciesTasks);
|
|
175
|
+
beforeTasksMessage = this.formatTaskSection('Before Release Tasks', beforeReleaseTasks);
|
|
176
|
+
afterTasksMessage = this.formatTaskSection('After Release Tasks', afterReleaseTasks);
|
|
177
|
+
sqlMessage = this.formatSQLSection(sqlSections);
|
|
178
|
+
taskSummary = [deployDependenciesMessage, beforeTasksMessage, afterTasksMessage].filter(Boolean).join('\n');
|
|
179
|
+
if (!taskSummary) return [3 /*break*/, 9];
|
|
180
|
+
return [4 /*yield*/, this.slackService.sendSlackStatusMessage({
|
|
181
|
+
emailList: [],
|
|
182
|
+
threadLabel: "".concat(milestoneLabel, " Tasks & Dependencies"),
|
|
183
|
+
statusMessage: taskSummary,
|
|
184
|
+
statusCleanMessage: 'No Before/After Release Tasks found!'
|
|
185
|
+
})];
|
|
186
|
+
case 8:
|
|
187
|
+
_f.sent();
|
|
188
|
+
_f.label = 9;
|
|
189
|
+
case 9:
|
|
190
|
+
if (!sqlMessage) return [3 /*break*/, 11];
|
|
191
|
+
return [4 /*yield*/, this.slackService.sendSlackStatusMessage({
|
|
192
|
+
emailList: [],
|
|
193
|
+
threadLabel: "".concat(milestoneLabel, " SQL"),
|
|
194
|
+
statusMessage: sqlMessage,
|
|
195
|
+
statusCleanMessage: 'No SQL changes found in release!',
|
|
196
|
+
sendAsFile: true
|
|
197
|
+
})];
|
|
198
|
+
case 10:
|
|
199
|
+
_f.sent();
|
|
200
|
+
_f.label = 11;
|
|
201
|
+
case 11: return [2 /*return*/, true];
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
CheckReleaseReadyTask.prototype.formatTaskSection = function (title, items) {
|
|
207
|
+
if (items.length === 0)
|
|
208
|
+
return 'No tasks found!';
|
|
209
|
+
var output = "## ".concat(title, "\n\n");
|
|
210
|
+
for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
|
|
211
|
+
var item = items_1[_i];
|
|
212
|
+
output += "### ".concat(item.project, " \u2013 ").concat(item.mr, "\n");
|
|
213
|
+
output += "**Owner:** ".concat(item.owner, "\n\n");
|
|
214
|
+
output += "".concat(item.content.trim(), "\n");
|
|
215
|
+
}
|
|
216
|
+
return output;
|
|
217
|
+
};
|
|
218
|
+
CheckReleaseReadyTask.prototype.formatSQLSection = function (items) {
|
|
219
|
+
if (items.length === 0)
|
|
220
|
+
return 'No SQL found!';
|
|
221
|
+
var output = "## SQL Changes\n\n";
|
|
222
|
+
for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {
|
|
223
|
+
var item = items_2[_i];
|
|
224
|
+
var phaseLabel = item.phase === 'BeforeRelease' ? 'Before Release' : 'After Release';
|
|
225
|
+
output += "### ".concat(item.project, " \u2013 ").concat(item.mr, " (").concat(phaseLabel, ")\n");
|
|
226
|
+
output += "**Owner:** ".concat(item.owner, "\n\n");
|
|
227
|
+
output += "".concat(item.content.trim(), "\n");
|
|
228
|
+
}
|
|
229
|
+
return output;
|
|
230
|
+
};
|
|
231
|
+
CheckReleaseReadyTask = __decorate([
|
|
232
|
+
(0, inversify_1.injectable)(),
|
|
233
|
+
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
234
|
+
__param(1, (0, inversify_1.inject)(types_1.SERVICES.SlackService)),
|
|
235
|
+
__param(2, (0, inversify_1.inject)(types_1.SERVICES.TrelloService)),
|
|
236
|
+
__metadata("design:paramtypes", [services_1.GitLabService,
|
|
237
|
+
services_1.SlackService,
|
|
238
|
+
services_1.TrelloService])
|
|
239
|
+
], CheckReleaseReadyTask);
|
|
240
|
+
return CheckReleaseReadyTask;
|
|
241
|
+
}());
|
|
242
|
+
exports.CheckReleaseReadyTask = CheckReleaseReadyTask;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clickview/ship-it",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.48",
|
|
4
4
|
"description": "Release Manager",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"author": "Joshua Taylor, Shale Kuzmanovski",
|
|
19
19
|
"license": "ISC",
|
|
20
|
-
"dependencies": {
|
|
21
|
-
"devDependencies": {
|
|
20
|
+
"dependencies": {
|
|
22
21
|
"@gitbeaker/node": "35.6.0",
|
|
23
22
|
"@slack/webhook": "7.0.2",
|
|
24
23
|
"@slack/web-api":"6.11.2",
|
|
@@ -29,9 +28,11 @@
|
|
|
29
28
|
"inversify": "6.0.1",
|
|
30
29
|
"lodash": "4.17.21",
|
|
31
30
|
"reflect-metadata": "0.1.13",
|
|
32
|
-
"semver": "7.
|
|
31
|
+
"semver": "7.3.5",
|
|
33
32
|
"teamcity-rest-api": "0.0.8",
|
|
34
|
-
"trello": "0.11.0"
|
|
33
|
+
"trello": "0.11.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
35
36
|
"@clickview/eslint-config": "1.0.3",
|
|
36
37
|
"@types/fs-extra": "9.0.13",
|
|
37
38
|
"@types/lodash": "4.14.181",
|
package/dist/P3/Account.Api.md
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
* [ ] Addd `ex_file_generator` to RabbitMQ under the `api_account` user.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Code Changes
|
|
9
|
-
- Added new endpoint to generate the customer users report `/v1/customers/{id}/generate-user-report`.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# Testing
|
|
13
|
-
iou
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# Merge Request Checklist
|
|
17
|
-
- [ ] QA validation is completed.
|
|
18
|
-
- [ ] All dependencies have been addressed.
|
|
19
|
-
- [ ] All before release tasks have been completed.
|
|
20
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/Analytics Web.md
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Code Changes
|
|
3
|
-
- Adding scopes for subjects api
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# Testing
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# Merge Request Checklist
|
|
10
|
-
- [ ] QA validation is completed.
|
|
11
|
-
- [ ] All dependencies have been addressed.
|
|
12
|
-
- [ ] All before release tasks have been completed.
|
|
13
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/Batch.Api.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
* [ ] Add `RabbitMq-Shared` variable set in Octo
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Code Changes
|
|
9
|
-
* Support TLS connection for rabbitmq. Closes CORE-2033
|
|
10
|
-
* Set `EnableSsl=true` and `IgnoreSslErrors=true` in `RabbitMqClientOptions` and `JobPriorityQueueEventHostedServiceOptions`
|
|
11
|
-
|
|
12
|
-
- Ignore blank attribute values for marketing profile imports. Implements INBOX-9140
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# Testing
|
|
16
|
-
* CORE-2033
|
|
17
|
-
|
|
18
|
-
- INBOX-9140
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# Merge Request Checklist
|
|
22
|
-
- [ ] QA validation is completed.
|
|
23
|
-
- [ ] All dependencies have been addressed.
|
|
24
|
-
- [ ] All before release tasks have been completed.
|
|
25
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/Classroom.Api.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
* [ ] Add `RabbitMq-Shared` variable set in Octo
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Code Changes
|
|
9
|
-
* Support TLS connection for rabbitmq. Closes CORE-2034
|
|
10
|
-
* Set `EnableSsl=true` and `IgnoreSslErrors=true` in `AddQueue` for `MasterQueueEventHostedServiceOptions`
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
# Testing
|
|
14
|
-
* CORE-2034
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# Merge Request Checklist
|
|
18
|
-
- [ ] QA validation is completed.
|
|
19
|
-
- [ ] All dependencies have been addressed.
|
|
20
|
-
- [ ] All before release tasks have been completed.
|
|
21
|
-
- [ ] All after release tasks are ready to be completed.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Code Changes
|
|
3
|
-
* Update references to `collection-api-client.js` to `app.js`
|
|
4
|
-
|
|
5
|
-
* Update entrypoint file for `@clickview/analytics`. Partially Implements INBOX-9260.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Testing
|
|
9
|
-
* N/A
|
|
10
|
-
|
|
11
|
-
* N/A
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# Merge Request Checklist
|
|
15
|
-
- [ ] QA validation is completed.
|
|
16
|
-
- [ ] All dependencies have been addressed.
|
|
17
|
-
- [ ] All before release tasks have been completed.
|
|
18
|
-
- [ ] All after release tasks are ready to be completed.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
* [ ] Add `RabbitMq-Shared` variable set in Octo
|
|
6
|
-
* [ ] Add new project variable: `queue:concurrentTaskCount` and set value to `10` in Octo
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# After Release
|
|
10
|
-
|
|
11
|
-
## Tasks
|
|
12
|
-
* [ ] Remove project variable: `queue:host` and `queue:port` from Octo
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# Code Changes
|
|
16
|
-
* Enforce queue connection using SSL by replacing `ClickView.Clients.Queue` with `ClickView.GoodStuff.Queue`s`.RabbitMQ`
|
|
17
|
-
* Move options objects to the `Options` folder
|
|
18
|
-
* Minor code refactorings
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# Testing
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# Merge Request Checklist
|
|
25
|
-
- [ ] QA validation is completed.
|
|
26
|
-
- [ ] All dependencies have been addressed.
|
|
27
|
-
- [ ] All before release tasks have been completed.
|
|
28
|
-
- [ ] All after release tasks are ready to be completed.
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
* [ ] Add `RabbitMq-Shared` variable set in Octo
|
|
6
|
-
* [ ] Rename octo variables:
|
|
7
|
-
* `eventQueue:username` to `queue:username`
|
|
8
|
-
* `eventQueue:password` to `queue:password`
|
|
9
|
-
* `eventQueue:discoverQueue` to `queue:discoverQueue`
|
|
10
|
-
* `eventQueue:masterQueue` to `queue:masterQueue`
|
|
11
|
-
* `eventQueue:subjectsQueue` to `queue:subjectsQueue`
|
|
12
|
-
* [ ] Remove octo variables:
|
|
13
|
-
* `eventQueue:host`
|
|
14
|
-
* `eventQueue:port`
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# Code Changes
|
|
18
|
-
* Replace `ClickView.Clients.Queue` with `ClickView.GoodStuff.Queues.RabbitMq` according to [the guide](https://clickview.quip.com/nlFMAsSqxeaU/2024-05-RabbitMQ-Upgrade)
|
|
19
|
-
* Change the queues port from 5672 to 5671
|
|
20
|
-
* In the RabbitMQ client options, set EnableSsl=true and IgnoreSslErrors=true. Implements INBOX-9149
|
|
21
|
-
|
|
22
|
-
* Updated file client to latest
|
|
23
|
-
|
|
24
|
-
* Moves the `GetDescription` extension method to use the common property to ensure the correct description is retrieved for videos in reports. Fixes INBOX-9253
|
|
25
|
-
* Removes duplicate description definitions.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
# Testing
|
|
29
|
-
INBOX-9149
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
INBOX-9253
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
# Merge Request Checklist
|
|
36
|
-
- [ ] QA validation is completed.
|
|
37
|
-
- [ ] All dependencies have been addressed.
|
|
38
|
-
- [ ] All before release tasks have been completed.
|
|
39
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/Clients.md
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# ClickView.Clients.Domain
|
|
3
|
-
|
|
4
|
-
## Code Changes
|
|
5
|
-
- Added a method to Domain API to retrieve a pending review summary for interactive
|
|
6
|
-
|
|
7
|
-
# ClickView.Clients.Share
|
|
8
|
-
|
|
9
|
-
## Code Changes
|
|
10
|
-
- Implemented a client for Share API (retrieving the pincode on a share)
|
|
11
|
-
|
|
12
|
-
# ClickView.Clients.VideoViews
|
|
13
|
-
|
|
14
|
-
## Code Changes
|
|
15
|
-
- Implemented a client for Video Views API (retrieving user engagement).
|
|
16
|
-
|
|
17
|
-
# monorepo
|
|
18
|
-
|
|
19
|
-
## Code Changes
|
|
20
|
-
- Added new subprojects to ship-it config so MR description using new subprojects can be validated
|
|
21
|
-
|
|
22
|
-
# Testing
|
|
23
|
-
|
|
24
|
-
## other
|
|
25
|
-
- n/a
|
|
26
|
-
|
|
27
|
-
# Merge Request Checklist
|
|
28
|
-
- [ ] QA validation is completed.
|
|
29
|
-
- [ ] All dependencies have been addressed.
|
|
30
|
-
- [ ] All before release tasks have been completed.
|
|
31
|
-
- [ ] All after release tasks are ready to be completed.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
Run the following sql:
|
|
6
|
-
```
|
|
7
|
-
insert into cv_collection.event_exchange_mappings (EventType, Exchange, DateCreated)
|
|
8
|
-
values
|
|
9
|
-
('cv_product_submit', 'cv_product_all', UTC_TIMESTAMP()),
|
|
10
|
-
('cv_product_create', 'cv_product_all', UTC_TIMESTAMP()),
|
|
11
|
-
('cv_product_stream', 'cv_product_all', UTC_TIMESTAMP());
|
|
12
|
-
```
|
|
13
|
-
> Actually, does this mapping need to be created before the release? I'm assuming that once we deploy collection api - the exchange mappings will be cached straight away, so if the mappings above are not there at startup time, the `cv_product_all` exchange will never receive the events..
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# Code Changes
|
|
17
|
-
- Updated the RepositoryCacheService to cache exchange mappings as a grouped list rather than a dictionary. This is to allow multiple exchanges to receive the same event (e.g. `cv_product_stream`).
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# Testing
|
|
21
|
-
- n/a
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# Merge Request Checklist
|
|
25
|
-
- [ ] QA validation is completed.
|
|
26
|
-
- [ ] All dependencies have been addressed.
|
|
27
|
-
- [ ] All before release tasks have been completed.
|
|
28
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/Discover.Api.md
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
- [ ] Add `RabbitMq-Shared` variable set in Octo
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Code Changes
|
|
9
|
-
- Nuget packages update
|
|
10
|
-
- Replace `ClickView.Clients.Queue` with `ClickView.GoodStuff.Queues.RabbitMq` according to [the guide](https://clickview.quip.com/nlFMAsSqxeaU/2024-05-RabbitMQ-Upgrade)
|
|
11
|
-
- Change the queues port from 5672 to 5671
|
|
12
|
-
- In the RabbitMQ client options, set EnableSsl=true and IgnoreSslErrors=true. Implements INBOX-9149
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# Testing
|
|
16
|
-
INBOX-9149
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
# Merge Request Checklist
|
|
20
|
-
- [ ] QA validation is completed.
|
|
21
|
-
- [ ] All dependencies have been addressed.
|
|
22
|
-
- [ ] All before release tasks have been completed.
|
|
23
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/Domain.Api.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
* [ ] Call `POST https://api-domain.clickviewapp.com/v3/settings/types` with the body below to create a new domain option type for organisation
|
|
6
|
-
```
|
|
7
|
-
{
|
|
8
|
-
"name": "has_enabled_rostering",
|
|
9
|
-
"displayName": "Has enabled rostering",
|
|
10
|
-
"type": "System.Boolean",
|
|
11
|
-
"entityType": 28,
|
|
12
|
-
"defaultValue": "false",
|
|
13
|
-
"kind": 1
|
|
14
|
-
}
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# Code Changes
|
|
19
|
-
* Update `ClickView.Clients.Queue` to the latest version
|
|
20
|
-
* Update configs changing the rabbitmq port from 5672 to 5671.
|
|
21
|
-
Implements INBOX-9149
|
|
22
|
-
|
|
23
|
-
* Added organisation entity type support for `GET v4/settings/{entityId}` endpoint so that the front end can fetch the organisation domain settings. Closes CORE-2037
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
# Testing
|
|
27
|
-
INBOX-9149
|
|
28
|
-
|
|
29
|
-
* CORE-2037
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
# Merge Request Checklist
|
|
33
|
-
- [ ] QA validation is completed.
|
|
34
|
-
- [ ] All dependencies have been addressed.
|
|
35
|
-
- [ ] All before release tasks have been completed.
|
|
36
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/Exchange.Web.md
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Deploy Dependencies
|
|
3
|
-
* https://gitlab.cvinternal.net/clickview/back-end/File.Api/-/merge_requests/65
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# Before Release
|
|
7
|
-
|
|
8
|
-
## Tasks
|
|
9
|
-
* [ ] Update `ClickView.FileApi.Models` nuget to `1.15.0` or above
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# Code Changes
|
|
13
|
-
* Update `ClickView.FileApi.Models` that can support utf-8 character. Partially closes INBOX-9210
|
|
14
|
-
|
|
15
|
-
* Detect and validate the MIME type of the file when it is uploaded. Closes INBOX-8745
|
|
16
|
-
* A list of file extensions we currently have in file db can be found at https://clickview.quip.com/YMZfAM4XTCbN/File-Extension-for-Uploads
|
|
17
|
-
* Use `Mime-Detective` third-party nuget to inspect the file signature (i.e. file magic number) of each binary file to determine their MIME type
|
|
18
|
-
* Add the custom file signature definitions that are not included in the default file types of Mime-Detective
|
|
19
|
-
* Consolidate a MIME type whitelist that ClickView allows the user to upload (Just log as warning for now if anything uploaded is not recognized or not included in the whitelist. In the next release, we ill block user from uploading any file that is not whitelisted).
|
|
20
|
-
* Add a `PlainTextDetector` to handle the file that does not have file signature (i.e. plain text without byte order mark)
|
|
21
|
-
* Add a `SbvSubtitleDetector` to handle the sbv subtitle file
|
|
22
|
-
* Code cleanup
|
|
23
|
-
* Convert `UploadService` to primary constructor
|
|
24
|
-
* Remove `DateTimeExtensions`
|
|
25
|
-
* Replace `PartialStreamWrapper` with `StreamHelpers.CopyStreamAsync` so we can peek the first 2K bytes of data for MIME type validation
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
# Testing
|
|
29
|
-
* INBOX-9210
|
|
30
|
-
|
|
31
|
-
* INBOX-8745
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
# Merge Request Checklist
|
|
35
|
-
- [ ] QA validation is completed.
|
|
36
|
-
- [ ] All dependencies have been addressed.
|
|
37
|
-
- [ ] All before release tasks have been completed.
|
|
38
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/File.Api.md
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Before Release
|
|
3
|
-
|
|
4
|
-
## Tasks
|
|
5
|
-
* [ ] Update `ClickView.FileApi.Models.csproj` to bump the version to release build `1.15.0` and publish it to nuget
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Customer Changes
|
|
9
|
-
* Fixed an issue where file uploaded with UTF-8 characters file name have these characters stripped when downloading them. Closes INBOX-9210
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# Code Changes
|
|
13
|
-
* Updated `SecureNameRegex` to support UTF-8 characters
|
|
14
|
-
* Sanitize the file name for all 3 upload endpoints
|
|
15
|
-
* Rename the test project from `ClickView.FileApi.Contracts.Tests` to `ClickView.FileApi.Models.Tests`
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# Testing
|
|
19
|
-
* INBOX-9210
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# Merge Request Checklist
|
|
23
|
-
- [ ] QA validation is completed.
|
|
24
|
-
- [ ] All dependencies have been addressed.
|
|
25
|
-
- [ ] All before release tasks have been completed.
|
|
26
|
-
- [ ] All after release tasks are ready to be completed.
|
package/dist/P3/FileGenerator.md
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Code Changes
|
|
3
|
-
* Calls the new v2 raw endpoint for anyone who has new share v2 turned on. Implements CORE-2038
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# Testing
|
|
7
|
-
CORE-2038
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Merge Request Checklist
|
|
11
|
-
- [ ] QA validation is completed.
|
|
12
|
-
- [ ] All dependencies have been addressed.
|
|
13
|
-
- [ ] All before release tasks have been completed.
|
|
14
|
-
- [ ] All after release tasks are ready to be completed.
|