clouddreamai-cicd-setup 1.3.0 → 1.4.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/utils/template.d.ts +12 -0
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +50 -0
- package/dist/utils/template.js.map +1 -1
- package/package.json +1 -1
- package/templates/dockerfile/.dockerignore +25 -0
- package/templates/dockerfile/nestjs.Dockerfile +42 -0
- package/templates/dockerfile/vue.Dockerfile +33 -0
- package/templates/gitlab-ci/nestjs-gitlab.yml +6 -0
- package/templates/gitlab-ci/nestjs.yml +6 -0
- package/templates/gitlab-ci/vue-gitlab.yml +6 -0
- package/templates/gitlab-ci/vue.yml +6 -0
package/dist/utils/template.d.ts
CHANGED
|
@@ -25,6 +25,14 @@ export declare class TemplateGenerator {
|
|
|
25
25
|
* 生成 docker-compose.yml 文件内容
|
|
26
26
|
*/
|
|
27
27
|
generateDockerCompose(projectType: ProjectType, config: ProjectConfig): string;
|
|
28
|
+
/**
|
|
29
|
+
* 生成 Dockerfile 文件内容
|
|
30
|
+
*/
|
|
31
|
+
generateDockerfile(projectType: ProjectType, config: ProjectConfig): string;
|
|
32
|
+
/**
|
|
33
|
+
* 生成 .dockerignore 文件内容
|
|
34
|
+
*/
|
|
35
|
+
generateDockerignore(): string;
|
|
28
36
|
/**
|
|
29
37
|
* 备份文件(如果存在)
|
|
30
38
|
*/
|
|
@@ -50,6 +58,10 @@ export declare class TemplateGenerator {
|
|
|
50
58
|
* 根据项目类型获取 docker-compose 模板名称
|
|
51
59
|
*/
|
|
52
60
|
private getDockerComposeTemplate;
|
|
61
|
+
/**
|
|
62
|
+
* 根据项目类型获取 Dockerfile 模板名称
|
|
63
|
+
*/
|
|
64
|
+
private getDockerfileTemplate;
|
|
53
65
|
/**
|
|
54
66
|
* 根据项目类型获取 lint 命令
|
|
55
67
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAqB,YAAY,EAAE,MAAM,eAAe,CAAC;AAE5F;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAS;;IAO7B;;OAEG;IACH,gBAAgB,CACd,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,MAAM;IA8BT;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAgBnD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAehD;;OAEG;IACH,qBAAqB,CACnB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,GACpB,MAAM;IAqBT;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAqB,YAAY,EAAE,MAAM,eAAe,CAAC;AAE5F;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAS;;IAO7B;;OAEG;IACH,gBAAgB,CACd,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,MAAM;IA8BT;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAgBnD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAehD;;OAEG;IACH,qBAAqB,CACnB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,GACpB,MAAM;IAqBT;;OAEG;IACH,kBAAkB,CAChB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,GACpB,MAAM;IAoBT;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAK9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0GjE;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,cAAc;CAUvB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
|
package/dist/utils/template.js
CHANGED
|
@@ -117,6 +117,28 @@ class TemplateGenerator {
|
|
|
117
117
|
};
|
|
118
118
|
return this.replacePlaceholders(template, variables);
|
|
119
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* 生成 Dockerfile 文件内容
|
|
122
|
+
*/
|
|
123
|
+
generateDockerfile(projectType, config) {
|
|
124
|
+
// 根据项目类型选择模板
|
|
125
|
+
const templateName = this.getDockerfileTemplate(projectType);
|
|
126
|
+
const templatePath = path.join(this.templatesDir, 'dockerfile', `${templateName}.Dockerfile`);
|
|
127
|
+
// 读取模板
|
|
128
|
+
const template = fs.readFileSync(templatePath, 'utf-8');
|
|
129
|
+
// 准备替换变量(使用生产端口作为默认端口)
|
|
130
|
+
const variables = {
|
|
131
|
+
APP_PORT: config.prodPort.toString(),
|
|
132
|
+
};
|
|
133
|
+
return this.replacePlaceholders(template, variables);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 生成 .dockerignore 文件内容
|
|
137
|
+
*/
|
|
138
|
+
generateDockerignore() {
|
|
139
|
+
const templatePath = path.join(this.templatesDir, 'dockerfile', '.dockerignore');
|
|
140
|
+
return fs.readFileSync(templatePath, 'utf-8');
|
|
141
|
+
}
|
|
120
142
|
/**
|
|
121
143
|
* 备份文件(如果存在)
|
|
122
144
|
*/
|
|
@@ -146,12 +168,18 @@ class TemplateGenerator {
|
|
|
146
168
|
// 检测将要覆盖的文件
|
|
147
169
|
const gitlabCIPath = path.join(outputDir, '.gitlab-ci.yml');
|
|
148
170
|
const dockerComposePath = path.join(outputDir, 'docker-compose.yml');
|
|
171
|
+
const dockerfilePath = path.join(outputDir, 'Dockerfile');
|
|
172
|
+
const dockerignorePath = path.join(outputDir, '.dockerignore');
|
|
149
173
|
const deployScriptPath = path.join(ciDir, 'deploy.sh');
|
|
150
174
|
const envScriptPath = path.join(ciDir, 'generate-env.sh');
|
|
151
175
|
if (fs.existsSync(gitlabCIPath))
|
|
152
176
|
filesToOverwrite.push('.gitlab-ci.yml');
|
|
153
177
|
if (fs.existsSync(dockerComposePath))
|
|
154
178
|
filesToOverwrite.push('docker-compose.yml');
|
|
179
|
+
if (fs.existsSync(dockerfilePath))
|
|
180
|
+
filesToOverwrite.push('Dockerfile');
|
|
181
|
+
if (fs.existsSync(dockerignorePath))
|
|
182
|
+
filesToOverwrite.push('.dockerignore');
|
|
155
183
|
if (fs.existsSync(deployScriptPath))
|
|
156
184
|
filesToOverwrite.push('ci/deploy.sh');
|
|
157
185
|
if (fs.existsSync(envScriptPath))
|
|
@@ -184,6 +212,16 @@ class TemplateGenerator {
|
|
|
184
212
|
const dockerComposeContent = this.generateDockerCompose(projectType, config);
|
|
185
213
|
fs.writeFileSync(dockerComposePath, dockerComposeContent, 'utf-8');
|
|
186
214
|
files.push(dockerComposePath);
|
|
215
|
+
// 生成 Dockerfile
|
|
216
|
+
this.backupFile(dockerfilePath);
|
|
217
|
+
const dockerfileContent = this.generateDockerfile(projectType, config);
|
|
218
|
+
fs.writeFileSync(dockerfilePath, dockerfileContent, 'utf-8');
|
|
219
|
+
files.push(dockerfilePath);
|
|
220
|
+
// 生成 .dockerignore
|
|
221
|
+
this.backupFile(dockerignorePath);
|
|
222
|
+
const dockerignoreContent = this.generateDockerignore();
|
|
223
|
+
fs.writeFileSync(dockerignorePath, dockerignoreContent, 'utf-8');
|
|
224
|
+
files.push(dockerignorePath);
|
|
187
225
|
// 生成 ci/deploy.sh
|
|
188
226
|
this.backupFile(deployScriptPath);
|
|
189
227
|
const deployScriptContent = this.generateDeployScript(config);
|
|
@@ -249,6 +287,18 @@ class TemplateGenerator {
|
|
|
249
287
|
};
|
|
250
288
|
return templateMapping[projectType] || 'nestjs';
|
|
251
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* 根据项目类型获取 Dockerfile 模板名称
|
|
292
|
+
*/
|
|
293
|
+
getDockerfileTemplate(projectType) {
|
|
294
|
+
const templateMapping = {
|
|
295
|
+
nestjs: 'nestjs',
|
|
296
|
+
vue: 'vue',
|
|
297
|
+
react: 'vue', // React 使用和 Vue 相同的模板
|
|
298
|
+
node: 'nestjs', // 通用 Node.js 项目使用 NestJS 模板
|
|
299
|
+
};
|
|
300
|
+
return templateMapping[projectType] || 'nestjs';
|
|
301
|
+
}
|
|
252
302
|
/**
|
|
253
303
|
* 根据项目类型获取 lint 命令
|
|
254
304
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
node_modules
|
|
2
|
+
npm-debug.log
|
|
3
|
+
Dockerfile
|
|
4
|
+
.dockerignore
|
|
5
|
+
.git
|
|
6
|
+
.gitignore
|
|
7
|
+
README.md
|
|
8
|
+
.env
|
|
9
|
+
.env.*
|
|
10
|
+
.nyc_output
|
|
11
|
+
coverage
|
|
12
|
+
.coverage
|
|
13
|
+
.coverage/
|
|
14
|
+
junit.xml
|
|
15
|
+
.DS_Store
|
|
16
|
+
.vscode
|
|
17
|
+
.idea
|
|
18
|
+
*.log
|
|
19
|
+
logs/
|
|
20
|
+
dist/
|
|
21
|
+
build/
|
|
22
|
+
.gitlab-ci.yml
|
|
23
|
+
docker-compose.yml
|
|
24
|
+
ci/
|
|
25
|
+
scripts/
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 多阶段构建 Dockerfile - NestJS 项目
|
|
2
|
+
# 第一阶段:构建阶段
|
|
3
|
+
FROM node:20-alpine AS builder
|
|
4
|
+
|
|
5
|
+
# 设置工作目录
|
|
6
|
+
WORKDIR /app
|
|
7
|
+
|
|
8
|
+
# 复制 package.json 和 package-lock.json
|
|
9
|
+
COPY package*.json ./
|
|
10
|
+
|
|
11
|
+
# 安装依赖
|
|
12
|
+
RUN npm ci && npm cache clean --force
|
|
13
|
+
|
|
14
|
+
# 复制源代码
|
|
15
|
+
COPY . .
|
|
16
|
+
|
|
17
|
+
# 构建应用
|
|
18
|
+
RUN npm run build
|
|
19
|
+
|
|
20
|
+
# 第二阶段:运行阶段
|
|
21
|
+
FROM node:20-alpine AS production
|
|
22
|
+
|
|
23
|
+
# 创建非 root 用户
|
|
24
|
+
RUN addgroup -g 1001 -S nodejs && \
|
|
25
|
+
adduser -S nestjs -u 1001
|
|
26
|
+
|
|
27
|
+
# 设置工作目录
|
|
28
|
+
WORKDIR /app
|
|
29
|
+
|
|
30
|
+
# 从构建阶段复制 node_modules 和构建产物
|
|
31
|
+
COPY --from=builder --chown=nestjs:nodejs /app/node_modules ./node_modules
|
|
32
|
+
COPY --from=builder --chown=nestjs:nodejs /app/dist ./dist
|
|
33
|
+
COPY --from=builder --chown=nestjs:nodejs /app/package*.json ./
|
|
34
|
+
|
|
35
|
+
# 切换到非 root 用户
|
|
36
|
+
USER nestjs
|
|
37
|
+
|
|
38
|
+
# 暴露端口
|
|
39
|
+
EXPOSE {{APP_PORT}}
|
|
40
|
+
|
|
41
|
+
# 启动应用
|
|
42
|
+
CMD ["node", "dist/main"]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 多阶段构建 Dockerfile - Vue 项目
|
|
2
|
+
# 第一阶段:构建阶段
|
|
3
|
+
FROM node:20-alpine AS builder
|
|
4
|
+
|
|
5
|
+
# 设置工作目录
|
|
6
|
+
WORKDIR /app
|
|
7
|
+
|
|
8
|
+
# 复制 package.json 和 package-lock.json
|
|
9
|
+
COPY package*.json ./
|
|
10
|
+
|
|
11
|
+
# 安装依赖
|
|
12
|
+
RUN npm ci && npm cache clean --force
|
|
13
|
+
|
|
14
|
+
# 复制源代码
|
|
15
|
+
COPY . .
|
|
16
|
+
|
|
17
|
+
# 构建应用
|
|
18
|
+
RUN npm run build
|
|
19
|
+
|
|
20
|
+
# 第二阶段:运行阶段 - 使用 Nginx 提供静态文件
|
|
21
|
+
FROM nginx:alpine AS production
|
|
22
|
+
|
|
23
|
+
# 复制构建产物到 Nginx 默认目录
|
|
24
|
+
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
25
|
+
|
|
26
|
+
# 复制 Nginx 配置(如果有自定义配置)
|
|
27
|
+
# COPY nginx.conf /etc/nginx/nginx.conf
|
|
28
|
+
|
|
29
|
+
# 暴露端口
|
|
30
|
+
EXPOSE 80
|
|
31
|
+
|
|
32
|
+
# 启动 Nginx
|
|
33
|
+
CMD ["nginx", "-g", "daemon off;"]
|
|
@@ -116,6 +116,12 @@ build:
|
|
|
116
116
|
image:
|
|
117
117
|
name: docker:24.0.5
|
|
118
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
|
|
119
125
|
before_script:
|
|
120
126
|
- docker info
|
|
121
127
|
- echo "登录到 GitLab Container Registry..."
|
|
@@ -116,6 +116,12 @@ build:
|
|
|
116
116
|
image:
|
|
117
117
|
name: docker:24.0.5
|
|
118
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
|
|
119
125
|
before_script:
|
|
120
126
|
- |
|
|
121
127
|
# 智能检测并运行 lint 命令
|
|
@@ -116,6 +116,12 @@ build:
|
|
|
116
116
|
image:
|
|
117
117
|
name: docker:24.0.5
|
|
118
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
|
|
119
125
|
before_script:
|
|
120
126
|
- |
|
|
121
127
|
# 智能检测并运行 lint 命令
|
|
@@ -116,6 +116,12 @@ build:
|
|
|
116
116
|
image:
|
|
117
117
|
name: docker:24.0.5
|
|
118
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
|
|
119
125
|
before_script:
|
|
120
126
|
- |
|
|
121
127
|
# 智能检测并运行 lint 命令
|