[T.3] 团队项目:团队基础设施及 DevOps 准备
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 软件工程 |
| 这个作业的要求在哪里 | [T.3] 团队基础设施及 DevOps 准备 |
| 我在这个课程的目标是 | 完整开发一个成熟软件,提升自己的工程和技术能力 |
| 这个作业在哪个具体方面帮助我实现目标 | 探讨技术层面基础,包括云服务器、协作平台、代码仓库管理、CI/CD 流程等,为后续项目开发打下坚实的工程化基础。 |
一、服务器
我们选择阿里云作为云服务提供商,为我们的“Agent学习助手”项目提供稳定、可靠的线上运行环境。
| 类别 | 配置 | 说明 |
|---|---|---|
| 厂商 | 阿里云 | 国内主流云厂商,提供稳定的服务和丰富的安全选项,适合团队项目初期的部署需求。 |
| 规格 | ecs.e-c1m1.large | 轻量级实例,性价比较高,适合承载我们的 Web 应用和数据库服务。 |
| 地域 | 华北2(北京)G | 选择北京地域,靠近团队所在地,可有效降低网络延迟,提升用户访问体验。 |
| 镜像 | Alibaba Cloud Linux 3.2104 LTS 64bit | 阿里云官方操作系统,与云平台深度集成,安全性和稳定性有保障,且社区支持良好。 |
| 存储 | 40GB ESSD Entry 云盘 | 系统盘容量为40GB,对于团队项目初期的代码、数据库及日志存储完全足够。 |
| 带宽 | 100 Mbps (峰值) | 带宽上限为100Mbps,能够满足项目初期用户访问和后台数据传输的需求。 |
| CPU / 内存 | 2 核 (vCPU) / 2 GiB | 2核2G的配置足以支撑知识问答(RAG)、题库资料查询及论坛功能的初期并发请求。 |
| 计费方式 | 包年包月 | 采用包年包月的计费方式,成本可控,且避免了按量付费可能产生的意外费用。 |
二、团队沟通、协作与代码管理
我们团队为“Agent学习助手”项目建立了一套高效的沟通和协作工具链,以确保信息同步和开发流程顺畅。
团队沟通
使用 微信群 进行日常沟通和快速问题讨论。
使用 GitHub Issues 管理 Bug、功能需求和技术讨论,确保所有问题都有记录和跟进。
任务分发
使用 飞书文档 进行任务分发和进度跟踪。我们创建了一个共享的任务看板,将项目分解为多个子任务,并分配给相应成员,便于整体把控项目进度。
代码管理
- 代码仓库:使用 GitHub 作为唯一的代码托管平台,所有代码均通过 Git 进行版本控制。我们创建了以下两个仓库:
Backend: 后端项目源代码。Frontend:前端项目源代码。RAG: RAG项目源代码
- 分支策略:
main: 生产环境代码,始终可部署。该分支受保护,所有变更必须通过 Pull Request 合并。develop: 开发环境主干,用于集成各功能分支的代码。feature/<功能名>: 用于新功能的开发和测试。fix/<bug名>: 用于修复线上或测试环境中的 Bug。
- 提交规范:
- 我们遵循
<type>(<scope>): <subject>的提交格式,例如feat(rag): add vector store integration,以保证提交历史的清晰度和可读性。
- 我们遵循
三、CI/CD触发测试
为确保代码质量并实现自动化部署,我们在 GitHub 仓库中配置了 CI/CD 流水线。
name: Deploy Vue to Alibaba Cloud (pnpm)
on:
push:
branches: ['release']
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --no-frozen-lockfile # 严格依赖lockfile
- name: Build project
run: pnpm run build
- name: Install rsync
run: sudo apt-get update && sudo apt-get install -y rsync
- name: Deploy to Server with rsync
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
run: |
echo "$SSH_PRIVATE_KEY" > private_key
chmod 600 private_key
rsync -avz --delete --exclude='.user.ini' -e "ssh -i private_key -p ${{ secrets.SERVER_SSH_PORT }} -o StrictHostKeyChecking=no" \
./dist/ ${{ secrets.SERVER_USER }}@47.93.81.21:/www/wwwroot/47.93.81.21/Lerning_Agent/dist
rm -f private_key


浙公网安备 33010602011771号