从手工发包到一键流水线:华为云 CodeArts 持续交付实践笔记
【摘要】 把本地手工发包收敛成一条可重复执行的流水线:构建环境固化、制品可追溯、回滚有据可依。记录一次基于华为云 CodeArts 的持续交付落地过程,包括选型理由、五个落地步骤,以及构建机编码和凭据管理两个真实的坑。
一、要解决的问题
团队里一个前端项目,之前的发布流程是:本地 build → 手动上传制品 → 远程改配置 → 重启服务。
问题很典型:步骤多、依赖个人记忆、回滚靠猜、构建环境不统一。尤其是本地 Node 版本和测试环境不一致,经常出现“在我这能跑”的情况。
目标是把这条链路收敛成一条可重复执行的流水线,并且构建产物可追溯。
二、方案选型
选华为云 CodeArts 的原因有三点:
- 代码托管、流水线、制品仓库在同一套体系里,不需要自己维护 Runner;
- 流水线任务的日志、产物、执行参数都能按次留存,回滚时可以直接定位到某一次构建;
- 支持代码 Push 触发,省掉人工点发布这一步。
三、落地步骤
1. 代码托管。把项目推到 CodeArts Repo,把 node_modules、.env、构建产物写进 .gitignore,只让锁文件 package-lock.json 进版本库,保证构建可复现。
2. 构建任务。在流水线里加一个构建阶段,执行 npm ci 而不是 npm install——前者严格按锁文件安装,能消除环境漂移。
3. 制品归档。构建成功后将 dist/ 打包为归档制品,命名带上“提交短哈希-构建号”,回滚时按名字就能定位。
4. 部署阶段。真正部署前先跑一次冒烟检查,例如 curl -sf http://127.0.0.1:PORT/health,失败即终止并保留上一版本。
5. 触发策略。主干分支 Push 触发全流程;特性分支只跑构建和单测,不部署,避免误发。
四、踩到的两个坑
- 坑 1:构建机时区/编码不一致。日志里中文乱码,排查半天才发现是环境变量没设
LANG。建议在流水线里显式声明环境变量,而不是依赖镜像默认值。 - 坑 2:把敏感信息写进构建脚本。密钥要用流水线的凭据管理,不要硬编码,也不要让它出现在日志输出里,可以用掩码脱敏。
五、收益
- 单次发布耗时从约 20 分钟(人工)降到约 4 分钟(自动);
- 回滚从“重新走一遍手工流程”变成“选一个历史制品重新部署”;
- 构建环境固化后,“我本地能跑”这类问题基本消失。
六、小结
流水线的价值不在于“自动化”本身,而在于把发布过程变成可复现、可追溯、可回滚的确定性动作。先做到“一条命令能构建出和线上一致的产物”,再去谈多环境、灰度、蓝绿,顺序不要颠倒。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)