Gitlab CI/CD 实践四:Golang 项目 CI/CD 流水线配置
.gitlab-ci.yml 流水线入口:阶段 stages: - lint - test - build - deploy 流水线以job为单位运行,每个job就是自己想通过流水线做的事情,例如单元测试的job,核心是运行脚本: go test -short go list ./... 每个阶段下可以定义多个job。 同一阶段的job会并行执行。…
Go进阶训练营 – 微服务概览与治理二:微服务设计
同系列文章:Go 进阶训练营 API Gateway B站进行了 SOA 服务化的架构演进,按照垂直功能进行了拆分,对外暴露了一批微服务,但是因为缺乏统一的出口面临了不少困难: 1.0 客户端到微服务直接通信,强耦合。 如果涉及移动端,同时存在多版本,api兼容困难,重构困难,用户可能还在使用一年前版本的移动端。 需要多次请求,客户端聚合数据,工作…
LeetCode:一和零_474
思路 多维的动态规划,属于背包类问题,只是穷举多了个背包。 strs里的每个元素就是物品,m为装1的背包数量,n为装0的背包数量,开始DP套路: 定义状态:dp[i][m][n]表示0-i个物品,m个装1的背包,n个装0的背包可以装下多少个物品 状态转移方程:dp[i][m][n]=max(dp[i-1][m][n],dp[i-1][m-i1][n…
开发规范四:设计文档
发布版本-需求标题 文档变更记录 日期 版本号 修订内容 修订人 目 录 [TOC] XXX功能详细设计 【 详细设计文档针对一个具体功能或者模块进行详细设计, 完成设计文档后,一定将【】的所有示例内容都删除。不能直接删除章节,若不进行设计,请写“无”。 注意修改页文档版本控制。 】 合并请求:https://xxx.xxx.com/xxx/-/m…
开发规范三:项目版本号定义
依据Semver2版本标准,和业界保持基本一致。 🐤主版本号 版本号使用三位版本号,X.Y.Z,不足三位的补齐为三位,如0.1.0,1.0.0,1.2.0。 一位版本 无法向下兼容时。 当软件和产品发生巨大变化时。 二位版本 软件和产品增加新的特性。 三位版本 产品累积的维护性需求或bug。 扩充版本号 alpha版本 演示版采用alpha版本命名…
开发规范二:Git Commit 规范
基于约定式提交 1.0.0 🐱commit message格式 <类型>[范围]: <标题> [主体内容] 例如:fix(admin): k8sProxy反向代理路由修改 类型(必须) 用于说明git commit的类别,只允许使用下面的标识。 feat:新功能(feature)。 fix:修复bug,可以是QA发现的BUG…
开发规范一:Git Flow + Gitlab 工作流
分支说明 main 分支 发布分支。 包含最新稳定版本,每个版本都是该分支上的一个tag。 长期分支。 保护分支,非Maintainer成员不能直接提交,只能从其他分支合并。 develop 分支 主开发分支。 新功能或 bug 修复分支都从这里拉取和提合并请求。 长期分支。 保护分支,非Maintainer成员不能直接提交,只能从其他分支合并。 …
Gitlab CI/CD 实践三:Docker 安装 Gitlab Runner
和k8s部署runner相比,Docker安装runner的优势 缓存,项目里用到的各种依赖,不可能每次都下载,以及构建、语法检测等都会产生缓存。在k8s runner中使用分布式存储ceph来保存这些文件,大概700m。每次使用时特别慢,大部分时间都花在下载缓存,上传缓存。当前项目整个流水线跑下来需要10多分钟。而是用docker部署的runne…
Gitlab CI/CD 实践一:Gitlab Runner 安装到 K8S 集群
背景 最近负责公司的 Devops 改造,使用 Gitlab CI/CD 替代之前的Jenkins。 为什么选择Gitlab CI/CD 而不是 Jenkins? 不引入其他服务,降低复杂度。 公司已经采用 Gitlab 来做源码管理了。 触发更简单,更敏捷,更灵活。 当在开发环境调试时,有的问题需要在环境里才能复现,就需要经常更新代码到环境,如果…