用 obsutil 把静态站自动发布到 OBS:CI 流水线实践
【摘要】 我的技术博客是纯静态站(HTML/CSS/JS),每次更新都要手动传 OBS。后来用 `obsutil` 命令行工具接了 CI,推送代码就自动发布。这篇讲这条流水线的搭法,零脚本胶水、可复现。
一、为什么不用控制台手动传
手动传三个问题:① 容易漏文件;② 没版本概念;③ 我改完容易忘发。自动化发布后,“git push 即上线”,心智负担归零。
二、obsutil 是什么
华为云提供的命令行对象存储工具,能增量的 cp 整个目录到桶,只传变化的文件。装好配好 AK/SK 就能用。
# 配置(一次性)
obsutil config -i <AK> -k <SK> -e <终端节点>
# 同步 dist 到桶
obsutil cp -r ./dist obs://my-blog-bucket/ -f
⚠️ AK/SK 是账号凭证,绝不能写进仓库。我放在 CI 的环境变量里,仓库只存构建脚本。
三、CI 流水线
以通用 CI 为例,两步:
1. 构建:npm run build → 产出 dist/
2. 发布:obsutil cp -r dist/ obs://桶/ -f
CI 环境变量注入 AK/SK,Runner 上预装 obsutil(或用缓存)。
四、增量发布的坑
obsutil cp -f 是覆盖式,但默认会比对大小/时间。第一次全量慢,之后只传 diff,秒级。我加了一步"发布后 purge CDN",避免缓存陈旧(详见 OBS+CDN 那篇)。
五、回滚怎么办
静态站回滚极简:保留上一次 dist 的归档,出问题 obsutil cp 旧包回去即可。我让 CI 在发布前自动把当前线上版本打包存档到桶的 /_history/ 目录。
六、权限最小化
给 CI 用的 AK 只授权这一个桶的读写,别给全局权限。哪天泄露了,影响面也锁死在一个桶。
【总结】 静态站 + obsutil + CI 是最省心的发布组合:构建和发布都自动化,回滚靠历史归档,凭证靠环境变量隔离。把"发布"从手动动作变成 git 事件的副作用,写作才专注。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)