From fd0cf782c44dcdb462d4a8879d1391d5e0072705 Mon Sep 17 00:00:00 2001 From: hurole <1192163814@qq.com> Date: Sun, 21 Sep 2025 21:38:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20pipeline=E5=92=8C?= =?UTF-8?q?=20deployment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/server/README.md | 7 ++ apps/server/controllers/deployment/index.ts | 45 +++++++++++ apps/server/controllers/deployment/types.ts | 0 apps/server/controllers/index.ts | 2 + apps/server/controllers/pipeline/index.ts | 22 ++++++ apps/server/middlewares/router.ts | 4 + apps/server/package.json | 3 +- apps/server/prisma/data/dev.db | Bin 24576 -> 32768 bytes apps/server/prisma/schema.prisma | 78 ++++++++++++++++---- pnpm-lock.yaml | 10 +++ 10 files changed, 154 insertions(+), 17 deletions(-) create mode 100644 apps/server/README.md create mode 100644 apps/server/controllers/deployment/index.ts create mode 100644 apps/server/controllers/deployment/types.ts create mode 100644 apps/server/controllers/pipeline/index.ts diff --git a/apps/server/README.md b/apps/server/README.md new file mode 100644 index 0000000..bd4ab50 --- /dev/null +++ b/apps/server/README.md @@ -0,0 +1,7 @@ + +## 表 +- user +- project +- pipeline +- deployment +- runner diff --git a/apps/server/controllers/deployment/index.ts b/apps/server/controllers/deployment/index.ts new file mode 100644 index 0000000..336b47a --- /dev/null +++ b/apps/server/controllers/deployment/index.ts @@ -0,0 +1,45 @@ +import { Controller, Get, Post } from '../../decorators/route.ts'; +import type { Prisma } from '../../generated/prisma/index.js'; +import prisma from '../../libs/db.ts'; +import type { Context } from 'koa'; + +@Controller('/deployments') +export class DeploymentController { + @Get('') + async list(ctx: Context) { + const { page = 1, pageSize = 10 } = ctx.query; + const result = await prisma.deployment.findMany({ + where: { + valid: 1, + }, + take: Number(pageSize), + skip: (Number(page) - 1) * Number(pageSize), + orderBy: { + createdAt: 'desc', + }, + }); + const total = await prisma.deployment.count(); + + return { + data: result, + page: Number(page), + pageSize: Number(pageSize), + total: total, + }; + } + + @Post('') + async create(ctx: Context) { + const body = ctx.request.body as Prisma.DeploymentCreateInput; + + prisma.deployment.create({ + data: { + branch: body.branch, + commitHash: body.commitHash, + commitMessage: body.commitMessage, + + valid: 1, + }, + }); + } +} diff --git a/apps/server/controllers/deployment/types.ts b/apps/server/controllers/deployment/types.ts new file mode 100644 index 0000000..e69de29 diff --git a/apps/server/controllers/index.ts b/apps/server/controllers/index.ts index 32f5277..90bf3e8 100644 --- a/apps/server/controllers/index.ts +++ b/apps/server/controllers/index.ts @@ -2,3 +2,5 @@ export { ProjectController } from './project/index.ts'; export { UserController } from './user/index.ts'; export { AuthController } from './auth/index.ts'; +export { DeploymentController } from './deployment/index.ts'; +export { PipelineController } from './pipeline/index.ts' diff --git a/apps/server/controllers/pipeline/index.ts b/apps/server/controllers/pipeline/index.ts new file mode 100644 index 0000000..1f44bad --- /dev/null +++ b/apps/server/controllers/pipeline/index.ts @@ -0,0 +1,22 @@ +import type { Context } from 'koa'; +import { Controller, Get, Post } from '../../decorators/route.ts'; +import prisma from '../../libs/db.ts'; + +@Controller('/pipelines') +export class PipelineController { + @Get('/:id') + async get(ctx: Context) { + const id = ctx.params.id; + const pipeline = await prisma.pipeline.findUnique({ + where: { + id: id, + }, + }); + return pipeline; + } + + @Post('') + async create(ctx: Context) { + + } +} diff --git a/apps/server/middlewares/router.ts b/apps/server/middlewares/router.ts index 306bc3c..b1c6f14 100644 --- a/apps/server/middlewares/router.ts +++ b/apps/server/middlewares/router.ts @@ -6,6 +6,8 @@ import { ProjectController, UserController, AuthController, + DeploymentController, + PipelineController } from '../controllers/index.ts'; import { log } from '../libs/logger.ts'; @@ -38,6 +40,8 @@ export class Router implements Middleware { ProjectController, UserController, AuthController, + DeploymentController, + PipelineController ]); // 输出注册的路由信息 diff --git a/apps/server/package.json b/apps/server/package.json index ae60dde..adc536f 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -18,7 +18,8 @@ "koa-session": "^7.0.2", "pino": "^9.9.1", "pino-pretty": "^13.1.1", - "zod": "^4.1.5" + "zod": "^4.1.5", + "zx": "^8.8.2" }, "devDependencies": { "@tsconfig/node-ts": "^23.6.1", diff --git a/apps/server/prisma/data/dev.db b/apps/server/prisma/data/dev.db index 811b686c30fd5c6edb9bb010585a8858d426afd8..0b123cc7bb256a71e86afcb7e2c9f5257992ae06 100644 GIT binary patch delta 1267 zcmZoTz}V2hG(lQWfq{X61Bh9Hm=TEiC+ZkWD=_F)74Wi6Wng2>Vc?VFtKmAsah!QR zV-91&#Kvc4EjC>2Ef!qt;0C7y1ND``1yw@_=WoT=x`|jfl_fvVo7Q7iNR8nyB4|4T%_fzn8ja1N3 zLP#rVDg?Q@xdyrVIlBfcCf-Ir){jsd*&`7CWln;S!VA@!7K_6(!~+XH5Rc zC&rwbR|cZlpuPq&y^`~Db2Cdk5{omG6hd4hLZIOS5%x_jE>28OMUhD=&CE&h$xlZS z1R7X0Ih)^7BrP*9vp6F)#j!+50pyPmPhZ!`7W~J6q03QFl%JKFTmlYU0jNFj(83Yo zaIcia!?fcFcBtW?fJF&)h&WM!ZUPK-XrS|~V=@9KGDnm|#)=xyLn@I${f3gpf^8sa ztc8gkoVVJ;!QO=>RT#~J>TQ@XD1S|k<=qdA+B|YQ0JX4e7F5XP-(2Z$FTiLxd8faD_)KTjryPtkvt;@$ RiYtptQgb2XA_D;+0szGRanS$( delta 231 zcmZo@U}`wPI6+!ajDdlH4TxERm=TCMCh8cAi81I^74Y&EFtBi)Vc?VFS;tqyb%t}Z zpg=c=S#vfUySS_@W4mTaVp2|OUTS%KXmM&0jAnBVa&-)GRS0o(@^MvAf(cLF&t|vT zggbzdqd6U-fAblxM~o~@xyAz$S&r|SAO{owD+d1W{I50(8l2)6 z;b&x4W^^nl$jMAjEXmBzV`67w-uy~mPJoHOa= 12.17.0'} + hasBin: true + snapshots: '@alloc/quick-lru@5.2.0': {} @@ -3752,3 +3760,5 @@ snapshots: optionalDependencies: '@types/react': 18.3.24 react: 18.3.1 + + zx@8.8.2: {}