@lakutata/cli 1.0.31 → 1.0.33

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/build/Deploy.js CHANGED
@@ -2,19 +2,38 @@
2
2
  "use strict";
3
3
  (async () => {
4
4
  const path = require('path');
5
+ const fs = require('fs');
5
6
  const args = require('args');
6
7
  const inquirer = require('inquirer');
7
8
  const shelljs = require('shelljs');
8
9
  const moment = require('moment-timezone');
9
10
  const packageJson = require(path.resolve(process.cwd(), './package.json'));
11
+ const deployResultFilename = path.resolve(process.cwd(), './node_modules/.lakutata_deploy_result');
10
12
  args
11
13
  .option('dockerfile', 'Dockerfile文件路径', './Dockerfile')
12
14
  .option('repository', '镜像仓库地址')
13
15
  .option('username', '镜像仓库用户名')
14
16
  .option('password', '镜像仓库密码')
15
17
  .option('platform', '构建平台')
16
- .option('tagLatest', '是否为镜像打上latest的标签');
18
+ .option('tagLatest', '是否为镜像打上latest的标签')
19
+ .option('mode', '运行模式(exec=执行部署,result=查看部署结果)', 'exec');
17
20
  const flags = args.parse(process.argv);
21
+ if (flags.mode === 'result') {
22
+ if (!fs.existsSync(deployResultFilename)) {
23
+ console.error('未执行部署,无法查看部署结果');
24
+ process.exit(1);
25
+ }
26
+ const deployResult = fs.readFileSync(deployResultFilename).toString();
27
+ if (!deployResult) {
28
+ console.error('未部署成功,无法查看部署结果');
29
+ process.exit(1);
30
+ }
31
+ console.log(deployResult);
32
+ return process.exit(0);
33
+ }
34
+ else {
35
+ fs.writeFileSync(deployResultFilename, '', { flag: 'w' });
36
+ }
18
37
  const REGISTRY_ADDR = flags.repository;
19
38
  const DOCKERFILE_PATH = flags.dockerfile;
20
39
  const REPOSITORY_ADDR = new URL(`repo://${REGISTRY_ADDR}`).hostname;
@@ -70,23 +89,41 @@
70
89
  }
71
90
  try {
72
91
  await execPromise(`docker login --username=${username} ${REPOSITORY_ADDR} -p${password}`);
73
- shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${platform} . --load`);
74
- shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:${IMAGE_VERSION}`);
92
+ const buildXResult = shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${platform} . --load`);
93
+ if (buildXResult.code)
94
+ return process.exit(buildXResult.code);
95
+ const tagVersionResult = shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:${IMAGE_VERSION}`);
96
+ if (tagVersionResult.code)
97
+ return process.exit(tagVersionResult.code);
75
98
  if (tagLatest) {
76
- shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:latest`);
99
+ const tagLatestResult = shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:latest`);
100
+ if (tagLatestResult.code)
101
+ return process.exit(tagLatestResult.code);
77
102
  }
78
- shelljs.exec(`docker push ${REGISTRY_ADDR}:${IMAGE_VERSION}`);
103
+ const pushVersionResult = shelljs.exec(`docker push ${REGISTRY_ADDR}:${IMAGE_VERSION}`);
104
+ if (pushVersionResult.code)
105
+ return process.exit(pushVersionResult.code);
79
106
  if (tagLatest) {
80
- shelljs.exec(`docker push ${REGISTRY_ADDR}:latest`);
107
+ const pushLatestResult = shelljs.exec(`docker push ${REGISTRY_ADDR}:latest`);
108
+ if (pushLatestResult.code)
109
+ return process.exit(pushLatestResult.code);
81
110
  }
82
- shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:${IMAGE_VERSION}`);
111
+ const removeVersionImageResult = shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:${IMAGE_VERSION}`);
112
+ if (removeVersionImageResult.code)
113
+ return process.exit(removeVersionImageResult.code);
83
114
  if (tagLatest) {
84
- shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:latest`);
115
+ const removeLatestImageResult = shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:latest`);
116
+ if (removeLatestImageResult.code)
117
+ return process.exit(removeLatestImageResult.code);
85
118
  }
86
- shelljs.exec(`docker rmi -f ${IMAGE_BASE_NAME}:${IMAGE_VERSION}`);
119
+ const cleanImageResult = shelljs.exec(`docker rmi -f ${IMAGE_BASE_NAME}:${IMAGE_VERSION}`);
120
+ if (cleanImageResult.code)
121
+ return process.exit(cleanImageResult.code);
122
+ fs.writeFileSync(deployResultFilename, `${REGISTRY_ADDR}:${IMAGE_VERSION}`, { flag: 'w' });
87
123
  }
88
124
  catch (e) {
89
125
  console.error(e.message);
126
+ process.exit(1);
90
127
  }
91
128
  })();
92
129
  //# sourceMappingURL=Deploy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Deploy.js","sourceRoot":"","sources":["../src/Deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Deploy.js","sourceRoot":"","sources":["../src/Deploy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lakutata/cli",
3
- "version": "1.0.31",
3
+ "version": "1.0.33",
4
4
  "description": "Lakutata CLI Tool",
5
5
  "main": "./build/CLI.js",
6
6
  "types": "./build/CLI.d.ts",
package/src/Deploy.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  (async () => {
3
3
  const path = require('path')
4
+ const fs = require('fs')
4
5
  const args = require('args')
5
6
  const inquirer = require('inquirer')
6
7
  const shelljs = require('shelljs')
7
8
  const moment = require('moment-timezone')
8
9
  const packageJson = require(path.resolve(process.cwd(), './package.json'))
10
+ const deployResultFilename = path.resolve(process.cwd(), './node_modules/.lakutata_deploy_result')
9
11
  args
10
12
  .option('dockerfile', 'Dockerfile文件路径', './Dockerfile')
11
13
  .option('repository', '镜像仓库地址')
@@ -13,7 +15,24 @@
13
15
  .option('password', '镜像仓库密码')
14
16
  .option('platform', '构建平台')
15
17
  .option('tagLatest', '是否为镜像打上latest的标签')
18
+ .option('mode', '运行模式(exec=执行部署,result=查看部署结果)', 'exec')
16
19
  const flags = args.parse(process.argv)
20
+ if (flags.mode === 'result') {
21
+ //查看部署的结果
22
+ if (!fs.existsSync(deployResultFilename)) {
23
+ console.error('未执行部署,无法查看部署结果')
24
+ process.exit(1)
25
+ }
26
+ const deployResult = fs.readFileSync(deployResultFilename).toString()
27
+ if (!deployResult) {
28
+ console.error('未部署成功,无法查看部署结果')
29
+ process.exit(1)
30
+ }
31
+ console.log(deployResult)
32
+ return process.exit(0)
33
+ } else {
34
+ fs.writeFileSync(deployResultFilename, '', {flag: 'w'})//创建文件,若文件已存在则清空之前的部署结果
35
+ }
17
36
  const REGISTRY_ADDR = flags.repository
18
37
  const DOCKERFILE_PATH = flags.dockerfile
19
38
  const REPOSITORY_ADDR = new URL(`repo://${REGISTRY_ADDR}`).hostname
@@ -75,21 +94,31 @@
75
94
  }
76
95
  try {
77
96
  await execPromise(`docker login --username=${username} ${REPOSITORY_ADDR} -p${password}`)
78
- shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${platform} . --load`)
79
- shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:${IMAGE_VERSION}`)
97
+ const buildXResult = shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${platform} . --load`)
98
+ if (buildXResult.code) return process.exit(buildXResult.code)
99
+ const tagVersionResult = shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:${IMAGE_VERSION}`)
100
+ if (tagVersionResult.code) return process.exit(tagVersionResult.code)
80
101
  if (tagLatest) {
81
- shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:latest`)
102
+ const tagLatestResult = shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:latest`)
103
+ if (tagLatestResult.code) return process.exit(tagLatestResult.code)
82
104
  }
83
- shelljs.exec(`docker push ${REGISTRY_ADDR}:${IMAGE_VERSION}`)
105
+ const pushVersionResult = shelljs.exec(`docker push ${REGISTRY_ADDR}:${IMAGE_VERSION}`)
106
+ if (pushVersionResult.code) return process.exit(pushVersionResult.code)
84
107
  if (tagLatest) {
85
- shelljs.exec(`docker push ${REGISTRY_ADDR}:latest`)
108
+ const pushLatestResult = shelljs.exec(`docker push ${REGISTRY_ADDR}:latest`)
109
+ if (pushLatestResult.code) return process.exit(pushLatestResult.code)
86
110
  }
87
- shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:${IMAGE_VERSION}`)
111
+ const removeVersionImageResult = shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:${IMAGE_VERSION}`)
112
+ if (removeVersionImageResult.code) return process.exit(removeVersionImageResult.code)
88
113
  if (tagLatest) {
89
- shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:latest`)
114
+ const removeLatestImageResult = shelljs.exec(`docker rmi -f ${REGISTRY_ADDR}:latest`)
115
+ if (removeLatestImageResult.code) return process.exit(removeLatestImageResult.code)
90
116
  }
91
- shelljs.exec(`docker rmi -f ${IMAGE_BASE_NAME}:${IMAGE_VERSION}`)
117
+ const cleanImageResult = shelljs.exec(`docker rmi -f ${IMAGE_BASE_NAME}:${IMAGE_VERSION}`)
118
+ if (cleanImageResult.code) return process.exit(cleanImageResult.code)
119
+ fs.writeFileSync(deployResultFilename, `${REGISTRY_ADDR}:${IMAGE_VERSION}`, {flag: 'w'})//将部署结果写入结果文件中
92
120
  } catch (e) {
93
121
  console.error((e as Error).message)
122
+ process.exit(1)
94
123
  }
95
124
  })()