利用 travis 通过 Hexo 在 Github 上自动部署 Markdown 文档
前言
本文介绍了一个只需要更新 Markdown 文档到 Github,即可实时更新博客内容的方法。
本文参考这篇文章 实现,并根据我的需求更改了部分内容,以实现部署多个 hexo 工程到同一 Github 项目不同目录下。
Github 为我们提供了Github Pages 方便我们建立简单的网页来介绍项目,很多时候我们用他来搭建静态博客。
通过Hexo可以将我们写的Markdown文档
格式化为静态网页
,再将其部署到 Github 上面对应的user_name.github.io
上面,就可以拥有一个在线的静态博客。
但是受 Hexo 的限制,每次更新博客内容都需要在更新完 Markdown 文档后,都需要再次重新创建对应的静态网页、将更新提交到 Github。这样的步骤繁琐且没有意义,而且更换电脑后这些环境都需要重新设置一次。
通过travis提供的免费 CI 技术,可以让云服务器代替我们实现 Hexo 创建以及同步 Github 等步骤,每次更新博客时只需要将写好的 Markdown 文档推送到 Github 项目对应目录中,等待一会儿就可以看到更新后的博客了。
具体搭建过程可以参考这篇文章 本文只讲述实现部署多个 hexo 工程到同一 Github 项目不同目录下需要注意的地方:。
懒——是第一生产力
具体差异
hexo 分支的结构
因为有多个 hexo 项目,所以在 github 项目的 hexo 分支下,对不同的 hexo 项目分别新建文件夹存放。
-- your_name.github.io //github项目,切换到hexo分支
--hexo_project1 //本地hexo项目1的所有文件
--hexo_project2 //本地hexo项目2的所有文件
.travis.yml
重点修改script:
和after_script:
两部分:
script:
# 1. 创建对应的静态博客内容
- cd blog # 第一个本地 hexo 项目
- hexo clean
- hexo generate
- cd ..
- cd imissyou # 第二个本地 hexo 项目
- hexo clean
- hexo generate
- cd ..
after_script:
- git config user.name "jixiaoyong"
- git config user.email "jixiaoyong1995@gmail.com"
- cd ..
- mkdir publish
- cd publish
# 2. 在这里再拉取 master 分支的文件,并删除旧的博客内容
- git clone https://${GH_TOKEN}@github.com/jixiaoyong/jixiaoyong.github.io.git
- rm -rf ./jixiaoyong.github.io/blog/*
- rm -rf ./jixiaoyong.github.io/imissyou/*
# 3. 将第 1 步生成的静态博客内容添加到 master 分支,并同步到 github 上面
- cd ..
- cp -rf jixiaoyong.github.io/blog/public/* publish/jixiaoyong.github.io/blog/
- cp -rf jixiaoyong.github.io/imissyou/public/* publish/jixiaoyong.github.io/imissyou/
- cd publish/jixiaoyong.github.io/
- git add .
- git commit -m "auto update by www.travis-ci.org"
- git push
文档链接:.travis.yml
更新博客内容
当以上内容都配置完成后,只要新建一个符合 hexo 要求的文档,并提交到 Github 对应项目的 hexo 分支中source
目录,Travis 便会自动帮我们创建并更新静态网页。
参考文档
Hexo 遇上 Travis-CI:可能是最通俗易懂的自动发布博客图文教程 (完全在该文档指导下完成,部分步骤有差异,感谢作者MichaelX )