蔚蓝触点 Azuretouch

Azuretouch
Touch your future

使用 Github 和 Gitbook 建立简单 Wiki 系统 (附上 webhook 自动部署)

由于需要建立个简单的 Wiki,在网上查了一下,最后确定使用 Gitbook + Github 来做这个 Wiki。
原因很简单,就是因为这个部署简单,维护简单,界面简单,编辑简单,哈哈,另外还可以多人后期维护。

原理也很简单,利用 Github 的版本库来做内容,Gitbook 来做环境。更新的时候,仅更新 Github 的版本即可,但是需要手动来部署服务器上内容(需要从 Github 上 pull 下来),但是我们也可以利用 Github 上的 webhook 来自动部署更新。

话不多说,下面介绍如何操作

部署项目

#首先拉取 Github 上的项目
git clone https://github.com/mmmjsz/wiki_azpro_cn.git
#进入项目的目录
cd wiki_azpro_cn
#安装依赖
npm install gitbook-cli -g
npm install
#安装 Gitbook
gitbook install
#编译项目,并复制到 cache 目录
gitbook build
rm -rf _book_cache
cp -r _book _book_cache
#运行 Gitbook
gitbook serve

部署文件真的很简单,看到Serving book on http://localhost:4000就说明已经正常运行了,如果你不喜欢4000端口的话,自己加个反代就可以了。

Webhook自动部署

先去 Github 上新建一个 webhook,如下图:
hook.png

然后在服务器上添加以下代码,这里我用的是python,随便挂在了某个网站上:

@wiki.route('/hook', methods=['POST'])
def hook():
    """ Entry point for github webhook """
    signature = request.headers.get('X-Hub-Signature');
    sha, signature = signature.split('=');
    secret = str.encode("Webhook Secret");
    hashhex = hmac.new("Webhook Secret".encode('utf-8'),request.data.encode('utf-8'),hashlib.sha1).hexdigest();
    if hashhex == signature:
        os.system('cd /www/wwwroot/wiki_azpro_cn&&git pull&&gitbook build&&rm -rf _book_cache&&cp -r _book _book_cache');
        print('gitbook build finish');
    return jsonify({}), 200

代码里没有import,如果缺少库,自己加上就可以了。

参考文献:

  1. GitBook Toolchain Documentation
  2. 通过 GitBook 开源框架和 GitHub 私有化部署 Wiki 文档
未经允许不得转载:蔚蓝触点 Azuretouch » 使用 Github 和 Gitbook 建立简单 Wiki 系统 (附上 webhook 自动部署)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址