Skip to content

hts0000/devops-platform

Repository files navigation

Devops Platform

Quick Start

# run backend
cd devops-platform-backend

# run front-end
cd devops-platform-front
pnpm install
pnpm run dev

Plan

step1——应用部署记录平台

  • 侧边栏
  • 创建业务
  • 删除业务
  • 修改业务
  • 查看业务
  • 查看业务列表
  • 创建项目
  • 删除项目
  • 修改项目
  • 查看项目
  • 查看项目列表
  • 创建应用
  • 删除应用
  • 修改应用
  • 查看应用
  • 查看应用列表

业务

大的业务线,如海外供应链、门店人事系统等

业务归属:

  • 业务负责人:业务leader

项目

隶属于业务线下的项目,如门店人事系统中的MINISO门店人事、TOPTOY门店人事等。

项目还区分测试环境、预发环境和生产环境,使用TEST、PRE、PRD进行区分。

项目归属:

  • 产品负责人:负责项目需求提出和拆分
  • 开发负责人
  • 测试负责人
  • DBA
  • SRE

应用

隶属于项目下的前后端应用,如MINISO门店人事项目中的storehr-core应用。

应用归属:

  • 开发负责人
  • 开发人员:参与该应用的开发
  • 测试负责人:
  • 测试人员:参与该应用的测试

应用名规范: <miniso/toptoy/wow>-<appname>-<web/java/go/php>-<test/pre/prd>

应用版本规范:

  • 测试和预发环境:<test/pre>-<timestamp:buildnum>
  • 生产环境:<prd>-<tag:buildnum>

UI设计

创建业务页面

创建项目页面

创建应用页面

step2——自动化应用部署

  • 创建应用自动创建Jenkins条目(需根据业务、项目和环境创建文件夹)
  • Jenkins条目创建后自动触发构建
  • 构建成功后自动关联SLS日志库
  • 可选是否接入ARMS
  • 展示应用Gitlab、Jenkins、K8S、SLS等链接

step3——流程化应用发布

  • 定义发版日
  • 定义发版时间表
  • 定义开发需求
  • 定义开审批人、发负责人、产品、测试、DBA、SRE等角色
  • 定义角色权限
  • 创建生产环境发布任务,关联需求、变更的应用、变更的配置、审批人、业务负责人、项目负责人、开发负责人、产品、测试、DBA、SRE,记录应用发布关联的需求、应用、配置、审批人、版本等信息

发版

  • 常规发版:只能在定义的发版日及时间表中发版
  • 特殊发版:任意日期和时间段发版

角色

  • 审批人
  • 业务负责人
  • 项目负责人
  • 开发负责人
  • 测试负责人
  • 产品负责人
  • DBA负责人
  • SRE负责人

发版任务状态流转

  1. 产品负责人对其拥有权限的项目创建常规发版或特殊发版任务,任务关联需求。创建成功后任务流转至开发负责人
  2. 开发负责人添加该任务关联的应用,提供应用关联数据库、配置变更、SQL变更、发布tag、应急回滚等信息。提供后任务流转至测试负责人
  3. 测试负责人确认需求及关联的应用已在预发环境验收,提供验收报告等信息。验收通过后任务流转至审批人,抄送业务负责人
  4. 审批人审批发版任务。审批通过后任务流转至DBA(如有SQL)
  5. DBA执行SQL变更,提供应急回滚方案。完成后任务流转至SRE
  6. SRE确认变更影响,提供应急回滚方案。完成后任务归档,通知该发版任务所有相关人员

step4——添加应用告警功能

  • 宏观维度的——链路追踪,从dns->waf->lb->app的链路全景
  • 微观维度的——应用业务数据、基础设施(dns/waf/lb/mq/db/ecs/k8s)数据
  • 规范应用数据上报
  • 创建应用告警规则
  • 告警通知(短信、邮箱、电话、飞书、企微等)
  • 告警静默
  • 告警认领
  • 告警恢复

应用数据上报

  • ARMS+云监控2.0
  • exporter+prometheus

Frontend

npx create-next-app@14
npx shadcn@latest init
npx shadcn@latest add button
npx shadcn@latest add sidebar
npx shadcn@latest add table
npx shadcn@latest add checkbox
npx shadcn@latest add dropdown-menu
npx shadcn@latest add form
npx shadcn@latest add alert-dialog

npm install ts-proto
npm install long
npm install zod
npm install @radix-ui/react-icons
npm install @tanstack/react-table
npm install @tanstack/react-query
npm install date-fns --save

Backend

go install google.golang.org/protobuf/cmd/[email protected]
go install google.golang.org/grpc/cmd/[email protected]

go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2

go get github.com/bufbuild/protovalidate-go

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

# docker
go get github.com/docker/docker/api/types/container
go get github.com/docker/docker/client

# prometheus

# opentelemetry

MySQL

# 初始化
# -e MYSQL_ROOT_PASSWORD=123456: 注入环境变量,配置root用户密码
# -e MYSQL_DATABASE=devops-platform: 注入环境变量,自动创建devops-platform库
# -v /my/custom:/etc/mysql/conf.d: 将本地配置文件挂载到docker中
# -v /my/own/datadir:/var/lib/mysql: 使用本地目录作为数据库存储目录
# -v /my/initsql:/docker-entrypoint-initdb.d: 挂载到/docker-entrypoint-initdb.d目录的脚本,容器初始化时会自动执行
# -p 13306:3306: 将容器3306端口映射到本机13306端口
# --character-set-server=utf8mb4: 配置数据库字符集
# --collation-server=utf8mb4_unicode_ci: 配置数据表字符集
# --restart on-failure:3: 容器异常退出时,总是重启容器,最多重启3次
docker run --name devops-platform-mysql \
            --restart on-failure:3 \
            -v /my/custom:/etc/mysql/conf.d \
            -v /my/own/datadir:/var/lib/mysql \
            -v /somepath/devops-platform/mysql/sql:/docker-entrypoint-initdb.d \
            -v /somepath/devops-platform/mysql/sql:/docker-entrypoint-initdb.d \
            -e MYSQL_ROOT_PASSWORD=123456 \
            -e MYSQL_DATABASE=devops-platform \
            -p 13306:3306 \
            -d mysql:8.3.0 \
            --character-set-server=utf8mb4 \
            --collation-server=utf8mb4_unicode_ci

# 测试使用
docker run --name devops-platform-mysql-test \
            --restart on-failure:3 \
            -v /somepath/devops-platform/mysql/conf.d:/etc/mysql/conf.d \
            -v /somepath/devops-platform/mysql/sql:/docker-entrypoint-initdb.d \
            -e MYSQL_ROOT_PASSWORD=123456 \
            -e MYSQL_DATABASE=devops-platform \
            -p 13306:3306 \
            -d mysql:8.3.0 \
            --character-set-server=utf8mb4 \
            --collation-server=utf8mb4_unicode_ci

# 连接
docker exec -it devops-platform-mysql mysql -uroot -p123456

Git Commit规范

类型 描述
feat 新增feature
fix 修复bug
docs 修改文档,如readme.md
style 修改代码格式,不改变代码逻辑,如逗号、缩进、空格等
refactor 代码重构,没有新增功能或修复bug
perf 优化相关,如提升性能、用户体验等
test 测试用例,包括单元测试、集成测试
ci 修改ci配置文件或脚本,如jenkins fastlame
chore 修改构建脚本、或者增加依赖库、工具等
revert 回滚之前的commit

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published