@pwrdrvr/microapps-publish 0.0.18 → 0.0.19
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/dist/DeployClient.d.ts.map +1 -1
- package/dist/DeployClient.js.map +1 -1
- package/dist/S3TransferUtility.d.ts +6 -1
- package/dist/S3TransferUtility.d.ts.map +1 -1
- package/dist/S3TransferUtility.js +5 -0
- package/dist/S3TransferUtility.js.map +1 -1
- package/dist/S3Uploader.d.ts +18 -0
- package/dist/S3Uploader.d.ts.map +1 -1
- package/dist/S3Uploader.js +33 -5
- package/dist/S3Uploader.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +97 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/DeployClient.ts +0 -1
- package/src/S3TransferUtility.ts +6 -2
- package/src/S3Uploader.ts +41 -7
- package/src/index.ts +232 -133
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeployClient.d.ts","sourceRoot":"","sources":["../src/DeployClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"DeployClient.d.ts","sourceRoot":"","sources":["../src/DeployClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAEL,+BAA+B,EAIhC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,+BAA+B,CAAC;CAC3C;AAED,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,sBAEpB;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAA4B;WAEhC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;WAyBzC,sBAAsB,CACxC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,6BAA6B,CAAC;WA4BrB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BlE"}
|
package/dist/DeployClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeployClient.js","sourceRoot":"","sources":["../src/DeployClient.ts"],"names":[],"mappings":";;;AAAA,uEAAiD;
|
|
1
|
+
{"version":3,"file":"DeployClient.js","sourceRoot":"","sources":["../src/DeployClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { IDeployVersionPreflightResponse } from '@pwrdrvr/microapps-deployer';
|
|
2
2
|
export default class S3TransferUtility {
|
|
3
3
|
static UploadDir(s3Path: string, destPrefixPath: string, bucketName: string, preflightResponse: IDeployVersionPreflightResponse): Promise<void>;
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Resursively enumerate the files to be uploaded
|
|
6
|
+
* @param dir
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
static GetFiles(dir: string): Promise<string | string[]>;
|
|
5
10
|
}
|
|
6
11
|
//# sourceMappingURL=S3TransferUtility.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3TransferUtility.d.ts","sourceRoot":"","sources":["../src/S3TransferUtility.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"S3TransferUtility.d.ts","sourceRoot":"","sources":["../src/S3TransferUtility.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAI9E,MAAM,CAAC,OAAO,OAAO,iBAAiB;WAChB,SAAS,CAC3B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,+BAA+B,GACjD,OAAO,CAAC,IAAI,CAAC;IAqDhB;;;;OAIG;WACiB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;CAUtE"}
|
|
@@ -49,6 +49,11 @@ class S3TransferUtility {
|
|
|
49
49
|
}
|
|
50
50
|
// Recursive getFiles from
|
|
51
51
|
// https://stackoverflow.com/a/45130990/831465
|
|
52
|
+
/**
|
|
53
|
+
* Resursively enumerate the files to be uploaded
|
|
54
|
+
* @param dir
|
|
55
|
+
* @returns
|
|
56
|
+
*/
|
|
52
57
|
static async GetFiles(dir) {
|
|
53
58
|
const dirents = await fs_1.promises.readdir(dir, { withFileTypes: true });
|
|
54
59
|
const files = await Promise.all(dirents.map((dirent) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3TransferUtility.js","sourceRoot":"","sources":["../src/S3TransferUtility.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,oDAAoD;AACpD,EAAE;;;AAEF,2BAAsD;AACtD,mDAA6B;AAC7B,+DAAyC;AACzC,sDAA8C;
|
|
1
|
+
{"version":3,"file":"S3TransferUtility.js","sourceRoot":"","sources":["../src/S3TransferUtility.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,oDAAoD;AACpD,EAAE;;;AAEF,2BAAsD;AACtD,mDAA6B;AAC7B,+DAAyC;AACzC,sDAA8C;AAE9C,2CAAyC;AACzC,0DAAyB;AAEzB,MAAqB,iBAAiB;IAC7B,MAAM,CAAC,KAAK,CAAC,SAAS,CAC3B,MAAc,EACd,cAAsB,EACtB,UAAkB,EAClB,iBAAkD;QAElD,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC;YAC/B,WAAW,EAAE,EAAE;YACf,WAAW,EAAE;gBACX,WAAW,EAAE,iBAAiB,CAAC,cAAc,CAAC,WAAW;gBACzD,eAAe,EAAE,iBAAiB,CAAC,cAAc,CAAC,eAAe;gBACjE,YAAY,EAAE,iBAAiB,CAAC,cAAc,CAAC,YAAY;aAC5D;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAa,CAAC;QACrE,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC/D,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;SACjC;QAED,wCAAwC;QACxC,MAAM,eAAI,CACR,KAAK,EACL,KAAK,EAAE,QAAQ,EAAE,EAAE;YACjB,qDAAqD;YACrD,MAAM,MAAM,GAAG,IAAI,oBAAM,CAAC;gBACxB,MAAM,EAAE,QAAQ;gBAChB,iBAAiB,EAAE,KAAK;gBACxB,MAAM,EAAE;oBACN,MAAM,EAAE,UAAU;oBAClB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;oBACpC,IAAI,EAAE,qBAAgB,CAAC,QAAQ,CAAC;oBAChC,WAAW,EAAE,wBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,0BAA0B;oBAC/E,YAAY,EAAE,uBAAuB;iBACtC;aACF,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,EACD;YACE,WAAW,EAAE,EAAE;SAChB,CASF,CAAC;IACJ,CAAC;IACD,0BAA0B;IAC1B,8CAA8C;IAE9C;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAW;QACtC,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACtE,CAAC,CAAC,CACH,CAAC;QACF,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1C,CAAC;CACF;AA1ED,oCA0EC"}
|
package/dist/S3Uploader.d.ts
CHANGED
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
import { IDeployVersionPreflightResponse } from '@pwrdrvr/microapps-deployer';
|
|
2
2
|
import { IConfig } from './config/Config';
|
|
3
3
|
export default class S3Uploader {
|
|
4
|
+
/**
|
|
5
|
+
* Copy files to local upload directory
|
|
6
|
+
* @param config
|
|
7
|
+
* @param s3UploadPath
|
|
8
|
+
* @param preflightResponse
|
|
9
|
+
*/
|
|
10
|
+
static CopyToUploadDir(config: IConfig, s3UploadPath: string): Promise<void>;
|
|
11
|
+
static ParseUploadPath(s3UploadPath: string): {
|
|
12
|
+
bucketName: string;
|
|
13
|
+
destinationPrefix: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Upload files to S3
|
|
17
|
+
* @param config
|
|
18
|
+
* @param s3UploadPath
|
|
19
|
+
* @param preflightResponse
|
|
20
|
+
*/
|
|
4
21
|
static Upload(config: IConfig, s3UploadPath: string, preflightResponse: IDeployVersionPreflightResponse): Promise<void>;
|
|
5
22
|
static removeTempDirIfExists(): Promise<void>;
|
|
6
23
|
private static readonly _tempDir;
|
|
24
|
+
static get TempDir(): string;
|
|
7
25
|
}
|
|
8
26
|
//# sourceMappingURL=S3Uploader.d.ts.map
|
package/dist/S3Uploader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3Uploader.d.ts","sourceRoot":"","sources":["../src/S3Uploader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"S3Uploader.d.ts","sourceRoot":"","sources":["../src/S3Uploader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B;;;;;OAKG;WACiB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAa3E,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG;QACnD,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B;IASD;;;;;OAKG;WACiB,MAAM,CACxB,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,+BAA+B,GACjD,OAAO,CAAC,IAAI,CAAC;WA2BI,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IACvD,WAAkB,OAAO,IAAI,MAAM,CAElC;CACF"}
|
package/dist/S3Uploader.js
CHANGED
|
@@ -5,13 +5,38 @@ const path_1 = tslib_1.__importDefault(require("path"));
|
|
|
5
5
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
6
6
|
const S3TransferUtility_1 = tslib_1.__importDefault(require("./S3TransferUtility"));
|
|
7
7
|
class S3Uploader {
|
|
8
|
+
/**
|
|
9
|
+
* Copy files to local upload directory
|
|
10
|
+
* @param config
|
|
11
|
+
* @param s3UploadPath
|
|
12
|
+
* @param preflightResponse
|
|
13
|
+
*/
|
|
14
|
+
static async CopyToUploadDir(config, s3UploadPath) {
|
|
15
|
+
const { destinationPrefix } = S3Uploader.ParseUploadPath(s3UploadPath);
|
|
16
|
+
// Make a local root dir for the upload
|
|
17
|
+
const tempUploadPath = path_1.default.join(S3Uploader._tempDir, destinationPrefix);
|
|
18
|
+
await S3Uploader.removeTempDirIfExists();
|
|
19
|
+
await fs_extra_1.default.mkdir(tempUploadPath, { recursive: true });
|
|
20
|
+
// Copy the files in the source dir to the root dir
|
|
21
|
+
// Note: It would be faster to move the files, then move them back
|
|
22
|
+
await fs_extra_1.default.copy(config.app.staticAssetsPath, tempUploadPath);
|
|
23
|
+
}
|
|
24
|
+
static ParseUploadPath(s3UploadPath) {
|
|
25
|
+
// Parse the S3 Source URI
|
|
26
|
+
const uri = new URL(s3UploadPath);
|
|
27
|
+
const bucketName = uri.host;
|
|
28
|
+
const destinationPrefix = uri.pathname.length >= 1 ? uri.pathname.slice(1) : '';
|
|
29
|
+
return { bucketName, destinationPrefix };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Upload files to S3
|
|
33
|
+
* @param config
|
|
34
|
+
* @param s3UploadPath
|
|
35
|
+
* @param preflightResponse
|
|
36
|
+
*/
|
|
8
37
|
static async Upload(config, s3UploadPath, preflightResponse) {
|
|
9
38
|
try {
|
|
10
|
-
|
|
11
|
-
// Parse the S3 Source URI
|
|
12
|
-
const uri = new URL(s3UploadPath);
|
|
13
|
-
const bucketName = uri.host;
|
|
14
|
-
const destinationPrefix = uri.pathname.length >= 1 ? uri.pathname.slice(1) : '';
|
|
39
|
+
const { destinationPrefix, bucketName } = S3Uploader.ParseUploadPath(s3UploadPath);
|
|
15
40
|
// Make a local root dir for the upload
|
|
16
41
|
const tempUploadPath = path_1.default.join(S3Uploader._tempDir, destinationPrefix);
|
|
17
42
|
await S3Uploader.removeTempDirIfExists();
|
|
@@ -41,6 +66,9 @@ class S3Uploader {
|
|
|
41
66
|
// Since we want the directory deleted this is ok
|
|
42
67
|
}
|
|
43
68
|
}
|
|
69
|
+
static get TempDir() {
|
|
70
|
+
return S3Uploader._tempDir;
|
|
71
|
+
}
|
|
44
72
|
}
|
|
45
73
|
exports.default = S3Uploader;
|
|
46
74
|
S3Uploader._tempDir = './deploytool-temp';
|
package/dist/S3Uploader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3Uploader.js","sourceRoot":"","sources":["../src/S3Uploader.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;
|
|
1
|
+
{"version":3,"file":"S3Uploader.js","sourceRoot":"","sources":["../src/S3Uploader.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;AAExB,gEAA0B;AAE1B,oFAAoD;AAEpD,MAAqB,UAAU;IAC7B;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAe,EAAE,YAAoB;QACvE,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEvE,uCAAuC;QACvC,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACzE,MAAM,UAAU,CAAC,qBAAqB,EAAE,CAAC;QACzC,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,mDAAmD;QACnD,kEAAkE;QAClE,MAAM,kBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,YAAoB;QAIhD,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QAC5B,MAAM,iBAAiB,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,MAAe,EACf,YAAoB,EACpB,iBAAkD;QAElD,IAAI;YACF,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAEnF,uCAAuC;YACvC,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YACzE,MAAM,UAAU,CAAC,qBAAqB,EAAE,CAAC;YACzC,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpD,mDAAmD;YACnD,kEAAkE;YAClE,8CAA8C;YAC9C,MAAM,kBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAE3D,gBAAgB;YAChB,MAAM,2BAAiB,CAAC,SAAS,CAC/B,IAAI,CAAC,QAAQ,EACb,iBAAiB,EACjB,UAAU,EACV,iBAAiB,CAClB,CAAC;SACH;gBAAS;YACR,+DAA+D;YAC/D,MAAM,UAAU,CAAC,qBAAqB,EAAE,CAAC;SAC1C;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,qBAAqB;QACvC,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;gBACvB,MAAM,kBAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aACvD;SACF;QAAC,WAAM;YACN,aAAa;YACb,gDAAgD;YAChD,iDAAiD;SAClD;IACH,CAAC;IAGM,MAAM,KAAK,OAAO;QACvB,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;;AArFH,6BAsFC;AAJyB,mBAAQ,GAAG,mBAAmB,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,6BAA6B,CAAC;AAErC,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,6BAA6B,CAAC;AAErC,OAAO,kBAAkB,CAAC;AAM1B,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAgCxD,cAAM,WAAY,SAAQ,OAAO;IAC/B,MAAM,CAAC,KAAK;;;;;;;MA6BV;IAGF,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,eAAe,CAGnB;IACJ,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY;IAK1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA6Tb,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB1C,OAAO,CAAC,cAAc;YAIR,gBAAgB;YA0ChB,UAAU;YAeV,YAAY;YAQZ,cAAc;CAgD7B;AAKD,eAAe,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,15 +9,20 @@ require("reflect-metadata");
|
|
|
9
9
|
const child_process_1 = require("child_process");
|
|
10
10
|
const util = tslib_1.__importStar(require("util"));
|
|
11
11
|
const lambda = tslib_1.__importStar(require("@aws-sdk/client-lambda"));
|
|
12
|
+
const s3 = tslib_1.__importStar(require("@aws-sdk/client-s3"));
|
|
12
13
|
const sts = tslib_1.__importStar(require("@aws-sdk/client-sts"));
|
|
13
14
|
const command_1 = require("@oclif/command");
|
|
14
15
|
const errors_1 = require("@oclif/errors");
|
|
15
16
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
17
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
16
18
|
const fs_extra_1 = require("fs-extra");
|
|
17
19
|
const listr2_1 = require("listr2");
|
|
18
20
|
const Config_1 = require("./config/Config");
|
|
19
21
|
const DeployClient_1 = tslib_1.__importDefault(require("./DeployClient"));
|
|
20
22
|
const S3Uploader_1 = tslib_1.__importDefault(require("./S3Uploader"));
|
|
23
|
+
const S3TransferUtility_1 = tslib_1.__importDefault(require("./S3TransferUtility"));
|
|
24
|
+
const lib_storage_1 = require("@aws-sdk/lib-storage");
|
|
25
|
+
const mime_types_1 = require("mime-types");
|
|
21
26
|
const asyncSetTimeout = util.promisify(setTimeout);
|
|
22
27
|
const asyncExec = util.promisify(child_process_1.exec);
|
|
23
28
|
const RUNNING_TEXT = ' RUNS ';
|
|
@@ -78,6 +83,7 @@ class PublishTool extends command_1.Command {
|
|
|
78
83
|
{ path: 'next.config.js', versions: versionOnly },
|
|
79
84
|
];
|
|
80
85
|
// Install handler to ensure that we restore files
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
81
87
|
process.on('SIGINT', async () => {
|
|
82
88
|
if (this._restoreFilesStarted) {
|
|
83
89
|
return;
|
|
@@ -85,7 +91,7 @@ class PublishTool extends command_1.Command {
|
|
|
85
91
|
else {
|
|
86
92
|
this._restoreFilesStarted = true;
|
|
87
93
|
}
|
|
88
|
-
|
|
94
|
+
this.log('Caught Ctrl-C, restoring files');
|
|
89
95
|
await S3Uploader_1.default.removeTempDirIfExists();
|
|
90
96
|
await this.restoreFiles();
|
|
91
97
|
});
|
|
@@ -96,7 +102,7 @@ class PublishTool extends command_1.Command {
|
|
|
96
102
|
this.error('StaticAssetsPath must be specified in the config file');
|
|
97
103
|
}
|
|
98
104
|
//
|
|
99
|
-
//
|
|
105
|
+
// Setup Tasks
|
|
100
106
|
//
|
|
101
107
|
const tasks = new listr2_1.Listr([
|
|
102
108
|
{
|
|
@@ -186,15 +192,87 @@ class PublishTool extends command_1.Command {
|
|
|
186
192
|
},
|
|
187
193
|
},
|
|
188
194
|
{
|
|
189
|
-
title: '
|
|
195
|
+
title: 'Copy Static Files to Local Upload Dir',
|
|
190
196
|
task: async (ctx, task) => {
|
|
191
197
|
const origTitle = task.title;
|
|
192
198
|
task.title = RUNNING + origTitle;
|
|
193
|
-
//
|
|
194
|
-
await S3Uploader_1.default.
|
|
199
|
+
// Copy files to local dir to be uploaded
|
|
200
|
+
await S3Uploader_1.default.CopyToUploadDir(config, ctx.preflightResult.response.s3UploadUrl);
|
|
195
201
|
task.title = origTitle;
|
|
196
202
|
},
|
|
197
203
|
},
|
|
204
|
+
// {
|
|
205
|
+
// title: 'Upload Files to S3 Staging AppName/Version Prefix',
|
|
206
|
+
// task: async (ctx, task) => {
|
|
207
|
+
// const origTitle = task.title;
|
|
208
|
+
// task.title = RUNNING + origTitle;
|
|
209
|
+
// const { destinationPrefix, bucketName } = S3Uploader.ParseUploadPath(
|
|
210
|
+
// ctx.preflightResult.response.s3UploadUrl,
|
|
211
|
+
// );
|
|
212
|
+
// // Upload Files to S3 Staging AppName/Version Prefix
|
|
213
|
+
// await S3TransferUtility.UploadDir(
|
|
214
|
+
// S3Uploader.TempDir,
|
|
215
|
+
// destinationPrefix,
|
|
216
|
+
// bucketName,
|
|
217
|
+
// ctx.preflightResult.response,
|
|
218
|
+
// );
|
|
219
|
+
// task.title = origTitle;
|
|
220
|
+
// },
|
|
221
|
+
// },
|
|
222
|
+
{
|
|
223
|
+
title: 'Enumerate Files to Upload to S3',
|
|
224
|
+
task: async (ctx, task) => {
|
|
225
|
+
const origTitle = task.title;
|
|
226
|
+
task.title = RUNNING + origTitle;
|
|
227
|
+
ctx.files = (await S3TransferUtility_1.default.GetFiles(S3Uploader_1.default.TempDir));
|
|
228
|
+
task.title = origTitle;
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
title: 'Upload Static Files to S3',
|
|
233
|
+
task: (ctx, task) => {
|
|
234
|
+
const origTitle = task.title;
|
|
235
|
+
task.title = RUNNING + origTitle;
|
|
236
|
+
const { bucketName } = S3Uploader_1.default.ParseUploadPath(ctx.preflightResult.response.s3UploadUrl);
|
|
237
|
+
// Use temp credentials for S3
|
|
238
|
+
const s3Client = new s3.S3Client({
|
|
239
|
+
maxAttempts: 16,
|
|
240
|
+
credentials: {
|
|
241
|
+
accessKeyId: ctx.preflightResult.response.awsCredentials.accessKeyId,
|
|
242
|
+
secretAccessKey: ctx.preflightResult.response.awsCredentials.secretAccessKey,
|
|
243
|
+
sessionToken: ctx.preflightResult.response.awsCredentials.sessionToken,
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
const tasks = ctx.files.map((filePath) => ({
|
|
247
|
+
task: async (ctx, subtask) => {
|
|
248
|
+
const origTitle = subtask.title;
|
|
249
|
+
subtask.title = RUNNING + origTitle;
|
|
250
|
+
const upload = new lib_storage_1.Upload({
|
|
251
|
+
client: s3Client,
|
|
252
|
+
leavePartsOnError: false,
|
|
253
|
+
params: {
|
|
254
|
+
Bucket: bucketName,
|
|
255
|
+
Key: path_1.default.relative(S3Uploader_1.default.TempDir, filePath),
|
|
256
|
+
Body: fs_extra_1.createReadStream(filePath),
|
|
257
|
+
ContentType: mime_types_1.contentType(path_1.default.basename(filePath)) || 'application/octet-stream',
|
|
258
|
+
CacheControl: 'max-age=86400; public',
|
|
259
|
+
},
|
|
260
|
+
});
|
|
261
|
+
await upload.done();
|
|
262
|
+
subtask.title = origTitle;
|
|
263
|
+
},
|
|
264
|
+
}));
|
|
265
|
+
task.title = origTitle;
|
|
266
|
+
return task.newListr(tasks, {
|
|
267
|
+
concurrent: 8,
|
|
268
|
+
rendererOptions: {
|
|
269
|
+
clearOutput: false,
|
|
270
|
+
showErrorMessage: true,
|
|
271
|
+
showTimer: true,
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
},
|
|
275
|
+
},
|
|
198
276
|
{
|
|
199
277
|
title: `Creating MicroApp Application: ${config.app.name}`,
|
|
200
278
|
task: async (ctx, task) => {
|
|
@@ -215,13 +293,17 @@ class PublishTool extends command_1.Command {
|
|
|
215
293
|
task.title = origTitle;
|
|
216
294
|
},
|
|
217
295
|
},
|
|
218
|
-
]
|
|
296
|
+
], {
|
|
297
|
+
rendererOptions: {
|
|
298
|
+
showTimer: true,
|
|
299
|
+
},
|
|
300
|
+
});
|
|
219
301
|
try {
|
|
220
302
|
await tasks.run();
|
|
221
|
-
|
|
303
|
+
this.log(`Published: ${config.app.name}/${config.app.semVer}`);
|
|
222
304
|
}
|
|
223
305
|
catch (error) {
|
|
224
|
-
|
|
306
|
+
this.log(`Caught exception: ${error.message}`);
|
|
225
307
|
}
|
|
226
308
|
finally {
|
|
227
309
|
await this.restoreFiles();
|
|
@@ -288,30 +370,30 @@ class PublishTool extends command_1.Command {
|
|
|
288
370
|
return true;
|
|
289
371
|
}
|
|
290
372
|
async publishToECR(config) {
|
|
291
|
-
console.log('Starting Docker build');
|
|
373
|
+
// console.log('Starting Docker build');
|
|
292
374
|
await asyncExec(`docker build -f Dockerfile -t ${this.IMAGE_TAG} .`);
|
|
293
375
|
await asyncExec(`docker tag ${this.IMAGE_TAG} ${config.app.ecrHost}/${this.IMAGE_TAG}`);
|
|
294
|
-
console.log('Starting Docker push to ECR');
|
|
376
|
+
// console.log('Starting Docker push to ECR');
|
|
295
377
|
await asyncExec(`docker push ${config.app.ecrHost}/${this.IMAGE_TAG}`);
|
|
296
378
|
}
|
|
297
379
|
async deployToLambda(config, versions) {
|
|
298
380
|
var _a;
|
|
299
381
|
// Create Lambda version
|
|
300
|
-
console.log('Updating Lambda code to point to new Docker image');
|
|
382
|
+
// console.log('Updating Lambda code to point to new Docker image');
|
|
301
383
|
const resultUpdate = await lambdaClient.send(new lambda.UpdateFunctionCodeCommand({
|
|
302
384
|
FunctionName: config.app.lambdaName,
|
|
303
385
|
ImageUri: this.IMAGE_URI,
|
|
304
386
|
Publish: true,
|
|
305
387
|
}));
|
|
306
388
|
const lambdaVersion = resultUpdate.Version;
|
|
307
|
-
console.log('Lambda version created: ', resultUpdate.Version);
|
|
389
|
+
// console.log('Lambda version created: ', resultUpdate.Version);
|
|
308
390
|
let lastUpdateStatus = resultUpdate.LastUpdateStatus;
|
|
309
391
|
for (let i = 0; i < 5; i++) {
|
|
310
392
|
// When the function is created the status will be "Pending"
|
|
311
393
|
// and we have to wait until it's done creating
|
|
312
394
|
// before we can point an alias to it
|
|
313
395
|
if (lastUpdateStatus === 'Successful') {
|
|
314
|
-
console.log(`Lambda function updated, version: ${lambdaVersion}`);
|
|
396
|
+
// console.log(`Lambda function updated, version: ${lambdaVersion}`);
|
|
315
397
|
break;
|
|
316
398
|
}
|
|
317
399
|
// If it didn't work, wait and try again
|
|
@@ -324,13 +406,13 @@ class PublishTool extends command_1.Command {
|
|
|
324
406
|
lastUpdateStatus = (_a = resultGet === null || resultGet === void 0 ? void 0 : resultGet.Configuration) === null || _a === void 0 ? void 0 : _a.LastUpdateStatus;
|
|
325
407
|
}
|
|
326
408
|
// Create Lambda alias point
|
|
327
|
-
console.log(`Creating the lambda alias for the new version: ${lambdaVersion}`);
|
|
409
|
+
// console.log(`Creating the lambda alias for the new version: ${lambdaVersion}`);
|
|
328
410
|
const resultLambdaAlias = await lambdaClient.send(new lambda.CreateAliasCommand({
|
|
329
411
|
FunctionName: config.app.lambdaName,
|
|
330
412
|
Name: versions.alias,
|
|
331
413
|
FunctionVersion: lambdaVersion,
|
|
332
414
|
}));
|
|
333
|
-
console.log(`Lambda alias created, name: ${resultLambdaAlias.Name}`);
|
|
415
|
+
// console.log(`Lambda alias created, name: ${resultLambdaAlias.Name}`);
|
|
334
416
|
}
|
|
335
417
|
}
|
|
336
418
|
PublishTool.flags = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/DeployClient.ts
CHANGED
package/src/S3TransferUtility.ts
CHANGED
|
@@ -6,7 +6,6 @@ import { promises as fs, createReadStream } from 'fs';
|
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import * as s3 from '@aws-sdk/client-s3';
|
|
8
8
|
import { Upload } from '@aws-sdk/lib-storage';
|
|
9
|
-
// eslint-disable-next-line import/no-extraneous-dependencies,import/no-unresolved
|
|
10
9
|
import { IDeployVersionPreflightResponse } from '@pwrdrvr/microapps-deployer';
|
|
11
10
|
import { contentType } from 'mime-types';
|
|
12
11
|
import pMap from 'p-map';
|
|
@@ -70,7 +69,12 @@ export default class S3TransferUtility {
|
|
|
70
69
|
// Recursive getFiles from
|
|
71
70
|
// https://stackoverflow.com/a/45130990/831465
|
|
72
71
|
|
|
73
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Resursively enumerate the files to be uploaded
|
|
74
|
+
* @param dir
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
77
|
+
public static async GetFiles(dir: string): Promise<string | string[]> {
|
|
74
78
|
const dirents = await fs.readdir(dir, { withFileTypes: true });
|
|
75
79
|
const files = await Promise.all(
|
|
76
80
|
dirents.map((dirent) => {
|
package/src/S3Uploader.ts
CHANGED
|
@@ -1,23 +1,54 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
// eslint-disable-next-line import/no-extraneous-dependencies,import/no-unresolved
|
|
3
2
|
import { IDeployVersionPreflightResponse } from '@pwrdrvr/microapps-deployer';
|
|
4
3
|
import fs from 'fs-extra';
|
|
5
4
|
import { IConfig } from './config/Config';
|
|
6
5
|
import S3TransferUtility from './S3TransferUtility';
|
|
7
6
|
|
|
8
7
|
export default class S3Uploader {
|
|
8
|
+
/**
|
|
9
|
+
* Copy files to local upload directory
|
|
10
|
+
* @param config
|
|
11
|
+
* @param s3UploadPath
|
|
12
|
+
* @param preflightResponse
|
|
13
|
+
*/
|
|
14
|
+
public static async CopyToUploadDir(config: IConfig, s3UploadPath: string): Promise<void> {
|
|
15
|
+
const { destinationPrefix } = S3Uploader.ParseUploadPath(s3UploadPath);
|
|
16
|
+
|
|
17
|
+
// Make a local root dir for the upload
|
|
18
|
+
const tempUploadPath = path.join(S3Uploader._tempDir, destinationPrefix);
|
|
19
|
+
await S3Uploader.removeTempDirIfExists();
|
|
20
|
+
await fs.mkdir(tempUploadPath, { recursive: true });
|
|
21
|
+
|
|
22
|
+
// Copy the files in the source dir to the root dir
|
|
23
|
+
// Note: It would be faster to move the files, then move them back
|
|
24
|
+
await fs.copy(config.app.staticAssetsPath, tempUploadPath);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public static ParseUploadPath(s3UploadPath: string): {
|
|
28
|
+
bucketName: string;
|
|
29
|
+
destinationPrefix: string;
|
|
30
|
+
} {
|
|
31
|
+
// Parse the S3 Source URI
|
|
32
|
+
const uri = new URL(s3UploadPath);
|
|
33
|
+
const bucketName = uri.host;
|
|
34
|
+
const destinationPrefix = uri.pathname.length >= 1 ? uri.pathname.slice(1) : '';
|
|
35
|
+
|
|
36
|
+
return { bucketName, destinationPrefix };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Upload files to S3
|
|
41
|
+
* @param config
|
|
42
|
+
* @param s3UploadPath
|
|
43
|
+
* @param preflightResponse
|
|
44
|
+
*/
|
|
9
45
|
public static async Upload(
|
|
10
46
|
config: IConfig,
|
|
11
47
|
s3UploadPath: string,
|
|
12
48
|
preflightResponse: IDeployVersionPreflightResponse,
|
|
13
49
|
): Promise<void> {
|
|
14
50
|
try {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// Parse the S3 Source URI
|
|
18
|
-
const uri = new URL(s3UploadPath);
|
|
19
|
-
const bucketName = uri.host;
|
|
20
|
-
const destinationPrefix = uri.pathname.length >= 1 ? uri.pathname.slice(1) : '';
|
|
51
|
+
const { destinationPrefix, bucketName } = S3Uploader.ParseUploadPath(s3UploadPath);
|
|
21
52
|
|
|
22
53
|
// Make a local root dir for the upload
|
|
23
54
|
const tempUploadPath = path.join(S3Uploader._tempDir, destinationPrefix);
|
|
@@ -56,4 +87,7 @@ export default class S3Uploader {
|
|
|
56
87
|
}
|
|
57
88
|
|
|
58
89
|
private static readonly _tempDir = './deploytool-temp';
|
|
90
|
+
public static get TempDir(): string {
|
|
91
|
+
return S3Uploader._tempDir;
|
|
92
|
+
}
|
|
59
93
|
}
|
package/src/index.ts
CHANGED
|
@@ -7,16 +7,21 @@ import 'reflect-metadata';
|
|
|
7
7
|
import { exec } from 'child_process';
|
|
8
8
|
import * as util from 'util';
|
|
9
9
|
import * as lambda from '@aws-sdk/client-lambda';
|
|
10
|
+
import * as s3 from '@aws-sdk/client-s3';
|
|
10
11
|
import * as sts from '@aws-sdk/client-sts';
|
|
11
12
|
import { Command, flags as flagsParser } from '@oclif/command';
|
|
12
13
|
import { IConfig as OCLIFIConfig } from '@oclif/config';
|
|
13
14
|
import { handle as errorHandler } from '@oclif/errors';
|
|
14
15
|
import chalk from 'chalk';
|
|
15
|
-
import
|
|
16
|
+
import path from 'path';
|
|
17
|
+
import { promises as fs, pathExists, createReadStream } from 'fs-extra';
|
|
16
18
|
import { Listr, ListrErrorTypes, ListrTask, ListrTaskObject } from 'listr2';
|
|
17
19
|
import { Config, IConfig } from './config/Config';
|
|
18
20
|
import DeployClient, { IDeployVersionPreflightResult } from './DeployClient';
|
|
19
21
|
import S3Uploader from './S3Uploader';
|
|
22
|
+
import S3TransferUtility from './S3TransferUtility';
|
|
23
|
+
import { Upload } from '@aws-sdk/lib-storage';
|
|
24
|
+
import { contentType } from 'mime-types';
|
|
20
25
|
const asyncSetTimeout = util.promisify(setTimeout);
|
|
21
26
|
const asyncExec = util.promisify(exec);
|
|
22
27
|
|
|
@@ -34,6 +39,7 @@ interface IVersions {
|
|
|
34
39
|
|
|
35
40
|
interface IContext {
|
|
36
41
|
preflightResult: IDeployVersionPreflightResult;
|
|
42
|
+
files: string[];
|
|
37
43
|
}
|
|
38
44
|
|
|
39
45
|
class PublishTool extends Command {
|
|
@@ -132,13 +138,14 @@ class PublishTool extends Command {
|
|
|
132
138
|
] as { path: string; versions: IVersions }[];
|
|
133
139
|
|
|
134
140
|
// Install handler to ensure that we restore files
|
|
141
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
135
142
|
process.on('SIGINT', async () => {
|
|
136
143
|
if (this._restoreFilesStarted) {
|
|
137
144
|
return;
|
|
138
145
|
} else {
|
|
139
146
|
this._restoreFilesStarted = true;
|
|
140
147
|
}
|
|
141
|
-
|
|
148
|
+
this.log('Caught Ctrl-C, restoring files');
|
|
142
149
|
await S3Uploader.removeTempDirIfExists();
|
|
143
150
|
await this.restoreFiles();
|
|
144
151
|
});
|
|
@@ -151,161 +158,253 @@ class PublishTool extends Command {
|
|
|
151
158
|
}
|
|
152
159
|
|
|
153
160
|
//
|
|
154
|
-
//
|
|
161
|
+
// Setup Tasks
|
|
155
162
|
//
|
|
156
163
|
|
|
157
|
-
const tasks = new Listr<IContext>(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
164
|
+
const tasks = new Listr<IContext>(
|
|
165
|
+
[
|
|
166
|
+
{
|
|
167
|
+
title: 'Logging into ECR',
|
|
168
|
+
task: async (ctx, task) => {
|
|
169
|
+
const origTitle = task.title;
|
|
170
|
+
task.title = RUNNING + origTitle;
|
|
163
171
|
|
|
164
|
-
|
|
172
|
+
await this.loginToECR(config);
|
|
165
173
|
|
|
166
|
-
|
|
174
|
+
task.title = origTitle;
|
|
175
|
+
},
|
|
167
176
|
},
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
177
|
+
{
|
|
178
|
+
title: 'Modifying Config Files',
|
|
179
|
+
task: async (ctx, task) => {
|
|
180
|
+
const origTitle = task.title;
|
|
181
|
+
task.title = RUNNING + origTitle;
|
|
182
|
+
|
|
183
|
+
// Modify the existing files with the new version
|
|
184
|
+
for (const fileToModify of this.FILES_TO_MODIFY) {
|
|
185
|
+
task.output = `Patching version (${this.VersionAndAlias.version}) into ${fileToModify.path}`;
|
|
186
|
+
if (
|
|
187
|
+
!(await this.writeNewVersions(fileToModify.path, fileToModify.versions, leaveFiles))
|
|
188
|
+
) {
|
|
189
|
+
task.output = `Failed modifying file: ${fileToModify.path}`;
|
|
190
|
+
}
|
|
182
191
|
}
|
|
183
|
-
}
|
|
184
192
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
title: 'Preflight Version Check',
|
|
190
|
-
task: async (ctx, task) => {
|
|
191
|
-
const origTitle = task.title;
|
|
192
|
-
task.title = RUNNING + origTitle;
|
|
193
|
-
|
|
194
|
-
// Confirm the Version Does Not Exist in Published State
|
|
195
|
-
task.output = `Checking if deployed app/version already exists for ${config.app.name}/${version}`;
|
|
196
|
-
ctx.preflightResult = await DeployClient.DeployVersionPreflight(config);
|
|
197
|
-
if (ctx.preflightResult.exists) {
|
|
198
|
-
task.output = `Warning: App/Version already exists: ${config.app.name}/${config.app.semVer}`;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
task.title = origTitle;
|
|
193
|
+
task.title = origTitle;
|
|
194
|
+
},
|
|
202
195
|
},
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
196
|
+
{
|
|
197
|
+
title: 'Preflight Version Check',
|
|
198
|
+
task: async (ctx, task) => {
|
|
199
|
+
const origTitle = task.title;
|
|
200
|
+
task.title = RUNNING + origTitle;
|
|
201
|
+
|
|
202
|
+
// Confirm the Version Does Not Exist in Published State
|
|
203
|
+
task.output = `Checking if deployed app/version already exists for ${config.app.name}/${version}`;
|
|
204
|
+
ctx.preflightResult = await DeployClient.DeployVersionPreflight(config);
|
|
205
|
+
if (ctx.preflightResult.exists) {
|
|
206
|
+
task.output = `Warning: App/Version already exists: ${config.app.name}/${config.app.semVer}`;
|
|
207
|
+
}
|
|
214
208
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
209
|
+
task.title = origTitle;
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
title: 'Serverless Next.js Build',
|
|
214
|
+
task: async (ctx, task) => {
|
|
215
|
+
const origTitle = task.title;
|
|
216
|
+
task.title = RUNNING + origTitle;
|
|
217
|
+
|
|
218
|
+
task.output = `Invoking serverless next.js build for ${config.app.name}/${version}`;
|
|
219
|
+
|
|
220
|
+
// Run the serverless next.js build
|
|
221
|
+
await asyncExec('serverless');
|
|
222
|
+
|
|
223
|
+
if (config.app.serverlessNextRouterPath !== undefined) {
|
|
224
|
+
task.output = 'Copying Serverless Next.js router to build output directory';
|
|
225
|
+
await fs.copyFile(
|
|
226
|
+
config.app.serverlessNextRouterPath,
|
|
227
|
+
'./.serverless_nextjs/index.js',
|
|
228
|
+
);
|
|
229
|
+
}
|
|
219
230
|
|
|
220
|
-
|
|
231
|
+
task.title = origTitle;
|
|
232
|
+
},
|
|
221
233
|
},
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
234
|
+
{
|
|
235
|
+
title: 'Publish to ECR',
|
|
236
|
+
task: async (ctx, task) => {
|
|
237
|
+
const origTitle = task.title;
|
|
238
|
+
task.title = RUNNING + origTitle;
|
|
239
|
+
|
|
240
|
+
// Docker, build, tag, push to ECR
|
|
241
|
+
// Note: Need to already have AWS env vars set
|
|
242
|
+
await this.publishToECR(config);
|
|
243
|
+
|
|
244
|
+
task.title = origTitle;
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
title: 'Deploy to Lambda',
|
|
249
|
+
task: async (ctx, task) => {
|
|
250
|
+
const origTitle = task.title;
|
|
251
|
+
task.title = RUNNING + origTitle;
|
|
228
252
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
await this.publishToECR(config);
|
|
253
|
+
// Update the Lambda function
|
|
254
|
+
await this.deployToLambda(config, this.VersionAndAlias);
|
|
232
255
|
|
|
233
|
-
|
|
256
|
+
task.title = origTitle;
|
|
257
|
+
},
|
|
234
258
|
},
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
259
|
+
{
|
|
260
|
+
title: 'Confirm Static Assets Folder Exists',
|
|
261
|
+
task: async (ctx, task) => {
|
|
262
|
+
const origTitle = task.title;
|
|
263
|
+
task.title = RUNNING + origTitle;
|
|
264
|
+
|
|
265
|
+
// Check that Static Assets Folder exists
|
|
266
|
+
if (!(await pathExists(config.app.staticAssetsPath))) {
|
|
267
|
+
this.error(`Static asset path does not exist: ${config.app.staticAssetsPath}`);
|
|
268
|
+
}
|
|
244
269
|
|
|
245
|
-
|
|
270
|
+
task.title = origTitle;
|
|
271
|
+
},
|
|
246
272
|
},
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
task.title = RUNNING + origTitle;
|
|
273
|
+
{
|
|
274
|
+
title: 'Copy Static Files to Local Upload Dir',
|
|
275
|
+
task: async (ctx, task) => {
|
|
276
|
+
const origTitle = task.title;
|
|
277
|
+
task.title = RUNNING + origTitle;
|
|
253
278
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
this.error(`Static asset path does not exist: ${config.app.staticAssetsPath}`);
|
|
257
|
-
}
|
|
279
|
+
// Copy files to local dir to be uploaded
|
|
280
|
+
await S3Uploader.CopyToUploadDir(config, ctx.preflightResult.response.s3UploadUrl);
|
|
258
281
|
|
|
259
|
-
|
|
282
|
+
task.title = origTitle;
|
|
283
|
+
},
|
|
260
284
|
},
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
285
|
+
// {
|
|
286
|
+
// title: 'Upload Files to S3 Staging AppName/Version Prefix',
|
|
287
|
+
// task: async (ctx, task) => {
|
|
288
|
+
// const origTitle = task.title;
|
|
289
|
+
// task.title = RUNNING + origTitle;
|
|
290
|
+
|
|
291
|
+
// const { destinationPrefix, bucketName } = S3Uploader.ParseUploadPath(
|
|
292
|
+
// ctx.preflightResult.response.s3UploadUrl,
|
|
293
|
+
// );
|
|
294
|
+
|
|
295
|
+
// // Upload Files to S3 Staging AppName/Version Prefix
|
|
296
|
+
// await S3TransferUtility.UploadDir(
|
|
297
|
+
// S3Uploader.TempDir,
|
|
298
|
+
// destinationPrefix,
|
|
299
|
+
// bucketName,
|
|
300
|
+
// ctx.preflightResult.response,
|
|
301
|
+
// );
|
|
302
|
+
|
|
303
|
+
// task.title = origTitle;
|
|
304
|
+
// },
|
|
305
|
+
// },
|
|
306
|
+
{
|
|
307
|
+
title: 'Enumerate Files to Upload to S3',
|
|
308
|
+
task: async (ctx, task) => {
|
|
309
|
+
const origTitle = task.title;
|
|
310
|
+
task.title = RUNNING + origTitle;
|
|
311
|
+
|
|
312
|
+
ctx.files = (await S3TransferUtility.GetFiles(S3Uploader.TempDir)) as string[];
|
|
313
|
+
|
|
314
|
+
task.title = origTitle;
|
|
315
|
+
},
|
|
276
316
|
},
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
317
|
+
{
|
|
318
|
+
title: 'Upload Static Files to S3',
|
|
319
|
+
task: (ctx, task) => {
|
|
320
|
+
const origTitle = task.title;
|
|
321
|
+
task.title = RUNNING + origTitle;
|
|
322
|
+
|
|
323
|
+
const { bucketName } = S3Uploader.ParseUploadPath(
|
|
324
|
+
ctx.preflightResult.response.s3UploadUrl,
|
|
325
|
+
);
|
|
326
|
+
|
|
327
|
+
// Use temp credentials for S3
|
|
328
|
+
const s3Client = new s3.S3Client({
|
|
329
|
+
maxAttempts: 16,
|
|
330
|
+
credentials: {
|
|
331
|
+
accessKeyId: ctx.preflightResult.response.awsCredentials.accessKeyId,
|
|
332
|
+
secretAccessKey: ctx.preflightResult.response.awsCredentials.secretAccessKey,
|
|
333
|
+
sessionToken: ctx.preflightResult.response.awsCredentials.sessionToken,
|
|
334
|
+
},
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
const tasks: ListrTask<IContext>[] = ctx.files.map((filePath) => ({
|
|
338
|
+
task: async (ctx: IContext, subtask) => {
|
|
339
|
+
const origTitle = subtask.title;
|
|
340
|
+
subtask.title = RUNNING + origTitle;
|
|
341
|
+
|
|
342
|
+
const upload = new Upload({
|
|
343
|
+
client: s3Client,
|
|
344
|
+
leavePartsOnError: false,
|
|
345
|
+
params: {
|
|
346
|
+
Bucket: bucketName,
|
|
347
|
+
Key: path.relative(S3Uploader.TempDir, filePath),
|
|
348
|
+
Body: createReadStream(filePath),
|
|
349
|
+
ContentType: contentType(path.basename(filePath)) || 'application/octet-stream',
|
|
350
|
+
CacheControl: 'max-age=86400; public',
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
await upload.done();
|
|
354
|
+
|
|
355
|
+
subtask.title = origTitle;
|
|
356
|
+
},
|
|
357
|
+
}));
|
|
358
|
+
|
|
359
|
+
task.title = origTitle;
|
|
360
|
+
|
|
361
|
+
return task.newListr(tasks, {
|
|
362
|
+
concurrent: 8,
|
|
363
|
+
rendererOptions: {
|
|
364
|
+
clearOutput: false,
|
|
365
|
+
showErrorMessage: true,
|
|
366
|
+
showTimer: true,
|
|
367
|
+
},
|
|
368
|
+
});
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
title: `Creating MicroApp Application: ${config.app.name}`,
|
|
373
|
+
task: async (ctx, task) => {
|
|
374
|
+
const origTitle = task.title;
|
|
375
|
+
task.title = RUNNING + origTitle;
|
|
283
376
|
|
|
284
|
-
|
|
285
|
-
|
|
377
|
+
// Call Deployer to Create App if Not Exists
|
|
378
|
+
await DeployClient.CreateApp(config);
|
|
286
379
|
|
|
287
|
-
|
|
380
|
+
task.title = origTitle;
|
|
381
|
+
},
|
|
288
382
|
},
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
task.title = RUNNING + origTitle;
|
|
383
|
+
{
|
|
384
|
+
title: `Creating MicroApp Version: ${config.app.semVer}`,
|
|
385
|
+
task: async (ctx, task) => {
|
|
386
|
+
const origTitle = task.title;
|
|
387
|
+
task.title = RUNNING + origTitle;
|
|
295
388
|
|
|
296
|
-
|
|
297
|
-
|
|
389
|
+
// Call Deployer to Deploy AppName/Version
|
|
390
|
+
await DeployClient.DeployVersion(config);
|
|
298
391
|
|
|
299
|
-
|
|
392
|
+
task.title = origTitle;
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
],
|
|
396
|
+
{
|
|
397
|
+
rendererOptions: {
|
|
398
|
+
showTimer: true,
|
|
300
399
|
},
|
|
301
400
|
},
|
|
302
|
-
|
|
401
|
+
);
|
|
303
402
|
|
|
304
403
|
try {
|
|
305
404
|
await tasks.run();
|
|
306
|
-
|
|
405
|
+
this.log(`Published: ${config.app.name}/${config.app.semVer}`);
|
|
307
406
|
} catch (error) {
|
|
308
|
-
|
|
407
|
+
this.log(`Caught exception: ${error.message}`);
|
|
309
408
|
} finally {
|
|
310
409
|
await this.restoreFiles();
|
|
311
410
|
}
|
|
@@ -391,16 +490,16 @@ class PublishTool extends Command {
|
|
|
391
490
|
}
|
|
392
491
|
|
|
393
492
|
private async publishToECR(config: IConfig): Promise<void> {
|
|
394
|
-
console.log('Starting Docker build');
|
|
493
|
+
// console.log('Starting Docker build');
|
|
395
494
|
await asyncExec(`docker build -f Dockerfile -t ${this.IMAGE_TAG} .`);
|
|
396
495
|
await asyncExec(`docker tag ${this.IMAGE_TAG} ${config.app.ecrHost}/${this.IMAGE_TAG}`);
|
|
397
|
-
console.log('Starting Docker push to ECR');
|
|
496
|
+
// console.log('Starting Docker push to ECR');
|
|
398
497
|
await asyncExec(`docker push ${config.app.ecrHost}/${this.IMAGE_TAG}`);
|
|
399
498
|
}
|
|
400
499
|
|
|
401
500
|
private async deployToLambda(config: IConfig, versions: IVersions): Promise<void> {
|
|
402
501
|
// Create Lambda version
|
|
403
|
-
console.log('Updating Lambda code to point to new Docker image');
|
|
502
|
+
// console.log('Updating Lambda code to point to new Docker image');
|
|
404
503
|
const resultUpdate = await lambdaClient.send(
|
|
405
504
|
new lambda.UpdateFunctionCodeCommand({
|
|
406
505
|
FunctionName: config.app.lambdaName,
|
|
@@ -409,7 +508,7 @@ class PublishTool extends Command {
|
|
|
409
508
|
}),
|
|
410
509
|
);
|
|
411
510
|
const lambdaVersion = resultUpdate.Version;
|
|
412
|
-
console.log('Lambda version created: ', resultUpdate.Version);
|
|
511
|
+
// console.log('Lambda version created: ', resultUpdate.Version);
|
|
413
512
|
|
|
414
513
|
let lastUpdateStatus = resultUpdate.LastUpdateStatus;
|
|
415
514
|
for (let i = 0; i < 5; i++) {
|
|
@@ -417,7 +516,7 @@ class PublishTool extends Command {
|
|
|
417
516
|
// and we have to wait until it's done creating
|
|
418
517
|
// before we can point an alias to it
|
|
419
518
|
if (lastUpdateStatus === 'Successful') {
|
|
420
|
-
console.log(`Lambda function updated, version: ${lambdaVersion}`);
|
|
519
|
+
// console.log(`Lambda function updated, version: ${lambdaVersion}`);
|
|
421
520
|
break;
|
|
422
521
|
}
|
|
423
522
|
|
|
@@ -436,7 +535,7 @@ class PublishTool extends Command {
|
|
|
436
535
|
}
|
|
437
536
|
|
|
438
537
|
// Create Lambda alias point
|
|
439
|
-
console.log(`Creating the lambda alias for the new version: ${lambdaVersion}`);
|
|
538
|
+
// console.log(`Creating the lambda alias for the new version: ${lambdaVersion}`);
|
|
440
539
|
const resultLambdaAlias = await lambdaClient.send(
|
|
441
540
|
new lambda.CreateAliasCommand({
|
|
442
541
|
FunctionName: config.app.lambdaName,
|
|
@@ -444,7 +543,7 @@ class PublishTool extends Command {
|
|
|
444
543
|
FunctionVersion: lambdaVersion,
|
|
445
544
|
}),
|
|
446
545
|
);
|
|
447
|
-
console.log(`Lambda alias created, name: ${resultLambdaAlias.Name}`);
|
|
546
|
+
// console.log(`Lambda alias created, name: ${resultLambdaAlias.Name}`);
|
|
448
547
|
}
|
|
449
548
|
}
|
|
450
549
|
|