最近团队接到一个项目,要求快速上线、频繁迭代,老板还天天催进度。我们决定上阿里云搞 DevOps,把开发、测试、部署流程自动化起来。折腾了一周,终于跑通了整套流程,今天就来分享下实际操作过程。
第一步:开通阿里云相关服务
登录阿里云控制台后,先开通几个核心服务:云效(Codeup + Flow)、容器服务 Kubernetes 版(ACK)、以及访问控制 RAM。云效是阿里云自家的 DevOps 平台,集成度高,适合新手起步。我们新建了一个代码仓库,选择私有 Git 仓库,名字叫 myapp-devops,然后本地 clone 下来准备提交代码。
代码托管与分支策略
我们按主流做法设了两个主干分支:main 和 develop。main 对应线上环境,develop 是集成测试分支。每个功能开一个 feature 分支,合并前必须通过代码评审和流水线检查。
在云效 Codeup 里设置了保护规则:禁止直接 push 到 main,必须走 Merge Request 流程。这样避免了谁手一抖就把 bug 推到生产环境。
配置 CI/CD 流水线
接下来在云效 Flow 模块创建流水线。我们项目是个 Spring Boot 应用,打包成 JAR 后转成 Docker 镜像推送到阿里云镜像仓库(ACR)。
流水线大致分四步:
- 拉取代码
- 执行单元测试(mvn test)
- 构建镜像并打标签
- 部署到 ACK 集群
YAML 配置片段长这样:
version: v1.0\nsteps:\n - checkout: \{\}\n - script:\n - mvn clean package -DskipTests\n - echo \"Building Docker image...\"\n - docker build -t registry.cn-hangzhou.aliyuncs.com/myteam/myapp:$PIPELINE_SEQ .\n - docker push registry.cn-hangzhou.aliyuncs.com/myteam/myapp:$PIPELINE_SEQ\n - deploy:\n provider: ack\n cluster_id: cls-xxxxxx\n namespace: dev\n workload: deployment/myapp\n image: registry.cn-hangzhou.aliyuncs.com/myteam/myapp:$PIPELINE_SEQ
对接 Kubernetes 部署
我们在容器服务 ACK 创建了一个标准集群,节点用了 ECS 实例。应用通过 Deployment 管理,配合 Service 暴露端口。每次流水线运行成功,新镜像就会自动更新到 Pod 中。
为了更稳一点,加了个健康检查探针:
livenessProbe:\n httpGet:\n path: /actuator/health\n port: 8080\n initialDelaySeconds: 30\n periodSeconds: 10
这样容器启动失败也不会被误判为就绪,避免流量打进来直接 500。
权限与协作管理
团队有前端、后端、测试三拨人,不能谁都往生产环境发。我们在 RAM 里建了角色,开发只能操作 dev 环境,发布到 prod 必须由运维审批。云效流水线也加了人工卡点,关键环节弹出确认框,防止误操作。
日志与监控联动
出了问题总得查吧?我们把应用日志接入了 SLS 日志服务,所有容器输出自动收集。再配上 ARMS 做性能监控,接口慢了、错误率高了直接钉钉告警。昨天晚上有个 SQL 慢查询,凌晨两点就收到了通知,排查起来也不慌。
现在我们平均每天能完成 3~4 次发布,新功能上线从原来的一周缩短到一天内搞定。虽然初期配流水线花了不少时间,但现在省下来的沟通成本和发布时间,早就回本了。