用 obsutil 把静态站自动发布到 OBS:CI 流水线实践

举报
樊先生 发表于 2026/11/09 02:33:25 2026/11/09
【摘要】 我的技术博客是纯静态站(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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。