使用hexo+CI构建wiki知识管理系统

  使用 hexo+CI 快速构建一个 wiki 在线知识管理系统。

前言

  管理知识需要系统化,而不是像吸收知识时的碎片化。我对于知识管理的有如下要求:

  • 多终端支持
  • Markdown 写作
  • 目录树清晰
  • 检索快
  • 方便迁移
  • 最重要的是,数据在自己手上。

  之前用过有道云、印象笔记等云端笔记,不是空间不够就是广告多,想要迁移也是个问题,尝试过使用 mybase 本地文档管理,虽然有优秀的检索速度与目录树模式,但是不支持 Markdown,并且跨终端支持也是硬伤,发现了一个不错的 hexo 主题 wikitten,因此打算使用 hexo 来搭建一个在线 wiki。优点很明显,全静态,没有数据库,迁移的时候,就跟拷片一样方便,自带的 localSearch 检索速度超快。

效果: Alliot’s Wiki
pages 仓库: https://github.com/AlliotTech/hexo-wiki-pages

准备工作

  所需环境同 hexo的搭建、设置与部分优化 安装 Git、node.js、hexo 即可,不作过多赘述。需要知道 hexo 的基本使用,才可以继续。推荐 hexo的搭建、设置与部分优化 或者是 hexo.io 官方文档。
完成后,进入到 /themes 目录下,右键 git bash here 执行:

1
2
3
4
5
6
7
# 克隆主题
git clone git@github.com:AlliotTech/hexo-theme-Wikitten.git themes/Wikitten

# 将站点目录的一些默认模板覆盖
mv themes/hexo-theme-Wikitten/ themes/Wikitten
cp -rf themes/Wikitten/_source/* source/
cp -rf themes/Wikitten/_scaffolds/* scaffolds/

Git pages

  很多用 hexo 的朋友都选择使用两个分支来分别存放站点的 source 与 public,然后 public 的分支用来构建 gitpages。由于 GitHub 已经有免费的私有仓库了,我这里是将 source 与 public 分开各开一个 repository,source 仓库为私有。我在 GitHub 新建了两个仓库分别为: wiki-source(私有)、hexo-wiki-pages(公有)。在 hexo-wiki-pages 仓库的设置里打开 gitpages。
  将 themes/Wikitten/hexo/ 下的所有文件复制到 hexo 的目录下。

  • 修改 hexo 目录下的 _config.yml 中的站点信息、域名以及末尾 deploy 字段的 repository 地址为你的 hexo-wiki-pages 公开仓库的 ssh 地址,如我的为: git@github.com:AlliotTech/hexo-wiki-pages
  • 修改 .travis.yml branch 字段指定你要构建的分支,如我的 wiki-source 仓库需要构建的分支为: master
  • 修改 travis_env_init.sh 中 git 的配置信息(用户名与邮箱)。
    之后就可以通过 hexo s 打开 localhost:4000 本地访问测试一下,成功则将 hexo 目录 push 到你的 source 仓库。

仓库加入到CI

  CI 其实不是什么高级的东西,只是在检测到你指定的 Git repository 有 commit 操作后,自动在云端创建一个临时容器环境,运行你 .travis.yml 中指定的命令,完成之后自动删除。
使用 Travis-CI 对 wiki-source 仓库执行 hexo d 部署到 hexo-wiki-pages 公有仓库的 gitpages,这样就做到了只公开了站点的静态文件而源文件不公开。
  值得注意的是,https://travis-ci.org 是不支持私有仓库的,https://travis-ci.com 才支持选择私有仓库,登录后者,使用 GitHub 账号授权登录后,点击左边仓库标题 My Repositories 旁边的加号,选择 wiki-source 仓库,将其加入到 Travis-CI 中,在 more optionssetting 中将 “Build pushed branches” 与 “Build pushed pull requests” 勾选即可,在底部的 SSH Key 中填入你 GitHub 的 ssh key,以便 CI 能对仓库进行操作。关于生成 SSH Key 可见 GitHub 官方

写作

  之后只需要使用 git push -u origin master 提交到 wiki-source 仓库,Travis-CI 就会在云端帮你自动执行 hexo d 的操作了。从此,本地不再需要 hexo d,写作只需要写完文章了 push 一下就能通过 gitpages 看到效果。
  
2020年3月23日 更新:
  由于 Travis-CI 有免费次数限制,新增: hexo使用coding CI部署静态文件到服务器