为了方便博客管理,我是将博客源码放在resource
分支,最终生成部署的页面文件放在master
分支,每次更新博客都需要先提交博客文件,然后手动部署到GiHub Pages,次数一多就显得麻烦,而且还容易出错。那么有没有一种方法让这个过程自动化,在提交完博客文件后自动帮我们编译部署文件到GitHub上呢?很幸运有现成的工具可供使用,使用Travis-CI就可以将整个过程自动化,下面借用一张图片来说明Travis_CI的作用
准备工作
-
一个Hexo源码仓库,源码放在
resource
分支,编译后的文件放在master分支,类似于下面这样: -
获取GitHub_Token
登录GitHub,在Settings / Developer settings / Personal access tokens
中,新建一个token,权限将repo选中就可以,生成的token一定要保存好,等会配置在Travis中,只会显示一次,丢失就需要再重新生成一个。 -
进入
Travis CI官网2021年6月15日Travis CI地址更改为 travis-ci.com,权限设置操作大体相同
Travis可以使用GitHub账号进行登录,进入设置(Settings),打开需要自动编译的公开仓库
然后点击右侧的Settings按钮,找到环境变量(Environment Variables),左侧填一个名字,右侧填写刚刚获取到的Github_Token,Display value in build log
按钮不要打开,打开后其他人就可以在日志文件中看到你的Github_Token
告诉Travis怎样编译我们的项目
在Hexo站点目录,也就是.config.yml
文件同级目录,创建一个名为.travis.yml
的文件
language: node_js # 语言
node_js: stable # node.js版本
cache: # 缓存,加快下次编译速度
directories:
- node_modules
branches: # 监控 resource分支,此分支发生变化就启动一次新的构建
only:
- resource
before_install: # 和自己电脑上安装的hexo-cli一样,也需要安装依赖环境
- npm install -g hexo-cli
install:
- npm install
- npm install hexo-deployer-git --save
script: # 编译Hexo
- hexo clean
- hexo generate
after_script: # 编译完成后推送到GitHub上
- git config user.name "wrxiang"
- git config user.email "wrxiang@163.com"
#将.config.yml中的文字`Travis`替换为环境变量中的{Travis}代表的那串密码
- sed -i "s/Travis/${Travis}/g" ./_config.yml
- hexo deploy
我们还需要修改_config.yml文件的deploy节点
#修改前
deploy:
- type: git
repo: git@github.com:wangruix/wangruix.github.io.git
branch: master
#修改后
deploy:
- type: git
# 下方的gh_token会被.travis.yml中sed命令替换
repo: https://Travis@github.com/wangruix/wangruix.github.io.git
branch: master
最后将新创建的.travis.yml
文件提交到源码路径
我们就可以新增一篇博客,完成后将博客提交到源码分支,然后就可以到Travis查看构建情况,Job log中可以查看详细的构建日志
Travis构建完成后会将生成的文件推送到Github上,这样我们只需要提交博客的源文件,然后Travis帮我们完成构建部署过程,博客发布更新更加方便了。
参考文章
Travis CI使用经验
用TravisCI持续集成自动部署Hexo博客的个人实践