使用 Github 来管理 Hexo 博客源代码,并使用 Travis 来自动部署
背景
目前我的博客是部署到 GitHub 和 Coding,出于某些原因国内百度爬虫不能爬去到 GitHub 相关的内容,所以才需要同时部署到国内 Coding。
但每次写完文章都需要部署到两个地方,还是有点繁琐,刚好之前就听过持续集成和相关服务 Travis
,可以用来解决这个问题。下面是具体的配置和步骤,同时也解决了怎么管理博客源码和定制主题源码的问题。
另外 Coding 在去年开始在免费使用其 page 服务的情况下,需要在网站显示有关 Coding 的广告文字。关于如何只在使用 Coding 的服务时才显示那段广告文字,可以查看我博客的源码中的解决方案。
配置和步骤
管理以及定制 Hexo 主题
将主题 Fork 到自己的账号下后,在博客源代码根目录使用 git submodule
将主题的仓库作为子仓库
git submodule add git@github.com:cnu4/hexo-theme-apollo.git themes/apollo
进入主题目录,修改主题后按正常流程 git commit
, git push
更新主题的 git 仓库,再到博客根目录 commit
源代码
持续集成
要求:持续部署到 Github 和 Coding
配置
将 Hexo 源代码 push
到 Github 的仓库,我是将博客的仓库的 source
分支作为源代码仓库
登录 travis
并使用 github 登录后开启上述源代码的仓库
安装 travis cli
工具后登录,使用一下命令生成私钥的加密文件,以下是 Mac 环境下的命令
gem install travis
travis login
travis encrypt-file ~/.ssh/id_rsa --add -r /cnu4/cnu4.github.io
以上命令会自动在 .travis.yml
文件的 before_install
中添加解密得到私钥的代码,并生成文件 id_rsa.enc
创建 .travis
文件夹,在里面新建 ssh_config
文件,填入一下内容,避免第一次连接时的询问
1 | Host * |
将 id_rsa.enc
文件移入 .travis
文件夹
下面是 .travis.yml
配置文件
1 | language: node_js |
在 before_install
中先解密得到私钥并放到 .ssh
目录下,接下来的 npm install
安装 hexo
,然后就是构建和部署命令了
配置中需要注意:
配置中通过
git: submodules: false
使得 travis 不用https
的方式处理 git 子模块,否则此时会出现克隆时身份验证不通过的情况通过将代码
git submodule update --init --recursive
添加在ssh-add ~/.ssh/id_rsa
之后,使用ssh
处理子模块注意加密的 ssh 私钥不能有密码保护,也就是创建私钥的时候不要输入密码
接下来写文章后只需要一下命令便可以完成自动部署到 Github 和 Coding
1 | git add . |
新环境
在换了新电脑后,使用以下流程
1 | git clone repo_of_source.git # 克隆源码 |