clouddreamai-cicd-setup 1.4.1 → 1.5.1
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/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/core/types.d.ts +4 -23
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/variables.d.ts.map +1 -1
- package/dist/core/variables.js +1 -49
- package/dist/core/variables.js.map +1 -1
- package/dist/utils/prompts.d.ts +0 -4
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +36 -86
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/template.d.ts +5 -5
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +16 -24
- package/dist/utils/template.js.map +1 -1
- package/package.json +1 -1
- package/templates/gitlab-ci/nestjs-gitlab.yml +15 -2
- package/templates/gitlab-ci/vue-gitlab.yml +19 -161
- package/templates/scripts/deploy.sh +25 -0
- package/templates/gitlab-ci/nestjs.yml +0 -376
- package/templates/gitlab-ci/vue.yml +0 -376
|
@@ -1,376 +0,0 @@
|
|
|
1
|
-
# GitLab CI/CD 配置文件 - Vue 项目
|
|
2
|
-
stages:
|
|
3
|
-
- lint
|
|
4
|
-
- build
|
|
5
|
-
- deploy
|
|
6
|
-
|
|
7
|
-
# 全局变量
|
|
8
|
-
variables:
|
|
9
|
-
DOCKER_DRIVER: overlay2
|
|
10
|
-
NODE_VERSION: "20"
|
|
11
|
-
APP_NAME: "{{APP_NAME}}"
|
|
12
|
-
GIT_STRATEGY: fetch
|
|
13
|
-
GIT_SSL_NO_VERIFY: "true"
|
|
14
|
-
DOCKER_PULL_POLICY: if-not-present
|
|
15
|
-
DOCKER_HUB_REGISTRY: "docker.io"
|
|
16
|
-
DOCKER_HUB_IMAGE: "{{DOCKER_IMAGE}}"
|
|
17
|
-
|
|
18
|
-
# 全局缓存配置
|
|
19
|
-
cache:
|
|
20
|
-
key: ${CI_COMMIT_REF_SLUG}-${CI_JOB_NAME}
|
|
21
|
-
paths:
|
|
22
|
-
- node_modules/
|
|
23
|
-
- .npm/
|
|
24
|
-
|
|
25
|
-
# 代码质量检查阶段
|
|
26
|
-
lint:
|
|
27
|
-
stage: lint
|
|
28
|
-
image:
|
|
29
|
-
name: node:20-alpine
|
|
30
|
-
pull_policy: if-not-present
|
|
31
|
-
cache:
|
|
32
|
-
key: ${CI_COMMIT_REF_SLUG}-node-modules
|
|
33
|
-
paths:
|
|
34
|
-
- node_modules/
|
|
35
|
-
- .npm/
|
|
36
|
-
policy: pull-push
|
|
37
|
-
before_script:
|
|
38
|
-
- apk add --no-cache git curl jq
|
|
39
|
-
- git --version
|
|
40
|
-
- echo "Setting up Git authentication..."
|
|
41
|
-
- git config --global http.sslVerify false
|
|
42
|
-
- git config --global url."https://oauth2:${GITLAB_ACCESS_TOKEN}@{{GITLAB_HOST}}".insteadOf "http://{{GITLAB_HOST}}"
|
|
43
|
-
- git config --global url."https://oauth2:${GITLAB_ACCESS_TOKEN}@{{GITLAB_HOST}}".insteadOf "https://{{GITLAB_HOST}}"
|
|
44
|
-
- npm ci --cache .npm --prefer-offline
|
|
45
|
-
script:
|
|
46
|
-
- |
|
|
47
|
-
# 智能检测并运行 lint 命令
|
|
48
|
-
echo "检测可用的 lint 命令..."
|
|
49
|
-
LINT_FAILED=0
|
|
50
|
-
|
|
51
|
-
if npm run | grep -q "lint:check"; then
|
|
52
|
-
echo "✓ 运行 npm run lint:check"
|
|
53
|
-
if ! npm run lint:check; then
|
|
54
|
-
LINT_FAILED=1
|
|
55
|
-
fi
|
|
56
|
-
elif npm run | grep -q "lint"; then
|
|
57
|
-
echo "✓ 运行 npm run lint"
|
|
58
|
-
if ! npm run lint; then
|
|
59
|
-
LINT_FAILED=1
|
|
60
|
-
fi
|
|
61
|
-
elif npm run | grep -q "type-check"; then
|
|
62
|
-
echo "✓ 运行 npm run type-check"
|
|
63
|
-
if ! npm run type-check; then
|
|
64
|
-
LINT_FAILED=1
|
|
65
|
-
fi
|
|
66
|
-
else
|
|
67
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
68
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
69
|
-
echo " - lint:check (推荐)"
|
|
70
|
-
echo " - lint"
|
|
71
|
-
echo " - type-check"
|
|
72
|
-
fi
|
|
73
|
-
|
|
74
|
-
# 如果 lint 失败,输出友好的中文提示
|
|
75
|
-
if [ $LINT_FAILED -eq 1 ]; then
|
|
76
|
-
echo ""
|
|
77
|
-
echo "======================================================================"
|
|
78
|
-
echo "❌ 代码质量检查未通过"
|
|
79
|
-
echo "======================================================================"
|
|
80
|
-
echo ""
|
|
81
|
-
echo "📋 发现了一些代码质量问题,需要修复后才能继续部署。"
|
|
82
|
-
echo ""
|
|
83
|
-
echo "🔧 快速修复方法:"
|
|
84
|
-
echo ""
|
|
85
|
-
echo " 1. 在本地运行自动修复:"
|
|
86
|
-
echo " npm run lint"
|
|
87
|
-
echo ""
|
|
88
|
-
echo " 2. 查看具体问题:"
|
|
89
|
-
echo " npm run lint:check"
|
|
90
|
-
echo ""
|
|
91
|
-
echo " 3. 修复后提交:"
|
|
92
|
-
echo " git add ."
|
|
93
|
-
echo " git commit -m \"fix: 修复代码质量问题\""
|
|
94
|
-
echo " git push"
|
|
95
|
-
echo ""
|
|
96
|
-
echo "💡 常见问题类型:"
|
|
97
|
-
echo " - TypeScript 类型安全问题(使用了 any 类型)"
|
|
98
|
-
echo " - 未使用的变量或导入"
|
|
99
|
-
echo " - async 函数缺少 await"
|
|
100
|
-
echo " - Promise 未正确处理"
|
|
101
|
-
echo ""
|
|
102
|
-
echo "📖 详细错误信息请查看上方输出"
|
|
103
|
-
echo "======================================================================"
|
|
104
|
-
echo ""
|
|
105
|
-
exit 1
|
|
106
|
-
fi
|
|
107
|
-
only:
|
|
108
|
-
- merge_requests
|
|
109
|
-
- main
|
|
110
|
-
- develop
|
|
111
|
-
|
|
112
|
-
# 构建阶段
|
|
113
|
-
build:
|
|
114
|
-
stage: build
|
|
115
|
-
cache: {}
|
|
116
|
-
image:
|
|
117
|
-
name: docker:24.0.5
|
|
118
|
-
pull_policy: if-not-present
|
|
119
|
-
services:
|
|
120
|
-
- docker:24.0.5-dind
|
|
121
|
-
variables:
|
|
122
|
-
DOCKER_HOST: tcp://docker:2375
|
|
123
|
-
DOCKER_TLS_CERTDIR: ""
|
|
124
|
-
DOCKER_DRIVER: overlay2
|
|
125
|
-
before_script:
|
|
126
|
-
- |
|
|
127
|
-
# 智能检测并运行 lint 命令
|
|
128
|
-
echo "检测可用的 lint 命令..."
|
|
129
|
-
if npm run | grep -q "lint:check"; then
|
|
130
|
-
echo "✓ 运行 npm run lint:check"
|
|
131
|
-
npm run lint:check
|
|
132
|
-
elif npm run | grep -q "lint"; then
|
|
133
|
-
echo "✓ 运行 npm run lint"
|
|
134
|
-
npm run lint
|
|
135
|
-
elif npm run | grep -q "type-check"; then
|
|
136
|
-
echo "✓ 运行 npm run type-check"
|
|
137
|
-
npm run type-check
|
|
138
|
-
else
|
|
139
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
140
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
141
|
-
echo " - lint:check (推荐)"
|
|
142
|
-
echo " - lint"
|
|
143
|
-
echo " - type-check"
|
|
144
|
-
fi
|
|
145
|
-
- docker info
|
|
146
|
-
- echo "登录到Docker Hub..."
|
|
147
|
-
- echo "$DOCKER_HUB_PASSWORD" | docker login -u $DOCKER_HUB_USERNAME --password-stdin
|
|
148
|
-
script:
|
|
149
|
-
- |
|
|
150
|
-
# 智能检测并运行 lint 命令
|
|
151
|
-
echo "检测可用的 lint 命令..."
|
|
152
|
-
if npm run | grep -q "lint:check"; then
|
|
153
|
-
echo "✓ 运行 npm run lint:check"
|
|
154
|
-
npm run lint:check
|
|
155
|
-
elif npm run | grep -q "lint"; then
|
|
156
|
-
echo "✓ 运行 npm run lint"
|
|
157
|
-
npm run lint
|
|
158
|
-
elif npm run | grep -q "type-check"; then
|
|
159
|
-
echo "✓ 运行 npm run type-check"
|
|
160
|
-
npm run type-check
|
|
161
|
-
else
|
|
162
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
163
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
164
|
-
echo " - lint:check (推荐)"
|
|
165
|
-
echo " - lint"
|
|
166
|
-
echo " - type-check"
|
|
167
|
-
fi
|
|
168
|
-
- echo "尝试拉取最新镜像作为缓存..."
|
|
169
|
-
- docker pull $DOCKER_HUB_IMAGE:latest || true
|
|
170
|
-
- echo "构建Docker镜像..."
|
|
171
|
-
- docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $DOCKER_HUB_IMAGE:latest -t $DOCKER_HUB_IMAGE:$CI_COMMIT_SHA -t $DOCKER_HUB_IMAGE:latest .
|
|
172
|
-
- echo "推送镜像到Docker Hub..."
|
|
173
|
-
- docker push $DOCKER_HUB_IMAGE:$CI_COMMIT_SHA
|
|
174
|
-
- docker push $DOCKER_HUB_IMAGE:latest
|
|
175
|
-
only:
|
|
176
|
-
- main
|
|
177
|
-
- develop
|
|
178
|
-
|
|
179
|
-
# 开发环境部署(develop 分支自动触发)
|
|
180
|
-
deploy_dev:
|
|
181
|
-
stage: deploy
|
|
182
|
-
image:
|
|
183
|
-
name: alpine:latest
|
|
184
|
-
pull_policy: if-not-present
|
|
185
|
-
variables:
|
|
186
|
-
ENV_TYPE: "development"
|
|
187
|
-
ENV_FILE_CONTENT: $DEV_ENV_FILE
|
|
188
|
-
DEPLOY_DIR: "{{DEPLOY_DIR}}"
|
|
189
|
-
APP_PORT: "{{DEV_PORT}}"
|
|
190
|
-
REGISTRY_TYPE: "{{REGISTRY_TYPE}}"
|
|
191
|
-
cache: {}
|
|
192
|
-
before_script:
|
|
193
|
-
- |
|
|
194
|
-
# 智能检测并运行 lint 命令
|
|
195
|
-
echo "检测可用的 lint 命令..."
|
|
196
|
-
if npm run | grep -q "lint:check"; then
|
|
197
|
-
echo "✓ 运行 npm run lint:check"
|
|
198
|
-
npm run lint:check
|
|
199
|
-
elif npm run | grep -q "lint"; then
|
|
200
|
-
echo "✓ 运行 npm run lint"
|
|
201
|
-
npm run lint
|
|
202
|
-
elif npm run | grep -q "type-check"; then
|
|
203
|
-
echo "✓ 运行 npm run type-check"
|
|
204
|
-
npm run type-check
|
|
205
|
-
else
|
|
206
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
207
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
208
|
-
echo " - lint:check (推荐)"
|
|
209
|
-
echo " - lint"
|
|
210
|
-
echo " - type-check"
|
|
211
|
-
fi
|
|
212
|
-
- apk add --no-cache sshpass bash openssl rsync
|
|
213
|
-
- mkdir -p ~/.ssh
|
|
214
|
-
- chmod 700 ~/.ssh
|
|
215
|
-
- chmod 644 ~/.ssh/known_hosts
|
|
216
|
-
script:
|
|
217
|
-
- |
|
|
218
|
-
# 智能检测并运行 lint 命令
|
|
219
|
-
echo "检测可用的 lint 命令..."
|
|
220
|
-
if npm run | grep -q "lint:check"; then
|
|
221
|
-
echo "✓ 运行 npm run lint:check"
|
|
222
|
-
npm run lint:check
|
|
223
|
-
elif npm run | grep -q "lint"; then
|
|
224
|
-
echo "✓ 运行 npm run lint"
|
|
225
|
-
npm run lint
|
|
226
|
-
elif npm run | grep -q "type-check"; then
|
|
227
|
-
echo "✓ 运行 npm run type-check"
|
|
228
|
-
npm run type-check
|
|
229
|
-
else
|
|
230
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
231
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
232
|
-
echo " - lint:check (推荐)"
|
|
233
|
-
echo " - lint"
|
|
234
|
-
echo " - type-check"
|
|
235
|
-
fi
|
|
236
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "mkdir -p $DEPLOY_DIR"
|
|
237
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "which rsync || apk add --no-cache rsync"
|
|
238
|
-
- sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$TEST_SERVER_HOST:$DEPLOY_DIR/
|
|
239
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "export DOCKER_HUB_USERNAME='$DOCKER_HUB_USERNAME' && export DOCKER_HUB_PASSWORD='$DOCKER_HUB_PASSWORD' && export APP_PORT='$APP_PORT' && cd $DEPLOY_DIR && chmod +x ci/deploy.sh && bash ci/deploy.sh $ENV_TYPE $REGISTRY_TYPE"
|
|
240
|
-
environment:
|
|
241
|
-
name: development
|
|
242
|
-
url: "{{DEV_URL}}"
|
|
243
|
-
only:
|
|
244
|
-
- develop
|
|
245
|
-
|
|
246
|
-
# 生产环境部署(main 分支手动触发)
|
|
247
|
-
deploy_prod:
|
|
248
|
-
stage: deploy
|
|
249
|
-
image:
|
|
250
|
-
name: alpine:latest
|
|
251
|
-
pull_policy: if-not-present
|
|
252
|
-
variables:
|
|
253
|
-
ENV_TYPE: "production"
|
|
254
|
-
ENV_FILE_CONTENT: $PROD_ENV_FILE
|
|
255
|
-
DEPLOY_DIR: "{{DEPLOY_DIR}}"
|
|
256
|
-
APP_PORT: "{{PROD_PORT}}"
|
|
257
|
-
REGISTRY_TYPE: "{{REGISTRY_TYPE}}"
|
|
258
|
-
cache: {}
|
|
259
|
-
before_script:
|
|
260
|
-
- |
|
|
261
|
-
# 智能检测并运行 lint 命令
|
|
262
|
-
echo "检测可用的 lint 命令..."
|
|
263
|
-
if npm run | grep -q "lint:check"; then
|
|
264
|
-
echo "✓ 运行 npm run lint:check"
|
|
265
|
-
npm run lint:check
|
|
266
|
-
elif npm run | grep -q "lint"; then
|
|
267
|
-
echo "✓ 运行 npm run lint"
|
|
268
|
-
npm run lint
|
|
269
|
-
elif npm run | grep -q "type-check"; then
|
|
270
|
-
echo "✓ 运行 npm run type-check"
|
|
271
|
-
npm run type-check
|
|
272
|
-
else
|
|
273
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
274
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
275
|
-
echo " - lint:check (推荐)"
|
|
276
|
-
echo " - lint"
|
|
277
|
-
echo " - type-check"
|
|
278
|
-
fi
|
|
279
|
-
- apk add --no-cache sshpass bash openssl rsync
|
|
280
|
-
- mkdir -p ~/.ssh
|
|
281
|
-
- chmod 700 ~/.ssh
|
|
282
|
-
- chmod 644 ~/.ssh/known_hosts
|
|
283
|
-
script:
|
|
284
|
-
- |
|
|
285
|
-
# 智能检测并运行 lint 命令
|
|
286
|
-
echo "检测可用的 lint 命令..."
|
|
287
|
-
if npm run | grep -q "lint:check"; then
|
|
288
|
-
echo "✓ 运行 npm run lint:check"
|
|
289
|
-
npm run lint:check
|
|
290
|
-
elif npm run | grep -q "lint"; then
|
|
291
|
-
echo "✓ 运行 npm run lint"
|
|
292
|
-
npm run lint
|
|
293
|
-
elif npm run | grep -q "type-check"; then
|
|
294
|
-
echo "✓ 运行 npm run type-check"
|
|
295
|
-
npm run type-check
|
|
296
|
-
else
|
|
297
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
298
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
299
|
-
echo " - lint:check (推荐)"
|
|
300
|
-
echo " - lint"
|
|
301
|
-
echo " - type-check"
|
|
302
|
-
fi
|
|
303
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "mkdir -p $DEPLOY_DIR"
|
|
304
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "which rsync || apk add --no-cache rsync"
|
|
305
|
-
- sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$PROD_SERVER_HOST:$DEPLOY_DIR/
|
|
306
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "export DOCKER_HUB_USERNAME='$DOCKER_HUB_USERNAME' && export DOCKER_HUB_PASSWORD='$DOCKER_HUB_PASSWORD' && export APP_PORT='$APP_PORT' && cd $DEPLOY_DIR && chmod +x ci/deploy.sh && bash ci/deploy.sh $ENV_TYPE $REGISTRY_TYPE"
|
|
307
|
-
environment:
|
|
308
|
-
name: production
|
|
309
|
-
url: "{{PROD_URL}}"
|
|
310
|
-
only:
|
|
311
|
-
- main
|
|
312
|
-
when: manual
|
|
313
|
-
|
|
314
|
-
# 回滚部署(可选)
|
|
315
|
-
rollback:
|
|
316
|
-
stage: deploy
|
|
317
|
-
image:
|
|
318
|
-
name: alpine:latest
|
|
319
|
-
pull_policy: if-not-present
|
|
320
|
-
variables:
|
|
321
|
-
DEPLOY_DIR: "{{DEPLOY_DIR}}"
|
|
322
|
-
APP_PORT: "{{PROD_PORT}}"
|
|
323
|
-
cache: {}
|
|
324
|
-
before_script:
|
|
325
|
-
- |
|
|
326
|
-
# 智能检测并运行 lint 命令
|
|
327
|
-
echo "检测可用的 lint 命令..."
|
|
328
|
-
if npm run | grep -q "lint:check"; then
|
|
329
|
-
echo "✓ 运行 npm run lint:check"
|
|
330
|
-
npm run lint:check
|
|
331
|
-
elif npm run | grep -q "lint"; then
|
|
332
|
-
echo "✓ 运行 npm run lint"
|
|
333
|
-
npm run lint
|
|
334
|
-
elif npm run | grep -q "type-check"; then
|
|
335
|
-
echo "✓ 运行 npm run type-check"
|
|
336
|
-
npm run type-check
|
|
337
|
-
else
|
|
338
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
339
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
340
|
-
echo " - lint:check (推荐)"
|
|
341
|
-
echo " - lint"
|
|
342
|
-
echo " - type-check"
|
|
343
|
-
fi
|
|
344
|
-
- apk add --no-cache openssh-client openssl
|
|
345
|
-
- mkdir -p ~/.ssh
|
|
346
|
-
- chmod 700 ~/.ssh
|
|
347
|
-
- chmod 644 ~/.ssh/known_hosts
|
|
348
|
-
script:
|
|
349
|
-
- |
|
|
350
|
-
# 智能检测并运行 lint 命令
|
|
351
|
-
echo "检测可用的 lint 命令..."
|
|
352
|
-
if npm run | grep -q "lint:check"; then
|
|
353
|
-
echo "✓ 运行 npm run lint:check"
|
|
354
|
-
npm run lint:check
|
|
355
|
-
elif npm run | grep -q "lint"; then
|
|
356
|
-
echo "✓ 运行 npm run lint"
|
|
357
|
-
npm run lint
|
|
358
|
-
elif npm run | grep -q "type-check"; then
|
|
359
|
-
echo "✓ 运行 npm run type-check"
|
|
360
|
-
npm run type-check
|
|
361
|
-
else
|
|
362
|
-
echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
|
|
363
|
-
echo "建议在 package.json 中添加以下命令之一:"
|
|
364
|
-
echo " - lint:check (推荐)"
|
|
365
|
-
echo " - lint"
|
|
366
|
-
echo " - type-check"
|
|
367
|
-
fi
|
|
368
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose down"
|
|
369
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose pull"
|
|
370
|
-
- sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose up -d"
|
|
371
|
-
environment:
|
|
372
|
-
name: production
|
|
373
|
-
url: "{{PROD_URL}}"
|
|
374
|
-
when: manual
|
|
375
|
-
only:
|
|
376
|
-
- main
|