之前一直把博客部署在 GitHub page 上,好处就是免费,缺点就是国内访问我的网站速度就很慢,刚好我的服务器一直闲置,就把博客同时备份到国内服务器上,加快国内访问的速度。
当然,不可能每次都去手动同步,为了实现自动化,解决方案采用 GitHub action 同步 Github page 到个人服务器。
在服务器设置 ftp 账号密码
我用的是宝塔的 pure-ftp,可以直接用宝塔创建 ftp 账号,根目录填写网站的目录

在 GitHub Marketplace 找到一个 FTP action
我试了几个 action,最后采用的是FTP Deploy
之后就是给博客仓库设置 secret,把服务器的 ip,ftp 的账号密码添加到里面。

然后在仓库的.github/workflows
目录下创建ftp.yml
文件,填写以下配置,就实现了博客自动化部署。
on: push
name: 🚀 Deploy website on push
jobs:
web-deploy:
name: 🎉 Deploy
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: 🚚 Get latest code
uses: actions/checkout@v2.3.2
- name: 📂 Sync files
uses: SamKirkland/FTP-Deploy-Action@4.0.0
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
protocol: ftp
把博客 push 到仓库,打开仓库的 action,可以看到,网站被传到服务器上了。

双线部署的结果
可以看到,国内服务器部署的话,基本都是绿的。

总结
因为我之前用的 travis-ci 自动化部署博客,所以为了实现这个 GitHub action,我走了不少弯路,但是把 hexo 生成博客也放在 GitHub action 上,就会简单很多。这里也赞叹下 GitHub action 的方便,以后再探索更多玩法。