写在前面:怎么修改这个项目
Step1. 修改functions/functions.go 文件,复制实例函数,修改为自己的函数
(注意!go采用命名方式来区分函数、变量的可见性,所以请确保函数名首字母是大写的)
Step2. 修改functions/functions_test.go文件,复制实例测试函数,修改为自己的测试函数
Step3. 修改main.go中func main函数体,打印自己编写的函数的返回值
Step4. commit并推送至远程仓库,CI/CD Pipeline自动触发
一、服务器硬件方案
我们的团队项目为FaaS平台,架构考虑采用微服务的方式进行组织。
所需要的服务器分为两类:
- 控制台、监控服务实例
- 计算实例
我们在Alpha阶段计划使用两台服务器对服务进行部署维护
控制台、监控服务实例
- 地域:华北-北京四-可用区2
- 计费方式:包年
- CPU:2vCPU Arm64架构
- 内存:4GiB
- 带宽:1Mbit/s
- 系统盘与数据盘:40GiB高IO通用型SSD
- 操作系统:Ubuntu18.04 server 64bit with ARM
计算实例
- 地域:华北-北京四-可用区2
- 计费方式:包月
- CPU:2vCPU x86_64架构
- 内存:4GiB
- 带宽:1Mbit/s
- 系统盘与数据盘:40GiB高IO通用型SSD
- 操作系统:Ubuntu 22.04 server 64bit
在Alpha阶段完成后,计划将计算实例修改为按需付费模式的相同配置服务器
二、团队沟通协作和代码管理方式
我们的团队沟通协作使用飞书来实现,主要看重其以下优势
- 文档内容丰富、共享编辑、交互评论便利
- 会议便捷,支持会议同时共享云文档
- 日程管理便捷,支持一键添加任务及日程
代码管理平台我们选用Gitlab实现,主要看重其以下优势
- 国内也能快速访问,无需进行其它科学配置
- 功能齐全,支持Group视图管理团队项目以及CI/CD流水线
- Community Edition完全够用,不需要额外付费
三、CI/CD实践
本次,我们使用一个打印小组成员学号的简单的go项目来进行CI/CD实践
(虽然直接推送到master分支很不专业,但是现在先这样吧)
项目目录
.
├── README.md # 简介
├── functions# 函数位置
│ ├── functions.go # 函数
│ └── funtions_test.go # go test 单测文件
├── go.mod # go module 配置文件
└── main.go # 主函数
CI/CD Pipeline 流程
.gitlab-ci.yml文件内容如下,修改自gitlab模板
stages: # List of stages for jobs, and their order of execution
- build
- test
- deploy
build-job: # This job runs in the build stage, which runs first.
stage: build
script:
- echo "Compiling the code..."
- go build *.go
- echo "Compile complete."
unit-test-job: # This job runs in the test stage.
stage: test # It only starts when the job in the build stage completes successfully.
script:
- echo "Running unit tests... This will take about 60 seconds."
- go test ./functions -cover
deploy-job: # This job runs in the deploy stage.
stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
environment: production
script:
- echo "Deploying application..."
- go run *.go
- echo "Application successfully deployed."
分为build/uni-test/deploy三个阶段,runner采用docker运行,基于镜像golang:1.20