操作环境:Windows10、Node、Git、ssh
前置准备:
<username>github.io仓库已建立,预计托管博客网址为<username>github.io/blog
先对hexo有个清晰的认识,不至于稀里糊涂的跟着步骤走。
Hexo发布博客流程概览
- 搭建hexo环境
hexo new "title"(创建新文章)- 编写md文档
hexo clean
- 清除缓存文件 (db.json) 和已生成的静态文件 (public)
hexo generate(生成静态文件)hexo deploy(Hexo 会将 public 目录中的文件和目录推送至_config.yml中指定的远端仓库和分支中,并且完全覆盖该分支下的已有内容。)- 本地仓库同步到GitHub (不同步的话,文章源码只会保留在本地,不易管理)
由于 Hexo 的部署默认使用分支 master,所以如果你同时正在使用 Git 管理你的站点目录,你应当注意你的部署分支应当不同于写作分支。
Hexo 在部署你的站点生成的文件时并不会更新你的站点目录。因此你应该手动提交并推送你的写作分支。
一般来说第一步环境搭建只需要在最开始创建博客网站的时候进行,写文的话只需要重复第2-7步就可以了,这种使用方式强烈依赖于本地环境。但是,有时候我们并不只是固定在一台电脑上写文,(比如:一直写文的电脑坏了,需要换新电脑;电脑重装系统等等)这样就需要在另一台电脑上搭建环境,这样非常的麻烦,而且难免会带来一些其它依赖版本兼容问题。所以,可以采用travis-ci持续集成平台来简化发布文章的流程。
简化后的流程如下:
hexo new "title"(创建新文章)- 编写md文档
- 本地仓库同步到GitHub
- push到GitHub上之后,
travis-ci会监听分支文件变动,触发发布流程(跟Jenkins 构建流程类似)
下文整体分为两个步骤:
- 借助
GitHub Pages手动部署。 - 增加
travis-ci配置,完成自动部署
Hexo
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
npm install -g hexo-clicd [workspace]hexo init <folder:blog>cd <folder:blog>npm installhexo s

网站基础配置修改参考这里
GitHub
- 新建仓库:
blog(名字自己起) - 本地hexo仓库关联远程GitHub仓库
将本地仓库推送到远端 - 本地仓库一些必要的修改配置
https://github.com/hexojs/hexo-deployer-git
- 修改
_config.yml配置,如下:
url: https://all-smile.github.io/blogroot: /blog/# ...deploy:type: 'git'repo: git@github.com:all-smile/blog.gitbranch: gh-pages
- 提交到远程仓库
- 创建
gh-pages分支
hexo结合GitHub创建个人网站指定的分支名,hexo 内默认设置的分支也是叫这个名字
git checkout -b gh-pagesgit push -u origin gh-pages
- 远程仓库开启 github pages

手动部署
hexo cleanhexo ghexo deploy
hexo模板引擎生成静态文件,并推送到gh-pages分支下(替换原先分支下的所有文件)
到这里就已经完成了博客的搭建
需要注意的是:
hexo deploy命令并不会帮助我们同步本地的修改到远程仓库,所以当在本地写完博文之后,要做两件事:一是发布站点,二是同步远程仓库,这样做比较麻烦,下面会讲解如何配置持续集成
查看效果
这里我配置了自定义域名

自动部署travis-ci
由于 GitHub Actions 也可以实现CI/CD,travis-ci 的市场被挤压了,所以他们改变了运营策略,变成收费使用了!我们换用 GitHub Actions
Travis CI 是开源持续集成构建项目,用来持续集成托管在GitHub上的代码。
可以采取分支管理的方式,也可以新建repo,在ci配置上略有不同,这里我采用的是将hexo博客源码托管到独立的repo上
使用 travis ci 后,可以将前面部署的步骤自动化,我们只需要将本地修改的文件推送到 github 仓库,Travis CI 检测到 master 分支代码有变动,会自动执行脚本命令,将 Hexo 项目编译生成静态页面,部署到 gh-pages 分支
- 生成GitHub Token
点击这里,去GitHub创建
如下图

复制生成的 Token ,备用
- hexo仓库创建
.travis.yml文件
sudo: falselanguage: node_jsnode_js:- 10 # use nodejs v10 LTScache: npmbranches:only:- master # build master branch onlyscript:- hexo generate # generate static filesdeploy:provider: pagesskip-cleanup: truegithub-token: $GH_TOKENkeep-history: trueon:branch: masterlocal-dir: public
完整的 job 生命周期(包括三个可选的部署阶段,以及在检出 git 存储库 和更改到存储库目录) 如下:
- apt addons 可选安装
- cache components 可选安装
- before_install
- install
- before_script
- script
- before_cache (for cleaning up cache) 可选
- after_success or after_failure
- before_deploy 可选
- deploy 可选
- after_deploy 可选
- after_script
- Travis CI 关联项目仓库
- 使用 GitHub 账户注册登录 Travis CI
- 绑定
blog仓库 - 给
blog仓库设置 环境变量
在Environment Variables下新建一个环境变量,Name 为GH_TOKEN,Value为刚才你在 GitHub 生成的Token。确保DISPLAY VALUE IN BUILD LOG保持 不被勾选 避免你的Token泄漏。点击Add保存。
GitHub Actions
使用Github Action来部署hexo,这样电脑本地就不需要安装npm相关的东西了。另外利用github.dev也可以实现在页面上编辑了。
在线编辑:
Github有提供一个在线编辑的页面,在Repo页面按下按键.就可以打开编辑页面了

每个 action 就是一个独立脚本,因此可以做成代码仓库,使用userName/repoName的语法引用 action。比如,actions/setup-node就表示[github.com/actions/setup-node](https://github.com/actions/setup-node)这个仓库,它代表一个 action,作用是安装 Node.js。事实上,GitHub 官方的 actions 都放在 [github.com/actions](https://github.com/actions) 里面。
