clouddreamai-cicd-setup 1.0.1 → 1.0.2
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/README.md +421 -92
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/core/gitlab-client.d.ts.map +1 -1
- package/dist/core/gitlab-client.js +0 -4
- package/dist/core/gitlab-client.js.map +1 -1
- package/dist/core/types.d.ts +24 -5
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/variables.d.ts.map +1 -1
- package/dist/core/variables.js +47 -40
- package/dist/core/variables.js.map +1 -1
- package/dist/utils/prompts.d.ts +5 -5
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +178 -65
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/template.d.ts +13 -5
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +77 -12
- package/dist/utils/template.js.map +1 -1
- package/package.json +1 -1
- package/templates/docker-compose/nestjs.yml +17 -0
- package/templates/docker-compose/vue.yml +15 -0
- package/templates/gitlab-ci/nestjs-gitlab.yml +171 -0
- package/templates/gitlab-ci/nestjs.yml +4 -4
- package/templates/gitlab-ci/vue-gitlab.yml +171 -0
- package/templates/gitlab-ci/vue.yml +4 -4
- package/templates/scripts/deploy.sh +121 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab-client.js","sourceRoot":"","sources":["../../src/core/gitlab-client.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;
|
|
1
|
+
{"version":3,"file":"gitlab-client.js","sourceRoot":"","sources":["../../src/core/gitlab-client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -79,6 +79,10 @@ export interface ProjectConfig {
|
|
|
79
79
|
devUrl?: string;
|
|
80
80
|
/** 生产环境 URL */
|
|
81
81
|
prodUrl?: string;
|
|
82
|
+
/** 开发环境域名(用于 Nginx 反向代理) */
|
|
83
|
+
devDomain?: string;
|
|
84
|
+
/** 生产环境域名(用于 Nginx 反向代理) */
|
|
85
|
+
prodDomain?: string;
|
|
82
86
|
}
|
|
83
87
|
/**
|
|
84
88
|
* 服务器配置
|
|
@@ -92,11 +96,21 @@ export interface ServerConfig {
|
|
|
92
96
|
singleServer: boolean;
|
|
93
97
|
}
|
|
94
98
|
/**
|
|
95
|
-
*
|
|
99
|
+
* 镜像仓库类型
|
|
96
100
|
*/
|
|
97
|
-
export
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
export type RegistryType = 'gitlab' | 'custom' | 'none';
|
|
102
|
+
/**
|
|
103
|
+
* 镜像仓库配置
|
|
104
|
+
*/
|
|
105
|
+
export interface RegistryConfig {
|
|
106
|
+
/** 仓库类型 */
|
|
107
|
+
type: RegistryType;
|
|
108
|
+
/** 仓库 URL(custom 类型时使用) */
|
|
109
|
+
url?: string;
|
|
110
|
+
/** 用户名(custom 类型时使用) */
|
|
111
|
+
username?: string;
|
|
112
|
+
/** 密码或 Token(custom 类型时使用) */
|
|
113
|
+
password?: string;
|
|
100
114
|
}
|
|
101
115
|
/**
|
|
102
116
|
* 完整的 CI/CD 配置
|
|
@@ -105,7 +119,8 @@ export interface CICDConfig {
|
|
|
105
119
|
gitlab: GitLabConfig;
|
|
106
120
|
project: ProjectConfig;
|
|
107
121
|
server: ServerConfig;
|
|
108
|
-
|
|
122
|
+
/** 镜像仓库配置 */
|
|
123
|
+
registry: RegistryConfig;
|
|
109
124
|
/** SSH 私钥 */
|
|
110
125
|
sshPrivateKey: string;
|
|
111
126
|
/** 开发环境 .env 文件内容 */
|
|
@@ -140,6 +155,10 @@ export interface TemplateVariables {
|
|
|
140
155
|
devUrl: string;
|
|
141
156
|
prodUrl: string;
|
|
142
157
|
lintCommand: string;
|
|
158
|
+
/** 镜像仓库类型 */
|
|
159
|
+
registryType: RegistryType;
|
|
160
|
+
/** 镜像仓库 URL(custom 类型) */
|
|
161
|
+
registryUrl?: string;
|
|
143
162
|
}
|
|
144
163
|
/**
|
|
145
164
|
* API 响应结果
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU;IACV,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uBAAuB;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAID;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../src/core/variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhE;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC,iBAAiB;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,QAAQ,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../src/core/variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhE;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC,iBAAiB;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,QAAQ,EAAE,OAAO,CAAC;CACnB;AA8DD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IACH,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,EAAE;IAgBtE;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,EAAE;IAyGrD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA8CxE;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM;CAetD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CAEjE"}
|
package/dist/core/variables.js
CHANGED
|
@@ -18,25 +18,9 @@ const COMMON_VARIABLES = [
|
|
|
18
18
|
variable_type: 'env_var',
|
|
19
19
|
required: true,
|
|
20
20
|
},
|
|
21
|
-
{
|
|
22
|
-
key: 'DOCKER_HUB_USERNAME',
|
|
23
|
-
description: 'Docker Hub 用户名',
|
|
24
|
-
protected: true,
|
|
25
|
-
masked: false,
|
|
26
|
-
variable_type: 'env_var',
|
|
27
|
-
required: true,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
key: 'DOCKER_HUB_PASSWORD',
|
|
31
|
-
description: 'Docker Hub 密码或 Access Token',
|
|
32
|
-
protected: true,
|
|
33
|
-
masked: true,
|
|
34
|
-
variable_type: 'env_var',
|
|
35
|
-
required: true,
|
|
36
|
-
},
|
|
37
21
|
{
|
|
38
22
|
key: 'SSH_PRIVATE_KEY',
|
|
39
|
-
description: '部署服务器的 SSH
|
|
23
|
+
description: '部署服务器的 SSH 私钥(PEM 格式原始内容,不需要 base64 编码)',
|
|
40
24
|
protected: true,
|
|
41
25
|
masked: true,
|
|
42
26
|
variable_type: 'env_var',
|
|
@@ -113,23 +97,39 @@ class VariableConfigurator {
|
|
|
113
97
|
variable_type: 'env_var',
|
|
114
98
|
description: 'GitLab Personal Access Token',
|
|
115
99
|
});
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
100
|
+
// 根据 Registry 类型添加不同的变量
|
|
101
|
+
if (config.registry.type === 'custom') {
|
|
102
|
+
// 自建 Registry 凭据
|
|
103
|
+
if (!config.registry.url || !config.registry.username || !config.registry.password) {
|
|
104
|
+
throw new Error('自建 Registry 配置不完整:缺少 URL、用户名或密码');
|
|
105
|
+
}
|
|
106
|
+
variables.push({
|
|
107
|
+
key: 'REGISTRY_URL',
|
|
108
|
+
value: config.registry.url,
|
|
109
|
+
protected: false,
|
|
110
|
+
masked: false,
|
|
111
|
+
variable_type: 'env_var',
|
|
112
|
+
description: '自建 Registry URL',
|
|
113
|
+
});
|
|
114
|
+
variables.push({
|
|
115
|
+
key: 'REGISTRY_USERNAME',
|
|
116
|
+
value: config.registry.username,
|
|
117
|
+
protected: true,
|
|
118
|
+
masked: false,
|
|
119
|
+
variable_type: 'env_var',
|
|
120
|
+
description: 'Registry 用户名',
|
|
121
|
+
});
|
|
122
|
+
variables.push({
|
|
123
|
+
key: 'REGISTRY_PASSWORD',
|
|
124
|
+
value: config.registry.password,
|
|
125
|
+
protected: true,
|
|
126
|
+
masked: true,
|
|
127
|
+
variable_type: 'env_var',
|
|
128
|
+
description: 'Registry 密码',
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
// GitLab Registry 类型不需要添加额外变量,使用 CI 预定义变量
|
|
132
|
+
// none 类型也不需要 Registry 变量
|
|
133
133
|
// SSH 私钥
|
|
134
134
|
variables.push({
|
|
135
135
|
key: 'SSH_PRIVATE_KEY',
|
|
@@ -190,12 +190,19 @@ class VariableConfigurator {
|
|
|
190
190
|
if (!config.gitlab.token) {
|
|
191
191
|
errors.push('缺少 GitLab Token');
|
|
192
192
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
// 根据 Registry 类型验证
|
|
194
|
+
if (config.registry.type === 'custom') {
|
|
195
|
+
if (!config.registry.url) {
|
|
196
|
+
errors.push('缺少自建 Registry URL');
|
|
197
|
+
}
|
|
198
|
+
if (!config.registry.username) {
|
|
199
|
+
errors.push('缺少 Registry 用户名');
|
|
200
|
+
}
|
|
201
|
+
if (!config.registry.password) {
|
|
202
|
+
errors.push('缺少 Registry 密码');
|
|
203
|
+
}
|
|
198
204
|
}
|
|
205
|
+
// gitlab 和 none 类型不需要额外验证
|
|
199
206
|
if (!config.sshPrivateKey) {
|
|
200
207
|
errors.push('缺少 SSH 私钥');
|
|
201
208
|
}
|
|
@@ -208,7 +215,7 @@ class VariableConfigurator {
|
|
|
208
215
|
if (!config.project.name) {
|
|
209
216
|
errors.push('缺少项目名称');
|
|
210
217
|
}
|
|
211
|
-
if (!config.project.dockerImage) {
|
|
218
|
+
if (config.registry.type !== 'none' && config.registry.type !== 'gitlab' && !config.project.dockerImage) {
|
|
212
219
|
errors.push('缺少 Docker 镜像名称');
|
|
213
220
|
}
|
|
214
221
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../src/core/variables.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../src/core/variables.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/prompts.d.ts
CHANGED
|
@@ -15,6 +15,10 @@ export declare class PromptCollector {
|
|
|
15
15
|
* 收集 GitLab 配置
|
|
16
16
|
*/
|
|
17
17
|
private collectGitLabConfig;
|
|
18
|
+
/**
|
|
19
|
+
* 收集镜像仓库配置
|
|
20
|
+
*/
|
|
21
|
+
private collectRegistryConfig;
|
|
18
22
|
/**
|
|
19
23
|
* 收集项目配置
|
|
20
24
|
*/
|
|
@@ -23,16 +27,12 @@ export declare class PromptCollector {
|
|
|
23
27
|
* 收集服务器配置
|
|
24
28
|
*/
|
|
25
29
|
private collectServerConfig;
|
|
26
|
-
/**
|
|
27
|
-
* 收集 Docker Hub 配置
|
|
28
|
-
*/
|
|
29
|
-
private collectDockerHubConfig;
|
|
30
30
|
/**
|
|
31
31
|
* 收集 SSH 私钥
|
|
32
32
|
*/
|
|
33
33
|
private collectSSHKey;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* 收集环境变量文件(必需)
|
|
36
36
|
*/
|
|
37
37
|
private collectEnvFiles;
|
|
38
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAe,UAAU,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAe,UAAU,EAAkB,MAAM,eAAe,CAAC;AAGxE;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IA+B1C;;OAEG;YACW,mBAAmB;IA4BjC;;OAEG;YACW,qBAAqB;IAoEnC;;OAEG;YACW,oBAAoB;IA+IlC;;OAEG;YACW,mBAAmB;IA6BjC;;OAEG;YACW,aAAa;IAsD3B;;OAEG;YACW,eAAe;IA4B7B;;OAEG;YACW,WAAW;CAkD1B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
|
package/dist/utils/prompts.js
CHANGED
|
@@ -55,12 +55,12 @@ class PromptCollector {
|
|
|
55
55
|
console.log('\n🚀 CloudDreamAI CI/CD 自动配置工具\n');
|
|
56
56
|
// 1. GitLab 配置
|
|
57
57
|
const gitlabConfig = await this.collectGitLabConfig();
|
|
58
|
-
// 2.
|
|
59
|
-
const
|
|
60
|
-
// 3.
|
|
58
|
+
// 2. 镜像仓库配置
|
|
59
|
+
const registryConfig = await this.collectRegistryConfig(gitlabConfig.baseUrl);
|
|
60
|
+
// 3. 项目配置
|
|
61
|
+
const projectConfig = await this.collectProjectConfig(registryConfig);
|
|
62
|
+
// 4. 服务器配置
|
|
61
63
|
const serverConfig = await this.collectServerConfig();
|
|
62
|
-
// 4. Docker Hub 配置
|
|
63
|
-
const dockerHubConfig = await this.collectDockerHubConfig();
|
|
64
64
|
// 5. SSH 私钥
|
|
65
65
|
const sshPrivateKey = await this.collectSSHKey();
|
|
66
66
|
// 6. 环境变量文件
|
|
@@ -69,7 +69,7 @@ class PromptCollector {
|
|
|
69
69
|
gitlab: gitlabConfig,
|
|
70
70
|
project: projectConfig,
|
|
71
71
|
server: serverConfig,
|
|
72
|
-
|
|
72
|
+
registry: registryConfig,
|
|
73
73
|
sshPrivateKey,
|
|
74
74
|
...envFiles,
|
|
75
75
|
};
|
|
@@ -103,10 +103,78 @@ class PromptCollector {
|
|
|
103
103
|
]);
|
|
104
104
|
return answers;
|
|
105
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* 收集镜像仓库配置
|
|
108
|
+
*/
|
|
109
|
+
async collectRegistryConfig(gitlabUrl) {
|
|
110
|
+
console.log('\n📦 镜像仓库配置\n');
|
|
111
|
+
const { registryType } = await inquirer_1.default.prompt([
|
|
112
|
+
{
|
|
113
|
+
type: 'list',
|
|
114
|
+
name: 'registryType',
|
|
115
|
+
message: '选择镜像仓库类型:',
|
|
116
|
+
choices: [
|
|
117
|
+
{
|
|
118
|
+
name: 'GitLab Container Registry(推荐,无需额外配置)',
|
|
119
|
+
value: 'gitlab',
|
|
120
|
+
},
|
|
121
|
+
{ name: '自建 Docker Registry', value: 'custom' },
|
|
122
|
+
{ name: '不使用 Registry(服务器本地构建)', value: 'none' },
|
|
123
|
+
],
|
|
124
|
+
default: 'gitlab',
|
|
125
|
+
},
|
|
126
|
+
]);
|
|
127
|
+
// 根据类型收集不同的配置
|
|
128
|
+
if (registryType === 'gitlab') {
|
|
129
|
+
// GitLab Registry 无需额外配置,使用预定义变量
|
|
130
|
+
const registryUrl = gitlabUrl.replace(/^https?:\/\//, '') + ':5050';
|
|
131
|
+
console.log(`\n✅ 将使用 GitLab Container Registry: ${registryUrl}`);
|
|
132
|
+
console.log(' 使用 GitLab CI/CD 预定义变量,无需额外配置\n');
|
|
133
|
+
return {
|
|
134
|
+
type: 'gitlab',
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
else if (registryType === 'custom') {
|
|
138
|
+
console.log('\n🏗️ 自建 Registry 配置\n');
|
|
139
|
+
const customConfig = await inquirer_1.default.prompt([
|
|
140
|
+
{
|
|
141
|
+
type: 'input',
|
|
142
|
+
name: 'url',
|
|
143
|
+
message: 'Registry URL (如 registry.example.com:5000):',
|
|
144
|
+
validate: (input) => (input ? true : '请输入 Registry URL'),
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'input',
|
|
148
|
+
name: 'username',
|
|
149
|
+
message: 'Registry 用户名:',
|
|
150
|
+
validate: (input) => (input ? true : '请输入用户名'),
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'input',
|
|
154
|
+
name: 'password',
|
|
155
|
+
message: 'Registry 密码:',
|
|
156
|
+
validate: (input) => (input ? true : '请输入密码'),
|
|
157
|
+
},
|
|
158
|
+
]);
|
|
159
|
+
return {
|
|
160
|
+
type: 'custom',
|
|
161
|
+
url: customConfig.url,
|
|
162
|
+
username: customConfig.username,
|
|
163
|
+
password: customConfig.password,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// none
|
|
168
|
+
console.log('\n⚠️ 不使用镜像仓库,将在服务器上本地构建镜像\n');
|
|
169
|
+
return {
|
|
170
|
+
type: 'none',
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
106
174
|
/**
|
|
107
175
|
* 收集项目配置
|
|
108
176
|
*/
|
|
109
|
-
async collectProjectConfig() {
|
|
177
|
+
async collectProjectConfig(registryConfig) {
|
|
110
178
|
console.log('\n🔧 项目配置\n');
|
|
111
179
|
const answers = await inquirer_1.default.prompt([
|
|
112
180
|
{
|
|
@@ -136,15 +204,26 @@ class PromptCollector {
|
|
|
136
204
|
{
|
|
137
205
|
type: 'input',
|
|
138
206
|
name: 'dockerImage',
|
|
139
|
-
message:
|
|
207
|
+
message: registryConfig.type === 'gitlab'
|
|
208
|
+
? '镜像名称 (可选,留空将使用 GitLab 项目路径):'
|
|
209
|
+
: registryConfig.type === 'custom'
|
|
210
|
+
? '镜像名称 (将自动添加 Registry 前缀):'
|
|
211
|
+
: '镜像名称 (仅用于本地标签):',
|
|
212
|
+
default: (answers) => registryConfig.type === 'gitlab'
|
|
213
|
+
? '' // GitLab 会自动使用项目路径
|
|
214
|
+
: answers.name,
|
|
140
215
|
validate: (input) => {
|
|
216
|
+
if (registryConfig.type === 'gitlab') {
|
|
217
|
+
return true; // GitLab 类型可以为空
|
|
218
|
+
}
|
|
219
|
+
if (registryConfig.type === 'none') {
|
|
220
|
+
return true; // 不使用 Registry 也可以为空
|
|
221
|
+
}
|
|
141
222
|
if (!input)
|
|
142
223
|
return '请输入镜像名称';
|
|
143
|
-
if (!input.includes('/')) {
|
|
144
|
-
return '格式错误,应为 username/image-name';
|
|
145
|
-
}
|
|
146
224
|
return true;
|
|
147
225
|
},
|
|
226
|
+
when: () => registryConfig.type !== 'none', // 不使用 Registry 时跳过
|
|
148
227
|
},
|
|
149
228
|
{
|
|
150
229
|
type: 'input',
|
|
@@ -198,7 +277,45 @@ class PromptCollector {
|
|
|
198
277
|
default: '',
|
|
199
278
|
},
|
|
200
279
|
]);
|
|
201
|
-
|
|
280
|
+
// 询问是否配置 Nginx 反向代理
|
|
281
|
+
console.log('\n📝 Nginx 反向代理配置(可选)\n');
|
|
282
|
+
const nginxConfig = await inquirer_1.default.prompt([
|
|
283
|
+
{
|
|
284
|
+
type: 'confirm',
|
|
285
|
+
name: 'configureNginx',
|
|
286
|
+
message: '是否自动配置宝塔 Nginx 反向代理?',
|
|
287
|
+
default: true,
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
type: 'input',
|
|
291
|
+
name: 'devDomain',
|
|
292
|
+
message: '开发环境域名 (如 backend-test.example.com):',
|
|
293
|
+
when: (answers) => answers.configureNginx,
|
|
294
|
+
validate: (input) => {
|
|
295
|
+
if (!input)
|
|
296
|
+
return '请输入开发环境域名';
|
|
297
|
+
if (!/^[a-z0-9.-]+$/.test(input)) {
|
|
298
|
+
return '域名只能包含小写字母、数字、点和连字符';
|
|
299
|
+
}
|
|
300
|
+
return true;
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
type: 'input',
|
|
305
|
+
name: 'prodDomain',
|
|
306
|
+
message: '生产环境域名 (如 backend.example.com):',
|
|
307
|
+
when: (answers) => answers.configureNginx,
|
|
308
|
+
validate: (input) => {
|
|
309
|
+
if (!input)
|
|
310
|
+
return '请输入生产环境域名';
|
|
311
|
+
if (!/^[a-z0-9.-]+$/.test(input)) {
|
|
312
|
+
return '域名只能包含小写字母、数字、点和连字符';
|
|
313
|
+
}
|
|
314
|
+
return true;
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
]);
|
|
318
|
+
return { ...answers, ...nginxConfig };
|
|
202
319
|
}
|
|
203
320
|
/**
|
|
204
321
|
* 收集服务器配置
|
|
@@ -228,27 +345,6 @@ class PromptCollector {
|
|
|
228
345
|
]);
|
|
229
346
|
return answers;
|
|
230
347
|
}
|
|
231
|
-
/**
|
|
232
|
-
* 收集 Docker Hub 配置
|
|
233
|
-
*/
|
|
234
|
-
async collectDockerHubConfig() {
|
|
235
|
-
console.log('\n🐳 Docker Hub 配置\n');
|
|
236
|
-
const answers = await inquirer_1.default.prompt([
|
|
237
|
-
{
|
|
238
|
-
type: 'input',
|
|
239
|
-
name: 'username',
|
|
240
|
-
message: 'Docker Hub 用户名:',
|
|
241
|
-
validate: (input) => (input ? true : '请输入用户名'),
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
type: 'input',
|
|
245
|
-
name: 'password',
|
|
246
|
-
message: 'Docker Hub 密码或 Access Token:',
|
|
247
|
-
validate: (input) => (input ? true : '请输入密码'),
|
|
248
|
-
},
|
|
249
|
-
]);
|
|
250
|
-
return answers;
|
|
251
|
-
}
|
|
252
348
|
/**
|
|
253
349
|
* 收集 SSH 私钥
|
|
254
350
|
*/
|
|
@@ -304,59 +400,76 @@ class PromptCollector {
|
|
|
304
400
|
}
|
|
305
401
|
}
|
|
306
402
|
/**
|
|
307
|
-
*
|
|
403
|
+
* 收集环境变量文件(必需)
|
|
308
404
|
*/
|
|
309
405
|
async collectEnvFiles() {
|
|
310
|
-
console.log('\n📄
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
]);
|
|
319
|
-
if (!includeEnvFiles) {
|
|
320
|
-
return {};
|
|
406
|
+
console.log('\n📄 环境变量文件配置(必需)\n');
|
|
407
|
+
console.log('⚠️ NestJS 项目需要 .env 文件来配置数据库、密钥等信息');
|
|
408
|
+
console.log(' 请确保已创建 .env.dev 和 .env.prod 文件\n');
|
|
409
|
+
// 检查是否存在 .env.example
|
|
410
|
+
const envExampleExists = fs.existsSync('.env.example');
|
|
411
|
+
if (!envExampleExists) {
|
|
412
|
+
console.log('⚠️ 未找到 .env.example 文件');
|
|
413
|
+
console.log(' 建议创建 .env.example 作为环境变量模板\n');
|
|
321
414
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
console.log('\n⚠️ 跳过 .env 文件配置,请稍后在 GitLab CI/CD 变量中手动添加');
|
|
335
|
-
return {};
|
|
415
|
+
// 强制要求提供环境变量文件
|
|
416
|
+
const devEnvFile = await this.readEnvFile('开发环境', '.env.dev', true);
|
|
417
|
+
const prodEnvFile = await this.readEnvFile('生产环境', '.env.prod', true);
|
|
418
|
+
if (!devEnvFile || !prodEnvFile) {
|
|
419
|
+
console.log('\n❌ 环境变量文件配置不完整');
|
|
420
|
+
console.log('请创建以下文件后重新运行:');
|
|
421
|
+
if (!devEnvFile)
|
|
422
|
+
console.log(' - .env.dev');
|
|
423
|
+
if (!prodEnvFile)
|
|
424
|
+
console.log(' - .env.prod');
|
|
425
|
+
console.log('\n提示: 可以从 .env.example 复制并修改\n');
|
|
426
|
+
process.exit(1);
|
|
336
427
|
}
|
|
337
|
-
const devEnvFile = await this.readEnvFile('开发环境', '.env.dev');
|
|
338
|
-
const prodEnvFile = await this.readEnvFile('生产环境', '.env.prod');
|
|
339
428
|
return { devEnvFile, prodEnvFile };
|
|
340
429
|
}
|
|
341
430
|
/**
|
|
342
431
|
* 读取环境变量文件
|
|
343
432
|
*/
|
|
344
|
-
async readEnvFile(envName, defaultPath) {
|
|
433
|
+
async readEnvFile(envName, defaultPath, required = false) {
|
|
345
434
|
const { filePath } = await inquirer_1.default.prompt([
|
|
346
435
|
{
|
|
347
436
|
type: 'input',
|
|
348
437
|
name: 'filePath',
|
|
349
|
-
message:
|
|
438
|
+
message: required
|
|
439
|
+
? `${envName} .env 文件路径 (必需):`
|
|
440
|
+
: `${envName} .env 文件路径 (回车跳过):`,
|
|
350
441
|
default: defaultPath,
|
|
442
|
+
validate: (input) => {
|
|
443
|
+
if (required && !input) {
|
|
444
|
+
return '此文件为必需,请提供文件路径';
|
|
445
|
+
}
|
|
446
|
+
if (input && !fs.existsSync(input)) {
|
|
447
|
+
return `文件 ${input} 不存在,请检查路径`;
|
|
448
|
+
}
|
|
449
|
+
return true;
|
|
450
|
+
},
|
|
351
451
|
},
|
|
352
452
|
]);
|
|
353
|
-
if (!filePath)
|
|
453
|
+
if (!filePath) {
|
|
354
454
|
return undefined;
|
|
455
|
+
}
|
|
355
456
|
if (!fs.existsSync(filePath)) {
|
|
457
|
+
if (required) {
|
|
458
|
+
console.log(`\n❌ 错误: 文件 ${filePath} 不存在`);
|
|
459
|
+
// 如果是默认路径且存在 .env.example,提示用户创建
|
|
460
|
+
if (filePath === defaultPath && fs.existsSync('.env.example')) {
|
|
461
|
+
console.log(`\n提示: 你可以运行以下命令创建文件:`);
|
|
462
|
+
console.log(` cp .env.example ${filePath}`);
|
|
463
|
+
console.log(` 然后编辑 ${filePath} 填写${envName}的配置\n`);
|
|
464
|
+
}
|
|
465
|
+
return undefined;
|
|
466
|
+
}
|
|
356
467
|
console.log(`⚠️ 文件 ${filePath} 不存在,跳过`);
|
|
357
468
|
return undefined;
|
|
358
469
|
}
|
|
359
|
-
|
|
470
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
471
|
+
console.log(`✓ 成功读取 ${filePath} (${content.split('\n').length} 行)`);
|
|
472
|
+
return content;
|
|
360
473
|
}
|
|
361
474
|
}
|
|
362
475
|
exports.PromptCollector = PromptCollector;
|