以前使用Hexo的时候,都是在本地进行编译和部署的,平时使用的时候以为没什么,只须要html
hexo g |
两步就能够把博客更新的内容推到GitHub Pages上。可是某些时候可能会遇到你的文件夹中存在一些其余编辑到一半的文章——这时候想要更新博客中的某些内容但同时不想把没写完文章发布出去的话,就必需要先把那几篇文章移到其余地方,更新完复制回去。node
这种蠢办法虽然有效可是十分麻烦——因此此次咱们要上一些更牛逼的工具,例如——Travis CI。git
作这件事的大致思路就是——以 remote 端的仓库为标准,来生成咱们咱们的博客。咱们只须要把须要发布或者更新的内容push到远程仓库,持续集成工具就会帮咱们把仓库中的内容clone下来,而后再在它的容器里进行编译、部署的流程。github
开始以前首先要说的是,个人博客使用GitHub Pages来托管。源文件存放在 master
分支里,页面文件存放在 gh-pages
分支里。segmentfault
首先用你的GitHub帐户登陆Travis CI安全
登陆以后,在你的我的信息页面能够看到你GitHub中的全部仓库(若是没有的话受权一下就有了),找到你的博客所在的仓库,把右边的开关键拨到打开的状态。服务器
点击右边的按钮进入设置页面,在设置页面中咱们能够设置何时须要CI工具执行Build
、配置环境变量、配置定时任务等。hexo
这里推荐把 Build only if .travis.yml is present 这一项打开。工具
动动脑想想就能知道——若是咱们在一个陌生的容器中执行了编译操做而后想要推送到本身的GitHub仓库中时,是没有权限的——咱们既没有配置SSH Key也没有在任何位置输入过密码。这里咱们要用一个安全、稳定、便捷的手段来解决权限这个问题。网站
Access Token是一个好的解决方案。你能够理解成咱们为给这个应用程序单独生成了一个口令,这个口令里包含了咱们的帐户和密码,咱们在将要把代码推送到Github仓库的时候,告诉他这个口令,他就会把放行咱们的推送请求了。
首先去GitHub给帐户添加一个Personal Access Token。打开GitHub,在 Settings 页面中找到 Developer settings ,打开 Personal access tokens 标签页,点击新建一个token。
为这个Token取个名字,而后勾选 repo 这一栏,点击保存。
若是不出意外,保存后屏幕上会显示一行乱码——这就是服务器为你生成的口令。 你须要先把他复制下来,由于在此以后你是看不到这个口令的。你也没必要把它记在小本本上,若是有须要再生成一个
咱们在Travis CI中把口令设置为一个环境变量。打开刚才Travis CI中blog仓库的设置页面,在环境变量一栏把 access_token 做为一个value填写进去,而后给它取个好听的名字,点击添加。 推荐不要勾选 Display value in build log 否则别人能够在日志里看到你的口令。
能够看到上面那一行是以前添加过的token。正常状况下别人是不会看到你的口令的
在Travis CI服务端须要设置的就是这些,接下来要在仓库中添加Travis CI的配置文件。
首先要看一下你hexo的配置文件 _config.yml
中部署那一块的配置,以个人为例——
# Deployment |
这里的指定了博客的仓库连接和部署的分支。这里的仓库连接过一会是要被替换成token形式的连接。
在仓库的根目录下,新建一个 .travis.yml
文件,而后将如下内容写进去,并将该改的地方改一下:
language: node_js |
说明一下:
_config.yml
中的连接,后面的那一串是token形式的连接。 ${GITHUB_ACCESS_TOKEN}
就是咱们刚才为access_token配置的环境变量中的变量名。 hexo g
和 hexo d
到这里咱们就大功告成了,在把配置文件推送到远程仓库后,你只须要把你更新的内容推送上去,你就能够在Travis CI的网站中看到实时的编译和部署状况了。
连接:http://yangteng.me/blog/2018/20180517deploy-hexo-with-travis/