@cloudbase/cli 2.0.12 → 2.1.0

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.
Files changed (277) hide show
  1. package/.history/.gitignore_20220624162613 +84 -0
  2. package/.history/.gitignore_20220627114054 +86 -0
  3. package/.history/package_20220711204706.json +88 -0
  4. package/.history/package_20220711204818.json +88 -0
  5. package/.history/package_20220712151717.json +88 -0
  6. package/.history/package_20220712212537.json +88 -0
  7. package/.history/package_20220722205058.json +88 -0
  8. package/.history/package_20220726110155.json +88 -0
  9. package/.history/package_20220726110201.json +88 -0
  10. package/.history/package_20220728110905.json +88 -0
  11. package/.history/package_20220728110936.json +88 -0
  12. package/.history/package_20220728111531.json +89 -0
  13. package/.history/package_20220728111810.json +89 -0
  14. package/.history/src/commands/lowcode/app_20220728111717.ts +52 -0
  15. package/{src/commands/lowcode/app.ts → .history/src/commands/lowcode/app_20220728112031.ts} +2 -2
  16. package/{src/index.ts → .history/src/index_20220624162613.ts} +0 -0
  17. package/.history/src/index_20220627113609.ts +15 -0
  18. package/.history/src/index_20220627114102.ts +13 -0
  19. package/.vscode/launch.json +10 -0
  20. package/bin/cloudbase.js +0 -0
  21. package/bin/tcb.js +5 -5
  22. package/lib/commands/account/login.js +3 -6
  23. package/lib/commands/env/index.js +0 -1
  24. package/lib/commands/lowcode/app.js +1 -1
  25. package/lib/commands/run/index.js +0 -1
  26. package/lib/commands/run/service/deploy.js +6 -1
  27. package/lib/commands/run/service/index.js +0 -1
  28. package/lib/commands/run/service/update.js +4 -0
  29. package/lib/constant.js +15 -1
  30. package/lib/env/index.js +1 -11
  31. package/lib/run/index.js +0 -1
  32. package/lib/run/service/common.js +20 -7
  33. package/lib/run/service/config.js +2 -3
  34. package/lib/run/service/deployPackage.js +2 -9
  35. package/lib/run/service/index.js +0 -1
  36. package/lib/run/service/update.js +1 -1
  37. package/lib/utils/debug-logger.js +30 -0
  38. package/lib/utils/net/cloud-api-request.js +7 -1
  39. package/lib/utils/net/http-request.js +16 -5
  40. package/package.json +2 -2
  41. package/types/commands/env/index.d.ts +0 -1
  42. package/types/commands/run/index.d.ts +0 -1
  43. package/types/commands/run/service/index.d.ts +0 -1
  44. package/types/env/index.d.ts +0 -6
  45. package/types/run/index.d.ts +0 -1
  46. package/types/run/service/common.d.ts +8 -1
  47. package/types/run/service/index.d.ts +0 -1
  48. package/types/types.d.ts +4 -0
  49. package/types/utils/debug-logger.d.ts +1 -0
  50. package/types/utils/net/http-request.d.ts +6 -2
  51. package/lib/commands/env/create.js +0 -115
  52. package/lib/commands/run/create.js +0 -162
  53. package/lib/commands/run/service/create.js +0 -144
  54. package/lib/run/create.js +0 -19
  55. package/lib/run/service/create.js +0 -67
  56. package/src/auth/index.ts +0 -2
  57. package/src/auth/login.ts +0 -91
  58. package/src/auth/logout.ts +0 -7
  59. package/src/commands/account/index.ts +0 -2
  60. package/src/commands/account/login.ts +0 -192
  61. package/src/commands/account/logout.ts +0 -24
  62. package/src/commands/common.ts +0 -246
  63. package/src/commands/env/base.ts +0 -90
  64. package/src/commands/env/create.ts +0 -92
  65. package/src/commands/env/domain.ts +0 -186
  66. package/src/commands/env/index.ts +0 -4
  67. package/src/commands/env/login.ts +0 -235
  68. package/src/commands/framework/index.ts +0 -124
  69. package/src/commands/functions/alias/getRoute.ts +0 -76
  70. package/src/commands/functions/alias/index.ts +0 -2
  71. package/src/commands/functions/alias/setRoute.ts +0 -82
  72. package/src/commands/functions/code-download.ts +0 -100
  73. package/src/commands/functions/code-update.ts +0 -62
  74. package/src/commands/functions/concurrency/delete.ts +0 -45
  75. package/src/commands/functions/concurrency/index.ts +0 -3
  76. package/src/commands/functions/concurrency/list.ts +0 -58
  77. package/src/commands/functions/concurrency/set.ts +0 -47
  78. package/src/commands/functions/config-update.ts +0 -76
  79. package/src/commands/functions/copy.ts +0 -62
  80. package/src/commands/functions/delete.ts +0 -79
  81. package/src/commands/functions/deploy.ts +0 -293
  82. package/src/commands/functions/detail.ts +0 -138
  83. package/src/commands/functions/index.ts +0 -16
  84. package/src/commands/functions/invoke.ts +0 -121
  85. package/src/commands/functions/layer/bind.ts +0 -182
  86. package/src/commands/functions/layer/common.ts +0 -8
  87. package/src/commands/functions/layer/create.ts +0 -49
  88. package/src/commands/functions/layer/delete.ts +0 -73
  89. package/src/commands/functions/layer/download.ts +0 -92
  90. package/src/commands/functions/layer/index.ts +0 -7
  91. package/src/commands/functions/layer/list.ts +0 -94
  92. package/src/commands/functions/layer/sort.ts +0 -76
  93. package/src/commands/functions/list.ts +0 -68
  94. package/src/commands/functions/log.ts +0 -148
  95. package/src/commands/functions/run.ts +0 -249
  96. package/src/commands/functions/trigger-create.ts +0 -79
  97. package/src/commands/functions/trigger-delete.ts +0 -105
  98. package/src/commands/functions/version/index.ts +0 -2
  99. package/src/commands/functions/version/list.ts +0 -73
  100. package/src/commands/functions/version/publish.ts +0 -43
  101. package/src/commands/gateway/create.ts +0 -109
  102. package/src/commands/gateway/delete.ts +0 -81
  103. package/src/commands/gateway/domain.ts +0 -159
  104. package/src/commands/gateway/index.ts +0 -5
  105. package/src/commands/gateway/list.ts +0 -76
  106. package/src/commands/gateway/switch.ts +0 -107
  107. package/src/commands/helpers/index.ts +0 -3
  108. package/src/commands/helpers/init.ts +0 -431
  109. package/src/commands/helpers/new.ts +0 -117
  110. package/src/commands/helpers/open.ts +0 -67
  111. package/src/commands/hosting/hosting.ts +0 -360
  112. package/src/commands/hosting/index.ts +0 -1
  113. package/src/commands/index.ts +0 -13
  114. package/src/commands/lowcode/comps.ts +0 -325
  115. package/src/commands/lowcode/index.ts +0 -2
  116. package/src/commands/lowcode/utils.ts +0 -25
  117. package/src/commands/run/create.ts +0 -153
  118. package/src/commands/run/delete.ts +0 -77
  119. package/src/commands/run/image/common.ts +0 -8
  120. package/src/commands/run/image/delete.ts +0 -68
  121. package/src/commands/run/image/download.ts +0 -68
  122. package/src/commands/run/image/index.ts +0 -5
  123. package/src/commands/run/image/list.ts +0 -84
  124. package/src/commands/run/image/upload.ts +0 -76
  125. package/src/commands/run/index.ts +0 -7
  126. package/src/commands/run/list.ts +0 -83
  127. package/src/commands/run/service/config.ts +0 -81
  128. package/src/commands/run/service/create.ts +0 -122
  129. package/src/commands/run/service/deploy.ts +0 -125
  130. package/src/commands/run/service/index.ts +0 -5
  131. package/src/commands/run/service/list.ts +0 -94
  132. package/src/commands/run/service/update.ts +0 -108
  133. package/src/commands/run/standalonegateway/common.ts +0 -8
  134. package/src/commands/run/standalonegateway/create.ts +0 -85
  135. package/src/commands/run/standalonegateway/destroy.ts +0 -59
  136. package/src/commands/run/standalonegateway/index.ts +0 -5
  137. package/src/commands/run/standalonegateway/list.ts +0 -53
  138. package/src/commands/run/standalonegateway/package.ts +0 -62
  139. package/src/commands/run/standalonegateway/turn.ts +0 -63
  140. package/src/commands/run/version/common.ts +0 -8
  141. package/src/commands/run/version/create.ts +0 -369
  142. package/src/commands/run/version/delete.ts +0 -64
  143. package/src/commands/run/version/index.ts +0 -5
  144. package/src/commands/run/version/list.ts +0 -91
  145. package/src/commands/run/version/modify.ts +0 -137
  146. package/src/commands/run/version/update.ts +0 -398
  147. package/src/commands/smart.ts +0 -132
  148. package/src/commands/storage/index.ts +0 -1
  149. package/src/commands/storage/storage.ts +0 -464
  150. package/src/commands/third/index.ts +0 -1
  151. package/src/commands/third/thirdAttach.ts +0 -49
  152. package/src/completion/index.ts +0 -13
  153. package/src/constant.ts +0 -154
  154. package/src/decorators/captureError.ts +0 -25
  155. package/src/decorators/constants.ts +0 -12
  156. package/src/decorators/deprecate.ts +0 -25
  157. package/src/decorators/guard.ts +0 -42
  158. package/src/decorators/index.ts +0 -7
  159. package/src/decorators/injectParams.ts +0 -54
  160. package/src/decorators/params/common.ts +0 -28
  161. package/src/decorators/params/index.ts +0 -35
  162. package/src/env/domain.ts +0 -33
  163. package/src/env/index.ts +0 -63
  164. package/src/env/login.ts +0 -80
  165. package/src/error.ts +0 -36
  166. package/src/function/alias.ts +0 -43
  167. package/src/function/base.ts +0 -253
  168. package/src/function/code.ts +0 -55
  169. package/src/function/concurrency.ts +0 -57
  170. package/src/function/create.ts +0 -78
  171. package/src/function/delete.ts +0 -42
  172. package/src/function/index.ts +0 -11
  173. package/src/function/layer/attach.ts +0 -68
  174. package/src/function/layer/create.ts +0 -63
  175. package/src/function/layer/delete.ts +0 -21
  176. package/src/function/layer/download.ts +0 -54
  177. package/src/function/layer/index.ts +0 -7
  178. package/src/function/layer/list.ts +0 -32
  179. package/src/function/layer/sort.ts +0 -24
  180. package/src/function/trigger.ts +0 -97
  181. package/src/function/update.ts +0 -35
  182. package/src/function/version.ts +0 -39
  183. package/src/function/vpc.ts +0 -22
  184. package/src/gateway/index.ts +0 -137
  185. package/src/help.ts +0 -50
  186. package/src/hosting.ts +0 -212
  187. package/src/logger.ts +0 -17
  188. package/src/run/create.ts +0 -23
  189. package/src/run/delete.ts +0 -15
  190. package/src/run/image/build.ts +0 -36
  191. package/src/run/image/delete.ts +0 -14
  192. package/src/run/image/index.ts +0 -4
  193. package/src/run/image/info.ts +0 -27
  194. package/src/run/image/list.ts +0 -23
  195. package/src/run/index.ts +0 -8
  196. package/src/run/list.ts +0 -30
  197. package/src/run/repo.ts +0 -25
  198. package/src/run/service/common.ts +0 -311
  199. package/src/run/service/config.ts +0 -77
  200. package/src/run/service/create.ts +0 -52
  201. package/src/run/service/deployPackage.ts +0 -65
  202. package/src/run/service/index.ts +0 -7
  203. package/src/run/service/list.ts +0 -29
  204. package/src/run/service/showLogs.ts +0 -98
  205. package/src/run/service/update.ts +0 -82
  206. package/src/run/standalonegateway/create.ts +0 -24
  207. package/src/run/standalonegateway/destroy.ts +0 -19
  208. package/src/run/standalonegateway/index.ts +0 -5
  209. package/src/run/standalonegateway/list.ts +0 -74
  210. package/src/run/standalonegateway/package/index.ts +0 -1
  211. package/src/run/standalonegateway/package/list.ts +0 -24
  212. package/src/run/standalonegateway/turn/index.ts +0 -2
  213. package/src/run/standalonegateway/turn/off.ts +0 -19
  214. package/src/run/standalonegateway/turn/on.ts +0 -19
  215. package/src/run/version/create.ts +0 -68
  216. package/src/run/version/delete.ts +0 -16
  217. package/src/run/version/index.ts +0 -6
  218. package/src/run/version/list.ts +0 -17
  219. package/src/run/version/modify.ts +0 -17
  220. package/src/run/version/repo.ts +0 -28
  221. package/src/run/version/update.ts +0 -59
  222. package/src/storage.ts +0 -114
  223. package/src/third/index.ts +0 -13
  224. package/src/types.ts +0 -672
  225. package/src/utils/auth.ts +0 -15
  226. package/src/utils/checkTcbrEnv.ts +0 -69
  227. package/src/utils/cli-table.ts +0 -23
  228. package/src/utils/commonParamsCheck.ts +0 -65
  229. package/src/utils/config.ts +0 -39
  230. package/src/utils/env.ts +0 -244
  231. package/src/utils/fs/del.ts +0 -5
  232. package/src/utils/fs/index.ts +0 -71
  233. package/src/utils/function-packer.ts +0 -97
  234. package/src/utils/index.ts +0 -25
  235. package/src/utils/log.ts +0 -82
  236. package/src/utils/net/cloud-api-request.ts +0 -62
  237. package/src/utils/net/credential.ts +0 -53
  238. package/src/utils/net/http-request.ts +0 -84
  239. package/src/utils/net/index.ts +0 -5
  240. package/src/utils/net/manager-service.ts +0 -36
  241. package/src/utils/net/proxy.ts +0 -6
  242. package/src/utils/notice.ts +0 -28
  243. package/src/utils/output/highlight.ts +0 -5
  244. package/src/utils/output/index.ts +0 -3
  245. package/src/utils/output/link.ts +0 -10
  246. package/src/utils/output/loading.ts +0 -82
  247. package/src/utils/parallel.ts +0 -82
  248. package/src/utils/platform/index.ts +0 -3
  249. package/src/utils/platform/mac.ts +0 -21
  250. package/src/utils/platform/os.ts +0 -64
  251. package/src/utils/platform/port.ts +0 -10
  252. package/src/utils/progress-bar.ts +0 -38
  253. package/src/utils/prompt/index.ts +0 -1
  254. package/src/utils/prompt/select.ts +0 -60
  255. package/src/utils/reporter/agree.ts +0 -20
  256. package/src/utils/reporter/download.ts +0 -26
  257. package/src/utils/reporter/index.ts +0 -3
  258. package/src/utils/reporter/usage.ts +0 -20
  259. package/src/utils/store/auth.ts +0 -49
  260. package/src/utils/store/common.ts +0 -8
  261. package/src/utils/store/db.ts +0 -68
  262. package/src/utils/store/index.ts +0 -5
  263. package/src/utils/store/usage.ts +0 -12
  264. package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
  265. package/src/utils/tcbrApi/index.ts +0 -1
  266. package/src/utils/template.ts +0 -170
  267. package/src/utils/tools/encoding.ts +0 -8
  268. package/src/utils/tools/index.ts +0 -4
  269. package/src/utils/tools/object.ts +0 -33
  270. package/src/utils/tools/time.ts +0 -38
  271. package/src/utils/tools/uid.ts +0 -19
  272. package/src/utils/validator.ts +0 -65
  273. package/types/commands/env/create.d.ts +0 -12
  274. package/types/commands/run/create.d.ts +0 -13
  275. package/types/commands/run/service/create.d.ts +0 -13
  276. package/types/run/create.d.ts +0 -2
  277. package/types/run/service/create.d.ts +0 -7
@@ -1,91 +0,0 @@
1
- import { Command, ICommand } from '../../common'
2
- import { CloudBaseError } from '../../../error'
3
- import { listVersion } from '../../../run'
4
- import { printHorizontalTable, loadingFactory, checkTcbrEnv, logEnvCheck } from '../../../utils'
5
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
6
- import { versionCommonOptions } from './common'
7
- import { EnumEnvCheck } from '../../../constant'
8
-
9
- const StatusMap = {
10
- normal: '正常',
11
- deploy_fail: '部署失败'
12
- }
13
-
14
- @ICommand()
15
- export class ListVersion extends Command {
16
- get options() {
17
- return {
18
- ...versionCommonOptions('list'),
19
- options: [
20
- {
21
- flags: '-e, --envId <envId>',
22
- desc: '环境 Id'
23
- },
24
- {
25
- flags: '-s, --serviceName <serviceName>',
26
- desc: '托管服务 name'
27
- },
28
- {
29
- flags: '-l, --limit <limit>',
30
- desc: '返回数据长度,默认值为 20'
31
- },
32
- {
33
- flags: '-o, --offset <offset>',
34
- desc: '数据偏移量,默认值为 0'
35
- }
36
- ],
37
- desc: '展示选择的云托管服务的版本列表'
38
- }
39
- }
40
-
41
- @InjectParams()
42
- async execute(@EnvId() envId, @ArgsOptions() options) {
43
- let envCheckType = await checkTcbrEnv(options.envId, false)
44
- if(envCheckType !== EnumEnvCheck.EnvFit) {
45
- logEnvCheck(envId, envCheckType)
46
- return
47
- }
48
-
49
- let { limit = 20, offset = 0, serviceName = '' } = options
50
- limit = Number(limit)
51
- offset = Number(offset)
52
-
53
- if (!Number.isInteger(limit) || !Number.isInteger(offset)) {
54
- throw new CloudBaseError('limit 和 offset 必须为整数')
55
- }
56
-
57
- if (limit < 0 || offset < 0) {
58
- throw new CloudBaseError('limit 和 offset 必须为大于 0 的整数')
59
- }
60
-
61
- if (serviceName.length === 0) {
62
- throw new CloudBaseError('请输入查询的服务名')
63
- }
64
-
65
- const loading = loadingFactory()
66
-
67
- loading.start('数据加载中...')
68
-
69
- const data = await listVersion({
70
- envId,
71
- limit: Number(limit),
72
- offset: Number(offset),
73
- serverName: serviceName
74
- })
75
-
76
- loading.stop()
77
-
78
- const head: string[] = ['版本名称', '状态', '流量', '备注', '创建时间', '更新时间']
79
-
80
- const tableData = data.map((item) => [
81
- item.VersionName,
82
- StatusMap[item.Status],
83
- item.FlowRatio,
84
- item.ServiceRemark ? item.ServiceRemark : '-',
85
- item.CreatedTime,
86
- item.UpdatedTime,
87
- ])
88
-
89
- printHorizontalTable(head, tableData)
90
- }
91
- }
@@ -1,137 +0,0 @@
1
- import { prompt } from 'enquirer'
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { listVersion, modifyVersion } from '../../../run'
5
- import { checkTcbrEnv, loadingFactory, logEnvCheck, pagingSelectPromp } from '../../../utils'
6
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
7
- import { versionCommonOptions } from './common'
8
- import { EnumEnvCheck } from '../../../constant'
9
-
10
- // 按百分比配置
11
- const modifyByFlow = async (envId: any, serviceName: string, mode: string) => {
12
- const versionFlowItems: {
13
- VersionName: string
14
- FlowRatio: number
15
- }[] = []
16
-
17
- const loading = loadingFactory()
18
-
19
- mode.split('|')[1]
20
- .split('&')
21
- .forEach((item) => {
22
- versionFlowItems.push({
23
- VersionName: item.split('=')[0],
24
- FlowRatio: Number(item.split('=')[1])
25
- })
26
- })
27
-
28
- let sum = versionFlowItems.reduce((sum, item) => sum + item.FlowRatio, 0)
29
- if (sum !== 100 && sum !== 0) throw new CloudBaseError('流量配置的总和需要为 0 或 100')
30
-
31
- loading.start('数据加载中...')
32
-
33
- const res = await modifyVersion({
34
- envId,
35
- serverName: serviceName,
36
- trafficType: 'FLOW',
37
- versionFlowItems
38
- })
39
- if (res !== 'succ') throw new CloudBaseError('分配失败')
40
-
41
- loading.succeed('分配成功')
42
- }
43
-
44
- // 按URL配置
45
- const modifyByURL = async (envId: any, serviceName: string, mode: string) => {
46
- const versionFlowItems: {
47
- VersionName: string
48
- FlowRatio: 0
49
- Priority?: number
50
- IsDefaultPriority: boolean
51
- UrlParam?: {
52
- Key: string
53
- Value: string
54
- }
55
- }[] = []
56
-
57
- const loading = loadingFactory()
58
-
59
- mode.split('|')[1]
60
- .split('&')
61
- .forEach((item, index) => {
62
- versionFlowItems.push({
63
- VersionName: item.split(',')[2],
64
- FlowRatio: 0,
65
- Priority: index + 1,
66
- IsDefaultPriority: false,
67
- UrlParam: {
68
- Key: item.split(',')[0],
69
- Value: item.split(',')[1]
70
- }
71
- })
72
- })
73
-
74
- if (!versionFlowItems.some((item) => item.VersionName === mode.split('|')[2])) {
75
- versionFlowItems.push({
76
- VersionName: mode.split('|')[2],
77
- FlowRatio: 0,
78
- IsDefaultPriority: true
79
- })
80
- } else {
81
- versionFlowItems.find((item) => item.VersionName === mode.split('|')[2]).IsDefaultPriority = true
82
- }
83
-
84
- loading.start('数据加载中...')
85
-
86
- const res = await modifyVersion({
87
- envId,
88
- serverName: serviceName,
89
- trafficType: 'URL_PARAMS',
90
- versionFlowItems
91
- })
92
- if (res !== 'succ') throw new CloudBaseError('分配失败')
93
-
94
- loading.succeed('分配成功')
95
- }
96
-
97
- @ICommand()
98
- export class ModifyVersion extends Command {
99
- get options() {
100
- return {
101
- ...versionCommonOptions('modify'),
102
- options: [
103
- {
104
- flags: '-e, --envId <envId>',
105
- desc: '环境 Id'
106
- },
107
- {
108
- flags: '-s, --serviceName <serviceName>',
109
- desc: '托管服务 name'
110
- },
111
- {
112
- flags: '-t, --traffic <traffic>',
113
- desc: '配置 type,按百分比分配即为FLOW|versionName1=a&...&versionName1=b,按URL分配则是URL|key1,value1,version1&...&key1,value1,version1|defaultVersion'
114
- }
115
- ],
116
- desc: '展示选择的云托管服务的版本列表'
117
- }
118
- }
119
-
120
- @InjectParams()
121
- async execute(@EnvId() envId, @ArgsOptions() options) {
122
- let envCheckType = await checkTcbrEnv(options.envId, false)
123
- if(envCheckType !== EnumEnvCheck.EnvFit) {
124
- logEnvCheck(envId, envCheckType)
125
- return
126
- }
127
-
128
- let { serviceName = '', traffic: _traffic = 'FLOW' } = options
129
- if (serviceName.length === 0) throw new CloudBaseError('请填入有效云托管服务名')
130
-
131
- if (_traffic.split('|')[0] === 'URL') {
132
- modifyByURL(envId, serviceName, _traffic)
133
- } else {
134
- modifyByFlow(envId, serviceName, _traffic)
135
- }
136
- }
137
- }
@@ -1,398 +0,0 @@
1
- import { prompt } from 'enquirer'
2
- import { statSync, writeFileSync, unlinkSync } from 'fs'
3
- import { zipDir } from '@cloudbase/toolbox'
4
- import { Command, ICommand } from '../../common'
5
- import { CloudBaseError } from '../../../error'
6
- import {
7
- uploadZip,
8
- createBuild,
9
- updateVersion,
10
- listRepo,
11
- listImage,
12
- listBranch,
13
- basicOperate,
14
- logCreate,
15
- describeRunVersion
16
- } from '../../../run'
17
- import { checkTcbrEnv, loadingFactory, logEnvCheck, pagingSelectPromp, random } from '../../../utils'
18
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
19
- import { versionCommonOptions } from './common'
20
- import { EnumEnvCheck } from '../../../constant'
21
-
22
- const uploadTypeMap = {
23
- 本地代码: 'package',
24
- 代码库拉取: 'repository',
25
- 镜像拉取: 'image'
26
- }
27
-
28
- const memMap = {
29
- 0.25: [2, 8],
30
- 0.5: [2, 8],
31
- 1: [1, 8],
32
- 2: [2, 8],
33
- 4: [2, 8],
34
- 8: [2, 4],
35
- 16: [2, 4]
36
- }
37
-
38
- const describeVersion = (base: any) => {
39
- console.log('目前的配置如下')
40
- console.log(`镜像名 ${base.ImageUrl.split(':')[1]}`)
41
- console.log(
42
- `上传方式 ${
43
- base.UploadType === 'image'
44
- ? '镜像拉取'
45
- : base.UploadType === 'package'
46
- ? '本地代码上传'
47
- : '代码仓库拉取'
48
- }`
49
- )
50
- console.log(`监听端口 ${base.VersionPort}`)
51
- console.log(`扩缩容条件 ${base.PolicyType}使用率 > ${base.PolicyThreshold}`)
52
- console.log(`规格 cpu ${base.Cpu}核 mem ${base.Mem}G`)
53
- console.log(`InitialDelaySeconds ${base.InitialDelaySeconds}`)
54
- console.log(`日志采集路径 ${base.InitialDelaySeconds}`)
55
- console.log(`环境变量 ${base.EnvParams}`)
56
- }
57
-
58
- /* eslint complexity: ["error", 40] */
59
- @ICommand()
60
- export class UpdateVersion extends Command {
61
- get options() {
62
- return {
63
- ...versionCommonOptions('update'),
64
- options: [
65
- {
66
- flags: '-e, --envId <envId>',
67
- desc: '环境 Id'
68
- },
69
- {
70
- flags: '-s, --serviceName <serviceName>',
71
- desc: '托管服务 name'
72
- },
73
- {
74
- flags: '-v, --versionName <versionName>',
75
- desc: '版本名称 Name'
76
- },
77
- {
78
- flags: '-p, --path <path>',
79
- desc: '本地代码路径,选择本地代码上传时使用'
80
- },
81
- {
82
- flags: '--repo <repo>',
83
- desc: '仓库信息,形如 channel|fullName|branch,channel为github、gitlab或gitee,选择代码库拉取时使用'
84
- },
85
- {
86
- flags: '-i, --image <image>',
87
- desc: '镜像url,选择镜像拉取时使用'
88
- },
89
- {
90
- flags: '--port <port>',
91
- desc: '监听端口,默认为80'
92
- },
93
- {
94
- flags: '-f, --flow <flow>',
95
- desc: '流量策略(%),0或100,默认为0'
96
- },
97
- {
98
- flags: '-m, --remark <remark>',
99
- desc: '备注信息,默认为空'
100
- },
101
- {
102
- flags: '-c, --cpu <cpu>',
103
- desc: 'cpu规格(核数),默认为0.5'
104
- },
105
- {
106
- flags: '--mem <mem>',
107
- desc: '内存规格(G),默认为1'
108
- },
109
- {
110
- flags: '--copy <copy>',
111
- desc: '副本个数,格式为最小个数~最大个数,默认为0~50'
112
- },
113
- {
114
- flags: '--policy <policy>',
115
- desc: '扩缩容条件,格式为条件类型|条件比例(%),cpu条件为cpu,内存为条件mem,默认为cpu|60'
116
- },
117
- {
118
- flags: '--dockerFile <dockerFile>',
119
- desc: 'dockerfile名称,非镜像拉取时使用,默认为Dockerfile'
120
- },
121
- {
122
- flags: '-l, --log <log>',
123
- desc: '日志采集路径,默认为stdout'
124
- },
125
- {
126
- flags: '-d, --delay <delay>',
127
- desc: '初始延迟时间(秒),默认为2'
128
- },
129
- {
130
- flags: '--env <env>',
131
- desc: '环境变量,格式为xx=a&yy=b,默认为空'
132
- }
133
- ],
134
- desc: '创建云开发环境下云托管服务的版本'
135
- }
136
- }
137
-
138
- @InjectParams()
139
- async execute(@EnvId() envId, @ArgsOptions() options) {
140
- let envCheckType = await checkTcbrEnv(options.envId, false)
141
- if(envCheckType !== EnumEnvCheck.EnvFit) {
142
- logEnvCheck(envId, envCheckType)
143
- return
144
- }
145
-
146
- let {
147
- serviceName = '',
148
- versionName = '',
149
- path: _path = '',
150
- repo: _repo = '',
151
- image: _image = '',
152
- port: _port = '80',
153
- flow: _flow = '0',
154
- remark: _remark = '',
155
- cpu: _cpu = '0.5',
156
- mem: _mem = '1',
157
- copy: _copy = '0~50',
158
- policy: _policy = 'cpu|60',
159
- dockerfile: _dockerfile = 'Dockerfile',
160
- log: _log = 'stdout',
161
- delay: _delay = '2',
162
- env: _env = ''
163
- } = options
164
-
165
- if (!serviceName || !versionName) {
166
- throw new CloudBaseError('必须输入 serviceName 和 versionName')
167
- }
168
- let path: string
169
- let repositoryType: string
170
- let branch: string
171
- let codeDetail: { Name: { Name: string; FullName: string } }
172
- let imageInfo: { ImageUrl: string }
173
- let containerPort: number
174
- let flowRatio: number
175
- let versionRemark: string
176
- let cpu: number
177
- let mem: number
178
- let minNum: number
179
- let maxNum: number
180
- let policyType: string
181
- let policyThreshold: number
182
- let customLogs = 'stdout'
183
- let dockerfilePath = 'Dockerfile'
184
- let initialDelaySeconds = 2
185
- let envParams = '{}'
186
-
187
- const uid = random(4)
188
-
189
- const loading = loadingFactory()
190
-
191
- // 上传方式
192
- if (_path) {
193
- path = _path
194
-
195
- if (statSync(path).isDirectory()) {
196
- loading.start('正在压缩中')
197
- await zipDir(path, `./code${uid}.zip`)
198
- loading.succeed('压缩完成')
199
- path = `./code${uid}.zip`
200
- }
201
- } else if (_repo) {
202
- const repo = _repo.split('|')
203
-
204
- repositoryType = repo[0]
205
-
206
- codeDetail.Name.FullName = repo[1]
207
- codeDetail.Name.Name = repo[1].split('/')[1]
208
-
209
- branch = repo[2]
210
- } else if (_image) {
211
- imageInfo = {
212
- ImageUrl: _image
213
- }
214
- } else {
215
- throw new CloudBaseError('请至少选择一个上传方式')
216
- }
217
-
218
- // 端口号
219
- containerPort = Number(_port)
220
- if (isNaN(containerPort)) {
221
- throw new CloudBaseError('请输入合法的端口号')
222
- }
223
-
224
- // 流量策略
225
- flowRatio = Number(_flow)
226
- if (![100, 0].includes(flowRatio)) {
227
- throw new CloudBaseError('请输入合法的流量策略')
228
- }
229
-
230
- // 备注
231
- versionRemark = _remark
232
-
233
- // 规格
234
- cpu = Number(_cpu)
235
- mem = Number(_mem)
236
- if (isNaN(cpu) || isNaN(mem)) {
237
- throw new CloudBaseError('请输入合法的cpu和内存规格')
238
- }
239
-
240
- // 副本个数
241
- minNum = Number(_copy.split('~')[0])
242
- maxNum = Number(_copy.split('~')[1])
243
- if (isNaN(maxNum) || isNaN(minNum)) {
244
- throw new CloudBaseError('请输入合法的副本个数')
245
- }
246
-
247
- // 扩缩容条件
248
- policyType = _policy.split('|')[0]
249
- policyThreshold = Number(_policy.split('|')[1])
250
- if (!['cpu', 'mem'].includes(policyType) || isNaN(policyThreshold)) {
251
- throw new CloudBaseError('请输入合法的扩缩容条件')
252
- }
253
-
254
- // dockerfile 名称,在非镜像拉取时使用
255
- dockerfilePath = _dockerfile
256
-
257
- // 日志采集路径
258
- customLogs = _log
259
-
260
- // 初始延迟时间
261
- initialDelaySeconds = Number(_delay)
262
- if (isNaN(initialDelaySeconds)) {
263
- throw new CloudBaseError('请输入合法的延迟时间')
264
- }
265
-
266
- // 环境变量
267
- let _envParams = {}
268
- _env.split('&').forEach((item) => {
269
- _envParams[item.split('=')[0]] = item.split('=')[1]
270
- })
271
- envParams = JSON.stringify(_envParams)
272
-
273
- loading.start('加载中...')
274
-
275
- let res = ''
276
- let runId = ''
277
- if (_path) {
278
- loading.start('正在上传中')
279
- let { PackageName, PackageVersion, UploadHeaders, UploadUrl } = await createBuild({
280
- envId,
281
- serviceName
282
- })
283
- await uploadZip(path, UploadUrl, UploadHeaders[0])
284
- loading.succeed('上传成功')
285
- if (path === `./code${uid}.zip`) {
286
- loading.start('删除本地压缩包')
287
- unlinkSync(path)
288
- loading.succeed('成功删除本地压缩包')
289
- }
290
-
291
- let response = await updateVersion({
292
- envId,
293
- serverName: serviceName,
294
- versionName,
295
- containerPort,
296
- uploadType: 'package',
297
- packageName: PackageName,
298
- packageVersion: PackageVersion,
299
- flowRatio,
300
- versionRemark,
301
-
302
- enableUnion: true,
303
- cpu,
304
- mem,
305
- minNum,
306
- maxNum,
307
- policyType,
308
- policyThreshold,
309
-
310
- customLogs,
311
- dockerfilePath,
312
- envParams,
313
- initialDelaySeconds
314
- })
315
- res = response.Result
316
- runId = response.RunId
317
- } else if (_image) {
318
- let response = await updateVersion({
319
- envId,
320
- serverName: serviceName,
321
- versionName,
322
- containerPort,
323
- uploadType: 'image',
324
- imageInfo,
325
- flowRatio,
326
- versionRemark,
327
-
328
- enableUnion: true,
329
- cpu,
330
- mem,
331
- minNum,
332
- maxNum,
333
- policyType,
334
- policyThreshold,
335
-
336
- customLogs,
337
- envParams,
338
- initialDelaySeconds
339
- })
340
- res = response.Result
341
- runId = response.RunId
342
- } else {
343
- let response = await updateVersion({
344
- envId,
345
- serverName: serviceName,
346
- versionName,
347
- containerPort,
348
- uploadType: 'repository',
349
- repositoryType,
350
- branch,
351
- codeDetail,
352
- flowRatio,
353
- versionRemark,
354
-
355
- enableUnion: true,
356
- cpu,
357
- mem,
358
- minNum,
359
- maxNum,
360
- policyType,
361
- policyThreshold,
362
-
363
- customLogs,
364
- dockerfilePath,
365
- envParams,
366
- initialDelaySeconds
367
- })
368
- res = response.Result
369
- runId = response.RunId
370
- }
371
- if (res !== 'succ') throw new CloudBaseError('提交构建任务失败')
372
-
373
- loading.start('正在部署中')
374
-
375
- while (true) {
376
- let { Percent, Status } = await basicOperate({ envId, runId })
377
-
378
- if (Status === 'build_fail') {
379
- let logs = await logCreate({ envId, runId })
380
- writeFileSync(
381
- `./log${runId}`,
382
- logs.reduce((res, item) => res + item + '\n', '')
383
- )
384
- throw new CloudBaseError(`构建失败,日志写入./log${runId}中`)
385
- } else if (Status !== 'updating') {
386
- break
387
- }
388
-
389
- loading.start(`目前构建进度${Percent}%`)
390
-
391
- await new Promise((resolve) => {
392
- setTimeout((_) => resolve('again'), 2000)
393
- })
394
- }
395
-
396
- loading.succeed('构建成功')
397
- }
398
- }