0%

我开始用集成开发工具部署我的博客

这几天分别尝试了用Travis CIGitHub Action部署博客. 集成开发确实十分方便, 让人可以专注于写作, 而且对本地环境依赖性更小了 (在线写作也是可以的). 两者比较下来我更喜欢GitHub Action, 因为它就是Github的, 集成度更高. 而且Github Action支持的触发条件更多样一些.

先分别放上我使用Travis和GitHub Action时的配置文件

🔗 Travis配置文件

🔗 GitHub Action配置文件

GitHub Action的缺点

可以看出Travis要更成熟一些, 提供了一些很方便的功能, 比如要添加ssh known hosts, travis只需要

1
2
3
4
addons:
ssh_known_hosts:
- github.com
- ssh.github.com

而在GitHub Action中需要

1
2
3
4
- name: login ssh and git
run: |
mkdir ~/.ssh
echo -e "Host github.com\nStrictHostKeyChecking no\nIdentityFile ~/.ssh/id_rsa_github_action" > ~/.ssh/config

看起来GitHub Action的配置更短, 但这句是强行不验证github.com的服务器, 并没有Travis中的配置直观, 合理.

另外GitHub Action暂时还不支持缓存, 照这个样子即便实现了也是很别扭的东西... 我觉得缓存还是一个很重要的功能. 一个最简单的例子: 没有缓存的public文件夹导致刚换到GitHub Action时我的每篇博客更新时间与我的最后一次上传时间相同 (hexo通过对比source文件夹和public文件夹的时间戳来判断更新时间). 目前我是通过将master分支下载到public文件夹来蛮力解决的.

GitHub Action的优点

当然GitHub Action的优点也是明显的, 比如我的代码的托管平台和持续集成平台合二为一, 不说管理起来方便了多少至少内心通达了😆

另外GitHub Action的支持的触发条件更加丰富, 比如用下面代码可以指定只有Root分支有推送且有source/en文件夹以外的文件变动时才运行. 换句话说只有配置文件或者中文博客内容发生变动时才运行.

1
2
3
4
5
6
on:
push:
branches:
- Root
paths-ignore:
- 'source/en/**'

Travis的文档中我并没有看到可以这么操作.

再有就是GitHub Action支持一个项目有多个workflow, 比如我的博客就同时在运行两个工作流: 一个生成并部署中文博客, 一个生成并部署英文博客. 这是一个十分吸引人的功能! 并且GitHub正试图将workflow打造成能轻松分享, 引用的东西, 这能极大减少人们写这些繁琐低级的配置文件的时间. 实际上GitHub已经初步成功了. 在我的配置中就引用了两个GitHub官方发布的action.

1
2
3
4
5
6
steps:
- uses: actions/checkout@v1
- name: Use Node.js 8.10.0
uses: actions/setup-node@v1
with:
node-version: 8.10.0

目前来说GitHub Action体验着很不错!

感谢您的认可!