前言
自己的博客、主站 之前老是手工或者利用本地的插件 同步到aliyun oss上 麻烦的很 而且每次换电脑还都要配置
最近有时间 通过github 的actions 来做一些简单的同步静态网站到oss上
示例
阅读要求:
- 熟悉阿里云 管理oss
- 熟悉一般前端项目编译打包
- 熟悉github常用功能和配置
- 熟悉git、ci\cd 等基础用法和原理
此处以本人 hexo博客为示例 https://github.com/xujiuming/blog
大致思路:
通过actions构建node编译环境->安装依赖和hexo-cli -> 使用ossutil 将hexo生成的静态文件复制到oss上
阿里云 oss 配置
此处不再赘述 如何用阿里云oss 搭建静态网站 和cdn加速的工作 阿里云官网的操作手册已经说的够详细了
建立一个子账号 配置oss 读写权限 并且分配accessKey 和accessSecret
github secret配置
进入 github->对应的项目->settings->侧边栏中选择secrets 新增secret
新增 OSS_ACCESS_KEY_ID 和 OSS_ACCESS_KEY_SECRET 值分别是刚刚建立的oss key和secret
如下图
使用 ‘$‘ 访问配置的变量
编写github actions配置
在项目根目录建立 .github/workflows/sync-oss.yml
由于是我自己的博客部署 我添加了钉钉的消息提示 设立 DINGTALK_ACCESS_TOKEN secret
以hexo构建的博客 自动化部署yml内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| name: sync-oss
on: [push]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: "12.x" - name: 开始部署ming-blog run: | curl 'https://oapi.dingtalk.com/robot/send?access_token=${{ secrets.DINGTALK_ACCESS_TOKEN }}' -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": { "content": "ming-blog开始部署" } }' - name: 构建hexo博客 run: | npm install hexo-cli -g npm install hexo clean hexo generate - uses: manyuanrong/setup-ossutil@v1.0 with: endpoint: "oss-cn-shanghai.aliyuncs.com" access-key-id: ${{ secrets.OSS_ACCESS_KEY_ID }} access-key-secret: ${{ secrets.OSS_ACCESS_KEY_SECRET }} - name: 同步dist文件到oss上 run: ossutil cp public/ oss://mingblog/ -rf - name: 成功通知 if: success() run: | curl 'https://oapi.dingtalk.com/robot/send?access_token=${{ secrets.DINGTALK_ACCESS_TOKEN }}' -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": { "content": "ming-blog部署成功" } }' - name: 失败通知 if: failure() run: | curl 'https://oapi.dingtalk.com/robot/send?access_token=${{ secrets.DINGTALK_ACCESS_TOKEN }}' -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": { "content": "ming-blog部署失败!请登录github查看" } }'
|
总结
github actions 对开源仓库免费使用 真的是给力
不过在部署国内的资源的时候 需要考虑一下gfw是否会影响
如果是个人 使用github actions 没啥毛病 方便的一批
例如我的博客 基本上从push 到部署 到刷新cdn 2分钟多就生效了