配合Travis-CI将博客转移至Firebase Hosting

近期Coding Pages老是抽风,所以想换一个地方托管博客,Firebase是谷歌搞的一个云服务(没错 没被墙),据说和Github Pages一个CDN服务商,感觉还是比Gayhub更快一点。

Firebase Hosting

Firebase Hosting自带SSl,算是很方便了,1G存储10G月流量对于博客来说足以;不过也有一些缺点,手动部署需要用到他的命令行工具会比较麻烦而且需要番茄(后面会讲自动化的部署),试了一下把图片放上去加载特别慢,所以图片存储还是用coding的吧。

添加项目、绑定域名这些就不再赘述,可以参考其他文章。

Travis-CI自动化部署

这个其实比较麻烦,但是一劳永逸。Travis-CI说白了是一个追踪你的Github项目触发自动化操作的东西,整个Hexo博客目录作为一个Github项目,每次更改Push之后Travis-CI会自动运行hexo g还有部署到Firebase的一些命令,结束之后,你的博客就已经更新了。

其实也有很多其他文章讲到,讲一下我遇到的一些问题。

Firebase Token获取

运行firebase login:ci --no-localhost来授权获取TOKEN的时候无论是git-bash还是powershell都不能成功。

最后只能在VPS上操作,将出现的地址在本地浏览器打开,登录谷歌帐号后就会显示TOKEN了。

主题变成子项目

由于主题中包含的.git目录,提交的时候会被自动理解为子项目,可以手动略过这个目录一个个添加,也可以直接把目录删掉。

多个Firebase Hosting

一开始是设想把图片自动部署到另一个Firebase Hosting,Firebase部署的时候会读取firebase.json,不能手动指定,而且这个文件也只能指定一个Hosting。

要想多个需要切换目录,在包含图片文件夹的子目录中加入firebase.json指定另一个Hosting,而且不能用Travis自带的Firebase功能,要安装然后使用命令firebase deploy --non-interactive --project ${FIREBASE_PROJECT} --token ${FIREBASE_TOKEN}

不过由于图片加载速度太慢后面也没有再用了。

Coding Pages存图片

大致和Github差不多,需要获取一个Token,然后就可以Push了。新建令牌git push -f "https://{CO_ID}:${CO_TOKEN}@${CO_REF}" master:master,比Github多了个ID。

完整的.travis.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
sudo: required

language: node_js

node_js: "10"

branches:
only:
- master

before_install:
- npm install hexo-cli -g
- npm install -g firebase-tools

install:
- npm install

script:
- cd public_assets
- git config user.name "Taosky"
- git config user.email "t@firefoxcn.net"
- git init
- git add .
- git commit -m "add assets"
- git push -f "https://{CO_ID}:${CO_TOKEN}@${CO_REF}" master:master
- cd ../..
- hexo g && hexo douban
- firebase deploy --non-interactive --project ${FIREBASE_PROJECT} --token ${FIREBASE_TOKEN}

参考

https://blog.chrnie.com/2018/03/08/%E4%BD%BF%E7%94%A8-Travis-CI-%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2-Hexo-%E7%94%9F%E6%88%90%E7%9A%84%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A2%E5%88%B0-Firebase-Hosting/
https://medium.com/@bartwijnants/continuous-deployment-to-firebase-hosting-using-travis-ci-e7d9c798ead4
https://rainylog.com/post/firebase-tutorial/
https://blog.erguotou.me/hexo-on-firebase.html