如果流程是标准化的,为啥每次都要写这些东西。
另外,现在有很多CI工具可以帮你简化一大堆事情,自己再写点模板,后面定义具体项目的CI/CD就简单多了:
# .gitlab-ci.yml
include:
- project: 'devops/ci-templates'
file: '/build/Java.Build.gitlab-ci.yml' # 指定编译模板
- project: 'devops/ci-templates'
file: '/deploy/Web.Deploy.gitlab-ci.yml' # 指定部署模板
variables:
# CANARY_ENABLED: "true" # 是否启用金丝雀部署
XXX_DEV_REPLICAS: 1 # dev环境副本数为1
XXX_STG_REPLICAS: 2 # stg环境副本数为1
CANARY_PIAOSHEN_PRD_REPLICAS: 1 # prd环境的金丝雀部署副本数为1
XXX_PRD_REPLICAS: 4 # prd环境副本数为4
ADDITIONAL_HOSTS: "live-web.$CI_ENVIRONMENT_NAME.com"
XXX_PRD_ADDITIONAL_HOSTS: "live-web.xxx.com"
# INCREMENTAL_ROLLOUT_MODE: "manual" # 滚动部署模式为手动,可选项为: manual 手动,timed 定时,为空则禁用滚动部署模式
.deploy:
variables:
HELM_RELEASE_NAME: "live-web"
environment:
url: "live-web.k8s.${CI_ENVIRONMENT_NAME}.com"
【 在 oldwatch (一条叫java的鱼◎城内风光独好) 的大作中提到: 】
: 美好旧时光的CI/CD:
: 内网装个jenkins,鼠标点点从git拉代码,调maven/npm/...构建
: 写段脚本把生成结果上传服务器
: 重启服务,完活
: 容器/公有云时代的CI/CD:
: 写脚本将目标文件上传到S3,在aws管理控制台里写段脚本
: 从ec2到s3拉数据,更新/发布服务,再把这段脚本保存在云端以备调用
: 创建一个单独的ci/cd流程项目
: 将以上各种脚本的调用全写进一个dockerfile
: 把构建出来的docker镜像上传某个公有repo
: 在业务项目中再写个脚本,让脚本在提交master时自动在git服务器云端执行
: 脚本会依次下载各种docker镜像,创建容器
: 执行容器内的脚本,完成构建,上传目标文件,发布全过程
: 最后别忘了为ci/cd流程项目配置一个
: 更新dockerfile后自动构建docker镜像并发布到公共repo的脚本……
: 好处是,从头到尾,你不需要任何一台本地服务器,也没有任何重复性劳动
: 代价是,必须学习三种不同领域脚本的语法格式
--
FROM 111.199.220.*