clouddreamai-cicd-setup 1.0.5 → 1.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.
package/dist/cli.js CHANGED
@@ -48,6 +48,7 @@ const prompts_1 = require("./utils/prompts");
48
48
  const gitlab_client_1 = require("./core/gitlab-client");
49
49
  const variables_1 = require("./core/variables");
50
50
  const template_1 = require("./utils/template");
51
+ const package_helper_1 = require("./utils/package-helper");
51
52
  const path = __importStar(require("path"));
52
53
  const fs_1 = require("fs");
53
54
  // 读取 package.json 获取版本号
@@ -77,7 +78,17 @@ program
77
78
  process.exit(1);
78
79
  }
79
80
  spinner.succeed(chalk_1.default.green(`GitLab 连接成功 (用户: ${testResult.data?.username})`));
80
- // 3. 生成文件
81
+ // 3. 检查并修复 package.json
82
+ spinner.start('检查 package.json scripts...');
83
+ const packageHelper = (0, package_helper_1.createPackageHelper)();
84
+ const packageResult = await packageHelper.ensureLintScripts(options.output, config.project.type);
85
+ if (packageResult.modified) {
86
+ spinner.succeed(chalk_1.default.green(`已添加 ${packageResult.addedScripts.length} 个 script: ${packageResult.addedScripts.join(', ')}`));
87
+ }
88
+ else {
89
+ spinner.succeed(chalk_1.default.green('package.json 检查完成'));
90
+ }
91
+ // 4. 生成文件
81
92
  spinner.start('正在生成 CI/CD 配置文件...');
82
93
  const templateGenerator = (0, template_1.createTemplateGenerator)();
83
94
  const generateResult = await templateGenerator.generateAll(options.output, config.project.type, config.project, config.gitlab.baseUrl, config.registry.type);
@@ -174,7 +185,7 @@ program
174
185
  console.log(chalk_1.default.yellow('\n⚠️ 已取消上传变量\n'));
175
186
  return;
176
187
  }
177
- // 6. 批量上传变量
188
+ // 7. 批量上传变量
178
189
  spinner.start('正在上传 CI/CD 变量到 GitLab...');
179
190
  const uploadResult = await gitlabClient.batchUpsertVariables(selectedProject, variables);
180
191
  if (uploadResult.success.length > 0) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * CloudDreamAI CI/CD Setup - package.json 辅助工具
3
+ * 用于检查和添加必要的 npm scripts
4
+ */
5
+ import { ProjectType } from '../core/types';
6
+ /**
7
+ * package.json 辅助类
8
+ */
9
+ export declare class PackageHelper {
10
+ /**
11
+ * 检查并修复 package.json 中的 lint 命令
12
+ */
13
+ ensureLintScripts(projectDir: string, projectType: ProjectType): Promise<{
14
+ modified: boolean;
15
+ addedScripts: string[];
16
+ }>;
17
+ /**
18
+ * 获取需要添加的脚本
19
+ */
20
+ private getRequiredScripts;
21
+ }
22
+ /**
23
+ * 创建 PackageHelper 实例
24
+ */
25
+ export declare function createPackageHelper(): PackageHelper;
26
+ //# sourceMappingURL=package-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-helper.d.ts","sourceRoot":"","sources":["../../src/utils/package-helper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAgEzD;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAyE3B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ /**
3
+ * CloudDreamAI CI/CD Setup - package.json 辅助工具
4
+ * 用于检查和添加必要的 npm scripts
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.PackageHelper = void 0;
41
+ exports.createPackageHelper = createPackageHelper;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ /**
45
+ * package.json 辅助类
46
+ */
47
+ class PackageHelper {
48
+ /**
49
+ * 检查并修复 package.json 中的 lint 命令
50
+ */
51
+ async ensureLintScripts(projectDir, projectType) {
52
+ const packageJsonPath = path.join(projectDir, 'package.json');
53
+ if (!fs.existsSync(packageJsonPath)) {
54
+ console.log('\n⚠️ 未找到 package.json,跳过脚本检查\n');
55
+ return { modified: false, addedScripts: [] };
56
+ }
57
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
58
+ const scripts = packageJson.scripts || {};
59
+ const addedScripts = [];
60
+ let modified = false;
61
+ // 根据项目类型确定需要的命令
62
+ const requiredScripts = this.getRequiredScripts(projectType, scripts);
63
+ if (requiredScripts.length === 0) {
64
+ return { modified: false, addedScripts: [] };
65
+ }
66
+ console.log('\n📋 检查 package.json scripts...\n');
67
+ // 询问用户是否添加
68
+ const inquirer = (await Promise.resolve().then(() => __importStar(require('inquirer')))).default;
69
+ const { confirm } = await inquirer.prompt([
70
+ {
71
+ type: 'confirm',
72
+ name: 'confirm',
73
+ message: `检测到缺少以下推荐的 npm scripts,是否自动添加?\n${requiredScripts.map((s) => ` - ${s.name}: ${s.command}`).join('\n')}\n`,
74
+ default: true,
75
+ },
76
+ ]);
77
+ if (!confirm) {
78
+ console.log('\n⚠️ 已跳过添加 scripts,CI/CD 将使用智能检测\n');
79
+ return { modified: false, addedScripts: [] };
80
+ }
81
+ // 添加缺失的脚本
82
+ for (const script of requiredScripts) {
83
+ packageJson.scripts[script.name] = script.command;
84
+ addedScripts.push(script.name);
85
+ modified = true;
86
+ }
87
+ if (modified) {
88
+ // 备份原文件
89
+ const backupPath = `${packageJsonPath}.backup`;
90
+ fs.copyFileSync(packageJsonPath, backupPath);
91
+ // 写入更新后的 package.json
92
+ fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf-8');
93
+ console.log(`\n✅ 已添加 ${addedScripts.length} 个 script`);
94
+ console.log(` 备份文件: ${backupPath}\n`);
95
+ }
96
+ return { modified, addedScripts };
97
+ }
98
+ /**
99
+ * 获取需要添加的脚本
100
+ */
101
+ getRequiredScripts(projectType, existingScripts) {
102
+ const required = [];
103
+ // NestJS 项目
104
+ if (projectType === 'nestjs' || projectType === 'node') {
105
+ // 检查是否有 lint:check
106
+ if (!existingScripts['lint:check']) {
107
+ // 如果有 lint,基于它创建 lint:check
108
+ if (existingScripts['lint']) {
109
+ const lintCommand = existingScripts['lint'];
110
+ // 移除 --fix 参数
111
+ const checkCommand = lintCommand.replace(/\s+--fix\s*$/, '').trim();
112
+ required.push({
113
+ name: 'lint:check',
114
+ command: checkCommand,
115
+ description: 'ESLint 检查(不自动修复)',
116
+ });
117
+ }
118
+ else {
119
+ // 默认 NestJS lint 命令
120
+ required.push({
121
+ name: 'lint:check',
122
+ command: 'eslint "{src,apps,libs,test}/**/*.ts"',
123
+ description: 'ESLint 检查',
124
+ });
125
+ required.push({
126
+ name: 'lint',
127
+ command: 'eslint "{src,apps,libs,test}/**/*.ts" --fix',
128
+ description: 'ESLint 检查并自动修复',
129
+ });
130
+ }
131
+ }
132
+ }
133
+ // Vue/React 项目
134
+ if (projectType === 'vue' || projectType === 'react') {
135
+ // 检查是否有 type-check
136
+ if (!existingScripts['type-check']) {
137
+ if (projectType === 'vue') {
138
+ required.push({
139
+ name: 'type-check',
140
+ command: 'vue-tsc --noEmit',
141
+ description: 'TypeScript 类型检查',
142
+ });
143
+ }
144
+ else {
145
+ required.push({
146
+ name: 'type-check',
147
+ command: 'tsc --noEmit',
148
+ description: 'TypeScript 类型检查',
149
+ });
150
+ }
151
+ }
152
+ // 如果没有 lint:check 也没有 lint
153
+ if (!existingScripts['lint:check'] && !existingScripts['lint']) {
154
+ required.push({
155
+ name: 'lint',
156
+ command: 'eslint . --ext .ts,.tsx,.vue --fix',
157
+ description: 'ESLint 检查并自动修复',
158
+ });
159
+ required.push({
160
+ name: 'lint:check',
161
+ command: 'eslint . --ext .ts,.tsx,.vue',
162
+ description: 'ESLint 检查',
163
+ });
164
+ }
165
+ }
166
+ return required;
167
+ }
168
+ }
169
+ exports.PackageHelper = PackageHelper;
170
+ /**
171
+ * 创建 PackageHelper 实例
172
+ */
173
+ function createPackageHelper() {
174
+ return new PackageHelper();
175
+ }
176
+ //# sourceMappingURL=package-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-helper.js","sourceRoot":"","sources":["../../src/utils/package-helper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clouddreamai-cicd-setup",
3
- "version": "1.0.5",
3
+ "version": "1.1.0",
4
4
  "description": "CloudDreamAI GitLab CI/CD 自动配置工具 - 支持 NestJS/Vue/React 项目的一键 CI/CD 配置",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -35,7 +35,7 @@ lint:
35
35
  - .npm/
36
36
  policy: pull-push
37
37
  before_script:
38
- - apk add --no-cache git curl
38
+ - apk add --no-cache git curl jq
39
39
  - git --version
40
40
  - echo "Setting up Git authentication..."
41
41
  - git config --global http.sslVerify false
@@ -43,7 +43,25 @@ lint:
43
43
  - git config --global url."https://oauth2:${GITLAB_ACCESS_TOKEN}@{{GITLAB_HOST}}".insteadOf "https://{{GITLAB_HOST}}"
44
44
  - npm ci --cache .npm --prefer-offline
45
45
  script:
46
- - {{LINT_COMMAND}}
46
+ - |
47
+ # 智能检测并运行 lint 命令
48
+ echo "检测可用的 lint 命令..."
49
+ if npm run | grep -q "lint:check"; then
50
+ echo "✓ 运行 npm run lint:check"
51
+ npm run lint:check
52
+ elif npm run | grep -q "lint"; then
53
+ echo "✓ 运行 npm run lint"
54
+ npm run lint
55
+ elif npm run | grep -q "type-check"; then
56
+ echo "✓ 运行 npm run type-check"
57
+ npm run type-check
58
+ else
59
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
60
+ echo "建议在 package.json 中添加以下命令之一:"
61
+ echo " - lint:check (推荐)"
62
+ echo " - lint"
63
+ echo " - type-check"
64
+ fi
47
65
  only:
48
66
  - merge_requests
49
67
  - main
@@ -35,7 +35,26 @@ lint:
35
35
  - .npm/
36
36
  policy: pull-push
37
37
  before_script:
38
- - apk add --no-cache git curl
38
+ - |
39
+ # 智能检测并运行 lint 命令
40
+ echo "检测可用的 lint 命令..."
41
+ if npm run | grep -q "lint:check"; then
42
+ echo "✓ 运行 npm run lint:check"
43
+ npm run lint:check
44
+ elif npm run | grep -q "lint"; then
45
+ echo "✓ 运行 npm run lint"
46
+ npm run lint
47
+ elif npm run | grep -q "type-check"; then
48
+ echo "✓ 运行 npm run type-check"
49
+ npm run type-check
50
+ else
51
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
52
+ echo "建议在 package.json 中添加以下命令之一:"
53
+ echo " - lint:check (推荐)"
54
+ echo " - lint"
55
+ echo " - type-check"
56
+ fi
57
+ - apk add --no-cache git curl jq
39
58
  - git --version
40
59
  - echo "Setting up Git authentication..."
41
60
  - git config --global http.sslVerify false
@@ -43,7 +62,25 @@ lint:
43
62
  - git config --global url."https://oauth2:${GITLAB_ACCESS_TOKEN}@{{GITLAB_HOST}}".insteadOf "https://{{GITLAB_HOST}}"
44
63
  - npm ci --cache .npm --prefer-offline
45
64
  script:
46
- - {{LINT_COMMAND}}
65
+ - |
66
+ # 智能检测并运行 lint 命令
67
+ echo "检测可用的 lint 命令..."
68
+ if npm run | grep -q "lint:check"; then
69
+ echo "✓ 运行 npm run lint:check"
70
+ npm run lint:check
71
+ elif npm run | grep -q "lint"; then
72
+ echo "✓ 运行 npm run lint"
73
+ npm run lint
74
+ elif npm run | grep -q "type-check"; then
75
+ echo "✓ 运行 npm run type-check"
76
+ npm run type-check
77
+ else
78
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
79
+ echo "建议在 package.json 中添加以下命令之一:"
80
+ echo " - lint:check (推荐)"
81
+ echo " - lint"
82
+ echo " - type-check"
83
+ fi
47
84
  only:
48
85
  - merge_requests
49
86
  - main
@@ -57,10 +94,48 @@ build:
57
94
  name: docker:24.0.5
58
95
  pull_policy: if-not-present
59
96
  before_script:
97
+ - |
98
+ # 智能检测并运行 lint 命令
99
+ echo "检测可用的 lint 命令..."
100
+ if npm run | grep -q "lint:check"; then
101
+ echo "✓ 运行 npm run lint:check"
102
+ npm run lint:check
103
+ elif npm run | grep -q "lint"; then
104
+ echo "✓ 运行 npm run lint"
105
+ npm run lint
106
+ elif npm run | grep -q "type-check"; then
107
+ echo "✓ 运行 npm run type-check"
108
+ npm run type-check
109
+ else
110
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
111
+ echo "建议在 package.json 中添加以下命令之一:"
112
+ echo " - lint:check (推荐)"
113
+ echo " - lint"
114
+ echo " - type-check"
115
+ fi
60
116
  - docker info
61
117
  - echo "登录到Docker Hub..."
62
118
  - echo "$DOCKER_HUB_PASSWORD" | docker login -u $DOCKER_HUB_USERNAME --password-stdin
63
119
  script:
120
+ - |
121
+ # 智能检测并运行 lint 命令
122
+ echo "检测可用的 lint 命令..."
123
+ if npm run | grep -q "lint:check"; then
124
+ echo "✓ 运行 npm run lint:check"
125
+ npm run lint:check
126
+ elif npm run | grep -q "lint"; then
127
+ echo "✓ 运行 npm run lint"
128
+ npm run lint
129
+ elif npm run | grep -q "type-check"; then
130
+ echo "✓ 运行 npm run type-check"
131
+ npm run type-check
132
+ else
133
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
134
+ echo "建议在 package.json 中添加以下命令之一:"
135
+ echo " - lint:check (推荐)"
136
+ echo " - lint"
137
+ echo " - type-check"
138
+ fi
64
139
  - echo "尝试拉取最新镜像作为缓存..."
65
140
  - docker pull $DOCKER_HUB_IMAGE:latest || true
66
141
  - echo "构建Docker镜像..."
@@ -86,11 +161,49 @@ deploy_dev:
86
161
  REGISTRY_TYPE: "{{REGISTRY_TYPE}}"
87
162
  cache: {}
88
163
  before_script:
164
+ - |
165
+ # 智能检测并运行 lint 命令
166
+ echo "检测可用的 lint 命令..."
167
+ if npm run | grep -q "lint:check"; then
168
+ echo "✓ 运行 npm run lint:check"
169
+ npm run lint:check
170
+ elif npm run | grep -q "lint"; then
171
+ echo "✓ 运行 npm run lint"
172
+ npm run lint
173
+ elif npm run | grep -q "type-check"; then
174
+ echo "✓ 运行 npm run type-check"
175
+ npm run type-check
176
+ else
177
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
178
+ echo "建议在 package.json 中添加以下命令之一:"
179
+ echo " - lint:check (推荐)"
180
+ echo " - lint"
181
+ echo " - type-check"
182
+ fi
89
183
  - apk add --no-cache sshpass bash openssl rsync
90
184
  - mkdir -p ~/.ssh
91
185
  - chmod 700 ~/.ssh
92
186
  - chmod 644 ~/.ssh/known_hosts
93
187
  script:
188
+ - |
189
+ # 智能检测并运行 lint 命令
190
+ echo "检测可用的 lint 命令..."
191
+ if npm run | grep -q "lint:check"; then
192
+ echo "✓ 运行 npm run lint:check"
193
+ npm run lint:check
194
+ elif npm run | grep -q "lint"; then
195
+ echo "✓ 运行 npm run lint"
196
+ npm run lint
197
+ elif npm run | grep -q "type-check"; then
198
+ echo "✓ 运行 npm run type-check"
199
+ npm run type-check
200
+ else
201
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
202
+ echo "建议在 package.json 中添加以下命令之一:"
203
+ echo " - lint:check (推荐)"
204
+ echo " - lint"
205
+ echo " - type-check"
206
+ fi
94
207
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "mkdir -p $DEPLOY_DIR"
95
208
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "which rsync || apk add --no-cache rsync"
96
209
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$TEST_SERVER_HOST:$DEPLOY_DIR/
@@ -115,11 +228,49 @@ deploy_prod:
115
228
  REGISTRY_TYPE: "{{REGISTRY_TYPE}}"
116
229
  cache: {}
117
230
  before_script:
231
+ - |
232
+ # 智能检测并运行 lint 命令
233
+ echo "检测可用的 lint 命令..."
234
+ if npm run | grep -q "lint:check"; then
235
+ echo "✓ 运行 npm run lint:check"
236
+ npm run lint:check
237
+ elif npm run | grep -q "lint"; then
238
+ echo "✓ 运行 npm run lint"
239
+ npm run lint
240
+ elif npm run | grep -q "type-check"; then
241
+ echo "✓ 运行 npm run type-check"
242
+ npm run type-check
243
+ else
244
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
245
+ echo "建议在 package.json 中添加以下命令之一:"
246
+ echo " - lint:check (推荐)"
247
+ echo " - lint"
248
+ echo " - type-check"
249
+ fi
118
250
  - apk add --no-cache sshpass bash openssl rsync
119
251
  - mkdir -p ~/.ssh
120
252
  - chmod 700 ~/.ssh
121
253
  - chmod 644 ~/.ssh/known_hosts
122
254
  script:
255
+ - |
256
+ # 智能检测并运行 lint 命令
257
+ echo "检测可用的 lint 命令..."
258
+ if npm run | grep -q "lint:check"; then
259
+ echo "✓ 运行 npm run lint:check"
260
+ npm run lint:check
261
+ elif npm run | grep -q "lint"; then
262
+ echo "✓ 运行 npm run lint"
263
+ npm run lint
264
+ elif npm run | grep -q "type-check"; then
265
+ echo "✓ 运行 npm run type-check"
266
+ npm run type-check
267
+ else
268
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
269
+ echo "建议在 package.json 中添加以下命令之一:"
270
+ echo " - lint:check (推荐)"
271
+ echo " - lint"
272
+ echo " - type-check"
273
+ fi
123
274
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "mkdir -p $DEPLOY_DIR"
124
275
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "which rsync || apk add --no-cache rsync"
125
276
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$PROD_SERVER_HOST:$DEPLOY_DIR/
@@ -142,11 +293,49 @@ rollback:
142
293
  APP_PORT: "{{PROD_PORT}}"
143
294
  cache: {}
144
295
  before_script:
296
+ - |
297
+ # 智能检测并运行 lint 命令
298
+ echo "检测可用的 lint 命令..."
299
+ if npm run | grep -q "lint:check"; then
300
+ echo "✓ 运行 npm run lint:check"
301
+ npm run lint:check
302
+ elif npm run | grep -q "lint"; then
303
+ echo "✓ 运行 npm run lint"
304
+ npm run lint
305
+ elif npm run | grep -q "type-check"; then
306
+ echo "✓ 运行 npm run type-check"
307
+ npm run type-check
308
+ else
309
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
310
+ echo "建议在 package.json 中添加以下命令之一:"
311
+ echo " - lint:check (推荐)"
312
+ echo " - lint"
313
+ echo " - type-check"
314
+ fi
145
315
  - apk add --no-cache openssh-client openssl
146
316
  - mkdir -p ~/.ssh
147
317
  - chmod 700 ~/.ssh
148
318
  - chmod 644 ~/.ssh/known_hosts
149
319
  script:
320
+ - |
321
+ # 智能检测并运行 lint 命令
322
+ echo "检测可用的 lint 命令..."
323
+ if npm run | grep -q "lint:check"; then
324
+ echo "✓ 运行 npm run lint:check"
325
+ npm run lint:check
326
+ elif npm run | grep -q "lint"; then
327
+ echo "✓ 运行 npm run lint"
328
+ npm run lint
329
+ elif npm run | grep -q "type-check"; then
330
+ echo "✓ 运行 npm run type-check"
331
+ npm run type-check
332
+ else
333
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
334
+ echo "建议在 package.json 中添加以下命令之一:"
335
+ echo " - lint:check (推荐)"
336
+ echo " - lint"
337
+ echo " - type-check"
338
+ fi
150
339
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose down"
151
340
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose pull"
152
341
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose up -d"
@@ -35,7 +35,26 @@ lint:
35
35
  - .npm/
36
36
  policy: pull-push
37
37
  before_script:
38
- - apk add --no-cache git curl
38
+ - |
39
+ # 智能检测并运行 lint 命令
40
+ echo "检测可用的 lint 命令..."
41
+ if npm run | grep -q "lint:check"; then
42
+ echo "✓ 运行 npm run lint:check"
43
+ npm run lint:check
44
+ elif npm run | grep -q "lint"; then
45
+ echo "✓ 运行 npm run lint"
46
+ npm run lint
47
+ elif npm run | grep -q "type-check"; then
48
+ echo "✓ 运行 npm run type-check"
49
+ npm run type-check
50
+ else
51
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
52
+ echo "建议在 package.json 中添加以下命令之一:"
53
+ echo " - lint:check (推荐)"
54
+ echo " - lint"
55
+ echo " - type-check"
56
+ fi
57
+ - apk add --no-cache git curl jq
39
58
  - git --version
40
59
  - echo "Setting up Git authentication..."
41
60
  - git config --global http.sslVerify false
@@ -43,7 +62,25 @@ lint:
43
62
  - git config --global url."https://oauth2:${GITLAB_ACCESS_TOKEN}@{{GITLAB_HOST}}".insteadOf "https://{{GITLAB_HOST}}"
44
63
  - npm ci --cache .npm --prefer-offline
45
64
  script:
46
- - {{LINT_COMMAND}}
65
+ - |
66
+ # 智能检测并运行 lint 命令
67
+ echo "检测可用的 lint 命令..."
68
+ if npm run | grep -q "lint:check"; then
69
+ echo "✓ 运行 npm run lint:check"
70
+ npm run lint:check
71
+ elif npm run | grep -q "lint"; then
72
+ echo "✓ 运行 npm run lint"
73
+ npm run lint
74
+ elif npm run | grep -q "type-check"; then
75
+ echo "✓ 运行 npm run type-check"
76
+ npm run type-check
77
+ else
78
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
79
+ echo "建议在 package.json 中添加以下命令之一:"
80
+ echo " - lint:check (推荐)"
81
+ echo " - lint"
82
+ echo " - type-check"
83
+ fi
47
84
  only:
48
85
  - merge_requests
49
86
  - main
@@ -57,11 +94,49 @@ build:
57
94
  name: docker:24.0.5
58
95
  pull_policy: if-not-present
59
96
  before_script:
97
+ - |
98
+ # 智能检测并运行 lint 命令
99
+ echo "检测可用的 lint 命令..."
100
+ if npm run | grep -q "lint:check"; then
101
+ echo "✓ 运行 npm run lint:check"
102
+ npm run lint:check
103
+ elif npm run | grep -q "lint"; then
104
+ echo "✓ 运行 npm run lint"
105
+ npm run lint
106
+ elif npm run | grep -q "type-check"; then
107
+ echo "✓ 运行 npm run type-check"
108
+ npm run type-check
109
+ else
110
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
111
+ echo "建议在 package.json 中添加以下命令之一:"
112
+ echo " - lint:check (推荐)"
113
+ echo " - lint"
114
+ echo " - type-check"
115
+ fi
60
116
  - docker info
61
117
  - echo "登录到 GitLab Container Registry..."
62
118
  # 使用 GitLab CI 预定义变量登录
63
119
  - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
64
120
  script:
121
+ - |
122
+ # 智能检测并运行 lint 命令
123
+ echo "检测可用的 lint 命令..."
124
+ if npm run | grep -q "lint:check"; then
125
+ echo "✓ 运行 npm run lint:check"
126
+ npm run lint:check
127
+ elif npm run | grep -q "lint"; then
128
+ echo "✓ 运行 npm run lint"
129
+ npm run lint
130
+ elif npm run | grep -q "type-check"; then
131
+ echo "✓ 运行 npm run type-check"
132
+ npm run type-check
133
+ else
134
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
135
+ echo "建议在 package.json 中添加以下命令之一:"
136
+ echo " - lint:check (推荐)"
137
+ echo " - lint"
138
+ echo " - type-check"
139
+ fi
65
140
  - echo "尝试拉取最新镜像作为缓存..."
66
141
  - docker pull $DOCKER_IMAGE:latest || true
67
142
  - echo "构建Docker镜像..."
@@ -86,6 +161,25 @@ deploy_dev:
86
161
  APP_PORT: "{{DEV_PORT}}"
87
162
  cache: {}
88
163
  before_script:
164
+ - |
165
+ # 智能检测并运行 lint 命令
166
+ echo "检测可用的 lint 命令..."
167
+ if npm run | grep -q "lint:check"; then
168
+ echo "✓ 运行 npm run lint:check"
169
+ npm run lint:check
170
+ elif npm run | grep -q "lint"; then
171
+ echo "✓ 运行 npm run lint"
172
+ npm run lint
173
+ elif npm run | grep -q "type-check"; then
174
+ echo "✓ 运行 npm run type-check"
175
+ npm run type-check
176
+ else
177
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
178
+ echo "建议在 package.json 中添加以下命令之一:"
179
+ echo " - lint:check (推荐)"
180
+ echo " - lint"
181
+ echo " - type-check"
182
+ fi
89
183
  - apk add --no-cache sshpass bash openssl rsync
90
184
  - mkdir -p ~/.ssh
91
185
  - chmod 700 ~/.ssh
@@ -94,6 +188,25 @@ deploy_dev:
94
188
  - chmod 600 ~/.ssh/config
95
189
  - chmod 644 ~/.ssh/known_hosts
96
190
  script:
191
+ - |
192
+ # 智能检测并运行 lint 命令
193
+ echo "检测可用的 lint 命令..."
194
+ if npm run | grep -q "lint:check"; then
195
+ echo "✓ 运行 npm run lint:check"
196
+ npm run lint:check
197
+ elif npm run | grep -q "lint"; then
198
+ echo "✓ 运行 npm run lint"
199
+ npm run lint
200
+ elif npm run | grep -q "type-check"; then
201
+ echo "✓ 运行 npm run type-check"
202
+ npm run type-check
203
+ else
204
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
205
+ echo "建议在 package.json 中添加以下命令之一:"
206
+ echo " - lint:check (推荐)"
207
+ echo " - lint"
208
+ echo " - type-check"
209
+ fi
97
210
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "mkdir -p $DEPLOY_DIR"
98
211
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "which rsync || apk add --no-cache rsync"
99
212
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$TEST_SERVER_HOST:$DEPLOY_DIR/
@@ -118,6 +231,25 @@ deploy_prod:
118
231
  APP_PORT: "{{PROD_PORT}}"
119
232
  cache: {}
120
233
  before_script:
234
+ - |
235
+ # 智能检测并运行 lint 命令
236
+ echo "检测可用的 lint 命令..."
237
+ if npm run | grep -q "lint:check"; then
238
+ echo "✓ 运行 npm run lint:check"
239
+ npm run lint:check
240
+ elif npm run | grep -q "lint"; then
241
+ echo "✓ 运行 npm run lint"
242
+ npm run lint
243
+ elif npm run | grep -q "type-check"; then
244
+ echo "✓ 运行 npm run type-check"
245
+ npm run type-check
246
+ else
247
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
248
+ echo "建议在 package.json 中添加以下命令之一:"
249
+ echo " - lint:check (推荐)"
250
+ echo " - lint"
251
+ echo " - type-check"
252
+ fi
121
253
  - apk add --no-cache sshpass bash openssl rsync
122
254
  - mkdir -p ~/.ssh
123
255
  - chmod 700 ~/.ssh
@@ -126,6 +258,25 @@ deploy_prod:
126
258
  - chmod 600 ~/.ssh/config
127
259
  - chmod 644 ~/.ssh/known_hosts
128
260
  script:
261
+ - |
262
+ # 智能检测并运行 lint 命令
263
+ echo "检测可用的 lint 命令..."
264
+ if npm run | grep -q "lint:check"; then
265
+ echo "✓ 运行 npm run lint:check"
266
+ npm run lint:check
267
+ elif npm run | grep -q "lint"; then
268
+ echo "✓ 运行 npm run lint"
269
+ npm run lint
270
+ elif npm run | grep -q "type-check"; then
271
+ echo "✓ 运行 npm run type-check"
272
+ npm run type-check
273
+ else
274
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
275
+ echo "建议在 package.json 中添加以下命令之一:"
276
+ echo " - lint:check (推荐)"
277
+ echo " - lint"
278
+ echo " - type-check"
279
+ fi
129
280
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "mkdir -p $DEPLOY_DIR"
130
281
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "which rsync || apk add --no-cache rsync"
131
282
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$PROD_SERVER_HOST:$DEPLOY_DIR/
@@ -149,6 +300,25 @@ rollback:
149
300
  APP_PORT: "{{PROD_PORT}}"
150
301
  cache: {}
151
302
  before_script:
303
+ - |
304
+ # 智能检测并运行 lint 命令
305
+ echo "检测可用的 lint 命令..."
306
+ if npm run | grep -q "lint:check"; then
307
+ echo "✓ 运行 npm run lint:check"
308
+ npm run lint:check
309
+ elif npm run | grep -q "lint"; then
310
+ echo "✓ 运行 npm run lint"
311
+ npm run lint
312
+ elif npm run | grep -q "type-check"; then
313
+ echo "✓ 运行 npm run type-check"
314
+ npm run type-check
315
+ else
316
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
317
+ echo "建议在 package.json 中添加以下命令之一:"
318
+ echo " - lint:check (推荐)"
319
+ echo " - lint"
320
+ echo " - type-check"
321
+ fi
152
322
  - apk add --no-cache openssh-client openssl
153
323
  - mkdir -p ~/.ssh
154
324
  - chmod 700 ~/.ssh
@@ -157,6 +327,25 @@ rollback:
157
327
  - chmod 600 ~/.ssh/config
158
328
  - chmod 644 ~/.ssh/known_hosts
159
329
  script:
330
+ - |
331
+ # 智能检测并运行 lint 命令
332
+ echo "检测可用的 lint 命令..."
333
+ if npm run | grep -q "lint:check"; then
334
+ echo "✓ 运行 npm run lint:check"
335
+ npm run lint:check
336
+ elif npm run | grep -q "lint"; then
337
+ echo "✓ 运行 npm run lint"
338
+ npm run lint
339
+ elif npm run | grep -q "type-check"; then
340
+ echo "✓ 运行 npm run type-check"
341
+ npm run type-check
342
+ else
343
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
344
+ echo "建议在 package.json 中添加以下命令之一:"
345
+ echo " - lint:check (推荐)"
346
+ echo " - lint"
347
+ echo " - type-check"
348
+ fi
160
349
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose down"
161
350
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose pull"
162
351
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose up -d"
@@ -35,7 +35,26 @@ lint:
35
35
  - .npm/
36
36
  policy: pull-push
37
37
  before_script:
38
- - apk add --no-cache git curl
38
+ - |
39
+ # 智能检测并运行 lint 命令
40
+ echo "检测可用的 lint 命令..."
41
+ if npm run | grep -q "lint:check"; then
42
+ echo "✓ 运行 npm run lint:check"
43
+ npm run lint:check
44
+ elif npm run | grep -q "lint"; then
45
+ echo "✓ 运行 npm run lint"
46
+ npm run lint
47
+ elif npm run | grep -q "type-check"; then
48
+ echo "✓ 运行 npm run type-check"
49
+ npm run type-check
50
+ else
51
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
52
+ echo "建议在 package.json 中添加以下命令之一:"
53
+ echo " - lint:check (推荐)"
54
+ echo " - lint"
55
+ echo " - type-check"
56
+ fi
57
+ - apk add --no-cache git curl jq
39
58
  - git --version
40
59
  - echo "Setting up Git authentication..."
41
60
  - git config --global http.sslVerify false
@@ -43,7 +62,25 @@ lint:
43
62
  - git config --global url."https://oauth2:${GITLAB_ACCESS_TOKEN}@{{GITLAB_HOST}}".insteadOf "https://{{GITLAB_HOST}}"
44
63
  - npm ci --cache .npm --prefer-offline
45
64
  script:
46
- - {{LINT_COMMAND}}
65
+ - |
66
+ # 智能检测并运行 lint 命令
67
+ echo "检测可用的 lint 命令..."
68
+ if npm run | grep -q "lint:check"; then
69
+ echo "✓ 运行 npm run lint:check"
70
+ npm run lint:check
71
+ elif npm run | grep -q "lint"; then
72
+ echo "✓ 运行 npm run lint"
73
+ npm run lint
74
+ elif npm run | grep -q "type-check"; then
75
+ echo "✓ 运行 npm run type-check"
76
+ npm run type-check
77
+ else
78
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
79
+ echo "建议在 package.json 中添加以下命令之一:"
80
+ echo " - lint:check (推荐)"
81
+ echo " - lint"
82
+ echo " - type-check"
83
+ fi
47
84
  only:
48
85
  - merge_requests
49
86
  - main
@@ -57,10 +94,48 @@ build:
57
94
  name: docker:24.0.5
58
95
  pull_policy: if-not-present
59
96
  before_script:
97
+ - |
98
+ # 智能检测并运行 lint 命令
99
+ echo "检测可用的 lint 命令..."
100
+ if npm run | grep -q "lint:check"; then
101
+ echo "✓ 运行 npm run lint:check"
102
+ npm run lint:check
103
+ elif npm run | grep -q "lint"; then
104
+ echo "✓ 运行 npm run lint"
105
+ npm run lint
106
+ elif npm run | grep -q "type-check"; then
107
+ echo "✓ 运行 npm run type-check"
108
+ npm run type-check
109
+ else
110
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
111
+ echo "建议在 package.json 中添加以下命令之一:"
112
+ echo " - lint:check (推荐)"
113
+ echo " - lint"
114
+ echo " - type-check"
115
+ fi
60
116
  - docker info
61
117
  - echo "登录到Docker Hub..."
62
118
  - echo "$DOCKER_HUB_PASSWORD" | docker login -u $DOCKER_HUB_USERNAME --password-stdin
63
119
  script:
120
+ - |
121
+ # 智能检测并运行 lint 命令
122
+ echo "检测可用的 lint 命令..."
123
+ if npm run | grep -q "lint:check"; then
124
+ echo "✓ 运行 npm run lint:check"
125
+ npm run lint:check
126
+ elif npm run | grep -q "lint"; then
127
+ echo "✓ 运行 npm run lint"
128
+ npm run lint
129
+ elif npm run | grep -q "type-check"; then
130
+ echo "✓ 运行 npm run type-check"
131
+ npm run type-check
132
+ else
133
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
134
+ echo "建议在 package.json 中添加以下命令之一:"
135
+ echo " - lint:check (推荐)"
136
+ echo " - lint"
137
+ echo " - type-check"
138
+ fi
64
139
  - echo "尝试拉取最新镜像作为缓存..."
65
140
  - docker pull $DOCKER_HUB_IMAGE:latest || true
66
141
  - echo "构建Docker镜像..."
@@ -86,11 +161,49 @@ deploy_dev:
86
161
  REGISTRY_TYPE: "{{REGISTRY_TYPE}}"
87
162
  cache: {}
88
163
  before_script:
164
+ - |
165
+ # 智能检测并运行 lint 命令
166
+ echo "检测可用的 lint 命令..."
167
+ if npm run | grep -q "lint:check"; then
168
+ echo "✓ 运行 npm run lint:check"
169
+ npm run lint:check
170
+ elif npm run | grep -q "lint"; then
171
+ echo "✓ 运行 npm run lint"
172
+ npm run lint
173
+ elif npm run | grep -q "type-check"; then
174
+ echo "✓ 运行 npm run type-check"
175
+ npm run type-check
176
+ else
177
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
178
+ echo "建议在 package.json 中添加以下命令之一:"
179
+ echo " - lint:check (推荐)"
180
+ echo " - lint"
181
+ echo " - type-check"
182
+ fi
89
183
  - apk add --no-cache sshpass bash openssl rsync
90
184
  - mkdir -p ~/.ssh
91
185
  - chmod 700 ~/.ssh
92
186
  - chmod 644 ~/.ssh/known_hosts
93
187
  script:
188
+ - |
189
+ # 智能检测并运行 lint 命令
190
+ echo "检测可用的 lint 命令..."
191
+ if npm run | grep -q "lint:check"; then
192
+ echo "✓ 运行 npm run lint:check"
193
+ npm run lint:check
194
+ elif npm run | grep -q "lint"; then
195
+ echo "✓ 运行 npm run lint"
196
+ npm run lint
197
+ elif npm run | grep -q "type-check"; then
198
+ echo "✓ 运行 npm run type-check"
199
+ npm run type-check
200
+ else
201
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
202
+ echo "建议在 package.json 中添加以下命令之一:"
203
+ echo " - lint:check (推荐)"
204
+ echo " - lint"
205
+ echo " - type-check"
206
+ fi
94
207
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "mkdir -p $DEPLOY_DIR"
95
208
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "which rsync || apk add --no-cache rsync"
96
209
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$TEST_SERVER_HOST:$DEPLOY_DIR/
@@ -115,11 +228,49 @@ deploy_prod:
115
228
  REGISTRY_TYPE: "{{REGISTRY_TYPE}}"
116
229
  cache: {}
117
230
  before_script:
231
+ - |
232
+ # 智能检测并运行 lint 命令
233
+ echo "检测可用的 lint 命令..."
234
+ if npm run | grep -q "lint:check"; then
235
+ echo "✓ 运行 npm run lint:check"
236
+ npm run lint:check
237
+ elif npm run | grep -q "lint"; then
238
+ echo "✓ 运行 npm run lint"
239
+ npm run lint
240
+ elif npm run | grep -q "type-check"; then
241
+ echo "✓ 运行 npm run type-check"
242
+ npm run type-check
243
+ else
244
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
245
+ echo "建议在 package.json 中添加以下命令之一:"
246
+ echo " - lint:check (推荐)"
247
+ echo " - lint"
248
+ echo " - type-check"
249
+ fi
118
250
  - apk add --no-cache sshpass bash openssl rsync
119
251
  - mkdir -p ~/.ssh
120
252
  - chmod 700 ~/.ssh
121
253
  - chmod 644 ~/.ssh/known_hosts
122
254
  script:
255
+ - |
256
+ # 智能检测并运行 lint 命令
257
+ echo "检测可用的 lint 命令..."
258
+ if npm run | grep -q "lint:check"; then
259
+ echo "✓ 运行 npm run lint:check"
260
+ npm run lint:check
261
+ elif npm run | grep -q "lint"; then
262
+ echo "✓ 运行 npm run lint"
263
+ npm run lint
264
+ elif npm run | grep -q "type-check"; then
265
+ echo "✓ 运行 npm run type-check"
266
+ npm run type-check
267
+ else
268
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
269
+ echo "建议在 package.json 中添加以下命令之一:"
270
+ echo " - lint:check (推荐)"
271
+ echo " - lint"
272
+ echo " - type-check"
273
+ fi
123
274
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "mkdir -p $DEPLOY_DIR"
124
275
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "which rsync || apk add --no-cache rsync"
125
276
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$PROD_SERVER_HOST:$DEPLOY_DIR/
@@ -142,11 +293,49 @@ rollback:
142
293
  APP_PORT: "{{PROD_PORT}}"
143
294
  cache: {}
144
295
  before_script:
296
+ - |
297
+ # 智能检测并运行 lint 命令
298
+ echo "检测可用的 lint 命令..."
299
+ if npm run | grep -q "lint:check"; then
300
+ echo "✓ 运行 npm run lint:check"
301
+ npm run lint:check
302
+ elif npm run | grep -q "lint"; then
303
+ echo "✓ 运行 npm run lint"
304
+ npm run lint
305
+ elif npm run | grep -q "type-check"; then
306
+ echo "✓ 运行 npm run type-check"
307
+ npm run type-check
308
+ else
309
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
310
+ echo "建议在 package.json 中添加以下命令之一:"
311
+ echo " - lint:check (推荐)"
312
+ echo " - lint"
313
+ echo " - type-check"
314
+ fi
145
315
  - apk add --no-cache openssh-client openssl
146
316
  - mkdir -p ~/.ssh
147
317
  - chmod 700 ~/.ssh
148
318
  - chmod 644 ~/.ssh/known_hosts
149
319
  script:
320
+ - |
321
+ # 智能检测并运行 lint 命令
322
+ echo "检测可用的 lint 命令..."
323
+ if npm run | grep -q "lint:check"; then
324
+ echo "✓ 运行 npm run lint:check"
325
+ npm run lint:check
326
+ elif npm run | grep -q "lint"; then
327
+ echo "✓ 运行 npm run lint"
328
+ npm run lint
329
+ elif npm run | grep -q "type-check"; then
330
+ echo "✓ 运行 npm run type-check"
331
+ npm run type-check
332
+ else
333
+ echo "⚠️ 未找到 lint 相关命令,跳过代码检查"
334
+ echo "建议在 package.json 中添加以下命令之一:"
335
+ echo " - lint:check (推荐)"
336
+ echo " - lint"
337
+ echo " - type-check"
338
+ fi
150
339
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose down"
151
340
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose pull"
152
341
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "cd $DEPLOY_DIR && export APP_PORT=$APP_PORT && docker-compose up -d"