使用 Travis CI 生成 hexo 博客
之前在 vps 搭建了简单的 hexo 工作环境,配合 git 发布插件可以一键发布网页。最近发现了 Travis 自动集成工具,可以方便的读取 GitHub repo 进行自动集成,只需要注册后简单配置 .travis.yml
即可借助 Travis CI 的发布功能直接更新到 git pages。下面简单介绍配置过程和遇到的问题。
相比之前的方法优雅省力许多。
绑定 Travis CI
添加 Travis CI 到你的 GitHub 账号,并允许 Travis CI 访问你的 repo。
生成一个新的 token,勾选 repo 权限,然后把 token value 存储到 Travis CI 的环境变量 GITHUB_TOKEN
中去。
编写 Travis CI 配置
下面直接给出参考配置,来自 Hexo 官方文档 并稍做修改。
1 | language: node_js |
注意如果使用了第三方主题,需要使用子模块添加相应的主题。
上传至 GitHub
至此全部配置结束,检查工作目录是否包含下面所有目录和文件。
1 | . |
然后就可以开心地上传到 GitHub 享受持续集成的快感了。可以去官网查看实时的 log 输出,排查问题。祝一次成功!
折腾版
下面是之前的方法,要麻烦不少,想折腾的话随意。
注册 Travis
使用 GitHub 账号在官网进行绑定,选择上传源码的 repo 绑定即可。
安装 Travis CML
如果不需要使用 Travis 进行文件加密来保护密钥等内容,可以略过这一步。在这里由于要进行发布操作,必须 ssh 私钥,因此使用 Travis 对私钥文件进行加密,保护安全。如果你对 GitHub 足够放心,可以创建私有仓库并直接上传私钥,省略该步骤。不过十分不建议这样做。
首先确保 vps 装有 ruby,然后安装 Travis CML,按提示登录 GitHub 账号即可。
1 | gem install travis |
编辑 travis 配置
下面直接给出我的配置文件,参考自基于 Hexo 的全自动博客构建部署系统
1 | language: node_js |
每项配置的具体说明可以参考上面的文章,有十分详细的介绍。这里只说一下我遇到的小问题。
主题和插件
由于本网站使用了 next 主题,而且同步到 GitHub 的源码中不包含主题部分,因此需要同时下载该主题文件和开启的插件。需要注意的是路径要确保正确,否则生成的网页会无法加载所需的 js 脚本。
加密私钥
我使用的是 ed25519 算法生成的私钥,默认位于 ~/.ssh/id_ed25519
,下面以此为例,可以根据自己的具体配置进行调整。
请确保当前所在目录名称和repo名称相同,否则 Travis 无法上传加密后的环境变量。
1 | cp ~/.ssh/id_ed25519 . |
运行后会自动在 .travis.yml
添加以下内容
1 | - openssl aes-256-cbc -K $encrypted_**********_key -iv $encrypted_**********_iv -in id_ed25519 -out id_ed25519 -d |
对应的环境变量会自动上传到 Travis,可以在设置中进行查看。在集成时 Travis 会对加密文件进行解密,生成需要的私钥文件。
之后编辑一份 ssh 配置文件。
1 | Host github.com |
至此全部配置结束,检查工作目录是否包含下面所有文件,特别是标记星号的文件
1 | . |
然后就可以开心地上传到 GitHub 享受持续集成的快感了。可以去官网查看实时的 log 输出,排查问题。祝一次成功!