[T.3] 团队项目:团队基础设施及 DevOps 准备

助教-熊 助教 2024-03-11 01:07:40

本次作业聚焦于团队的基础设施及 DevOps 准备。

注意:开始这次作业的前提是你们团队已经有了一个基本完善的选题。

服务器

大多数情况下,我们的项目需要租用合适的云服务器,方便之后的数据库/前端/后端部署。对于我们的软工项目来说,一般使用国内的云服务器即可。

选择厂商

国内主要的云厂商有阿里云,腾讯云和华为云等,而这些厂商都有相应的学生计划,以阿里云为例,有一个专门的学生免费服务器。腾讯云和华为云也都有类似的福利,同学们根据需求和自己的调研确定一个厂商。

更多内容可以查看:如何选择服务器?

选择云服务器配置

在选择了合适的厂商后,我们就需要选择合适的配置。主要从以下七个方面进行选择:

  • 地域:离北京近为宜
  • 计费方式:考虑自己项目的生命周期,一般选择包年或包月为宜
  • CPU:考虑自身项目需要的计算需求,一般两核就可以满足大多数需求
  • 内存:和前端网页的加载速度相关,可以带来更多网页缓存
  • 带宽:除了做对象存储等需要较大带宽外,一般的需求1-2M基本够用
  • 系统盘和数据盘:系统盘是创建服务器实例是必须创建的,一般应该选择IO速度快的SSD盘来存储。如果对数据需求不大(不超过20G)可以不使用数据盘
  • 操作系统:除非使用sqlserver,否则一般建议使用linux系统,常见的有centos和ubuntu,根据经验ubuntu可以找到的解决问题的帖子较多

选择可以大致参考下列表格

配置适用场景
1核CPU/2G内存/1M公网带宽个人博客、小型网站,Web应用程序,也可以适用于开发环境、代码存储及测试
2核CPU/4G内存/3M公网带宽小程序、APP、论坛、门户类网站,企业运营活动,普通数据处理服务
4核CPU/8G内存/8M公网带宽APP、视频、购物类网站,ERP系统,大数据及实时在线或离线分析、深度学习、批量计算、视频编码等
8MCPU/16G内存/10M公网带宽游戏开发,高性能科学和工程应用,数据分析、深度学习、批量计算等

更具体的可以查看:如何选择云服务器配置?

开始使用

由PM在厂商官网完成实例购买,并尝试ssh登录服务器查看是否可用。(记得保存相关发票和订单截图,课程组会出手!)

一般建议由至少一个同学专门负责服务器维护管理,主要负责定期重启服务器、清理垃圾、部署服务等工作

如果需要让几个人来一起登录服务器工作,以linux系统为例,可以使用ssh密钥的方式添加他人的公钥到根目录的 .ssh/authorized_keys 文件中即可

开始在你们的服务器上部署相关服务吧!

团队沟通,协作与代码管理

有了服务器,我们继续考虑团队沟通,协作和代码管理的问题

团队沟通:一般采用微信、QQ、腾讯会议或者当面交流,也有团队使用过Discord平台。需要让成员沟通使用时高效、简单、易用

团队协作:协作指如何分发任务,如何共同完成文档。一般来说包含共享文档编辑和看板任务管理。可以选用Notion,Coding,Gitlab,金山/腾讯文档等

代码管理:代码的存储,版本控制和CI/CD。主要有github,gitee,gitlab,腾讯coding平台等

提供几个往年的团队的选择例子:

工欲善其事必先利其器,每个团队都需要自行商议决定使用什么样的沟通+协作+代码管理工具链

CI/CD

这里以Gitlab为例介绍如何使用CI/CD

Gitlab CI

注:这里仅供参考,Github,Coding,Gitlab的CI/CD没有明显好坏,可以选择最顺手的使用

创建Group与Project

首先gitlab是基于group进行操作的,因此第一步首先需要建立group才能在内部进行项目创建,为了方便组员的CI测试,这里单独创建了一个setest group并拉进了所有的软工小组成员,Setest是示例项目,里面有一个python文件实现了快速排序

我们在项目中创建一个yml文件,可以直接使用模板

第一步:新建 CI 配置文件

第二步:选择模板

第三步:创建完成

配置runner

先在左侧栏的Settings里找到CI/CD,进入之后将Runners旁边的Expand点开,之后点击里面的安装指导,按照里面的命令在任意的服务器上装好服务并完成register就好了

笔者使用的是linux amd64服务器,命令参考如下:

Download and install binary

# Download the binary for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# Give it permissions to execute
sudo chmod +x /usr/local/bin/gitlab-runner

# Create a GitLab CI user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# Install and run as service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

Command to register runner

sudo gitlab-runner register --url $URL --registration-token $REGISTRATION_TOKEN

注意这里的$URL和$REGISTRATION_TOKEN替换成相应的url和token就好了。同时可以参考选择 ruby2.7docker 进行部署

这样操作完之后,Runners展开的左侧就会有runners列表,这时需要点进你的服务器的编辑按钮,将内部的 Indicates whether this runner can pick jobs without tags 勾上就可以使用了

之后就可以提交commit触发CI/CD了

其他

提供一些往届博客供参考

Github/Gitlab:https://blog.csdn.net/takivotoid/article/details/123436565

Coding:https://www.cnblogs.com/hair-duang-duang/p/16209131.html

博客要求

  • 服务器选择

    • 如果只有一台服务器,写出自己选择的厂商和具体配置(地域,计费方式,CPU,内存,带宽,系统盘和数据盘7个方面),以及每个配置选择的原因和依据。
    • 如果有多台服务器,类似单台服务器的要求,列出每台服务器具体配置和选择原因。说明选择多台服务器的原因(分布式存储、数据服务分离...),以及如何使用这些服务器
    • 如果无需服务器,请说明本团队的基础设施准备。
  • 团队沟通,协作与代码管理

    • 写出自己团队的沟通的平台和方式
    • 写出团队协作、代码管理所使用的工具链,并简要描述将如何使用这些工具来完成团队协作和代码管理
  • CI/CD

    • 由一名同学开启一个仓库,配置CI/CD并展示配置文件的脚本。

      • 例如:gitlab的yaml文件,github的action配置文件,coding的Jenkinsfile文件
    • 每名同学至少完成一次CI/CD触发,展示触发的列表截图,如下图:

      CI/CD 示例

...全文
488 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
0人已提交
完成率0%
暂无数据
回复
切换为时间正序
请发表友善的回复…
发表回复

73

社区成员

发帖
与我相关
我的任务
社区描述
2024年北航敏捷软件工程
软件工程团队开发结对编程 高校 北京·海淀区
社区管理员
  • clotho67
  • Yeyanhan
  • HJin_Gwok
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧