使用 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 options
的 setting
中将 “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部署静态文件到服务器