用GitLab Runner自动部署GitBook并不难

相信不少程序员喜欢用 GitBook 来写电子书、教程或者博客,看了很多文章,貌似都缺乏说明如何将 GitBook 部署到版本库,并自动在服务器上 build,而后将生成的静态网站部署到云服务器上。css

因此,今天就记录下我是如何一步步将 GitBook 发布到本身的云服务器上的。node

首先须要借助的工具备:nginx

  1. GitBook
  2. GitLab
  3. GitLab Runner
  4. Nginx
  5. 云服务器 (如:阿里云服务器)
  6. Docker
  7. 域名

本地开发

不少教程都写过如何在本地初始化 GitBook 开始写文档。这里简单描述。git

初始化 gitbook init 后,生成两个文件:README.mdSUMMARY.mdREADME.md 应该不陌生,就是说明文档,而 SUMMARY.md 其实就是书的章节目录。程序员

有了这两个文件还不够,咱们必需要初始化一些咱们本身的信息,这时候就须要建立文件:book.json,看看个人配置文件:web

{
  "language": "zh",
  "plugins": ["tbfed-pagefooter", "sitemap-general", "rss", "copy-code-button", "disqus", "donate", "custom-js-css", "highlight"],
  "pluginsConfig": {
      "custom-js-css": {
        "js": [
          "./bootstrap4/js/bootstrap.bundle.min.js",
          "./bootstrap4/js/bootstrap.min.js"
        ],
        "css": [
          "./bootstrap4/css/bootstrap-grid.min.css",
          "./bootstrap4/css/bootstrap-reboot.min.css",
          "./bootstrap4/css/bootstrap.min.css"
        ]
      },
    "donate": {
          "wechat": "/images/wechat.jpeg",
          "alipay": "/images/alipay.jpeg",
          "title": "以为不错点个赞",
          "button": "点赞"
        },
        "disqus": {
            "shortName": "coding"
        },
        "rss": {
            "title": "coding01 自我量化",
            "description": "coding01 自我量化",
            "author": "叶梅树",
            "feed_url": "https://ziwolianghua.coding01.cn/rss",
            "site_url": "https://ziwolianghua.coding01.cn/",
            "managingEditor": "yemeishu@126.com",
            "webMaster": "yemeishu@126.com",
            "categories": [
                "ziwolianghua"
            ]
        },
        "sitemap-general": {
            "prefix": "https://ziwolianghua.coding01.cn"
        },
        "tbfed-pagefooter": {
        "copyright":"Copyright &copy coding01 2018",
        "modify_label": "该文件修订时间:",
        "modify_format": "2019-11-3 21:20:20"
    }
    }
}

这里主要用到的插件有:docker

"tbfed-pagefooter", "sitemap-general", "rss", "copy-code-button", "disqus", "donate", "custom-js-css", "highlight"

这些插件彻底能够根据本身的状况而定,固然,咱们也选择了一些自定义 jscss,整个结构以下:shell

咱们能够安装插件看看执行效果了:npm

gitbook install && gitbook serve

接下来能够写两个文件:简介和开篇。json

看咱们的 SUMMARY.md 文件:

# Summary

## [介绍](README.md)


## 1. 理论

### 1.1 开篇

* [1.1.1 前言](1.1.1.md)

也能够看看 README.md 内容:

# 自动化自我量化

## 关于系统

因为我使用的是 iPhone + rMBP + Apple Watch ,因此本文的大部份内容是基于 Apple 生态下写的,若是你是 Android 生态设备,能够尝试相似的工具和方法论。

## 关于做者

> coding01 自由程序员

## LICENSE

![知识共享许可协议 Figure: 知识共享许可协议](https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png)

[知识共享许可协议 Figure: 知识共享许可协议](http://creativecommons.org/licenses/by-nc-nd/4.0/)

效果以下:

这里我放了一篇我以前写好的 「前言」,基本知足自定义的样式效果:

到此,基本的 GitBook 本地制做完成,下一步就看如何部署到服务器上了。

因为我本身有云服务器,因此推荐使用 GitLab 作代码版本控制,而后把 GitBook 电子书静态文件也部署到本身服务器上,配置自定义域名访问。

这里重点不是说如何部署 GitLab,而是说另外一个问题,由于 GitBook build 以后的其实是纯静态网站,能够直接使用 Nginx 或其余来配置域名直接访问。

因此这里的难点是,如何将代码 commit 到 GitLab 后,直接 gitbook build 产生静态网站内容,放置指定的路径下,提供 Nginx 等解析。

这里推荐使用「Gitlab Runner」。

Gitlab Runner

若是咱们本身已经使用Gitlab docker 环境,或者看我以前的 blog,应该知道我是基于 Laradock,因此直接注册一个 Gitlab Runner。

在注册以前,须要拿到该 Gitlab 项目的 Gitlab Runner token:

而后注册一个 Gitlab Runner:

dc exec gitlab-runner gitlab-runner register

注:同样的,你也能够直接进入 Gitlab Runner 容器,在配置文件中添加。

建立后,便可以在项目设置中看到:

这里,咱们使用 docker 模式,建立 node 镜像,供下文的 GitBook 编译,生成静态网站。

好了,接下来就是编写 .gitlab-ci.yml 文件了:

image: node:latest

build:
    stage: build
    artifacts:
        paths:
         - _book
    script: 
     - npm install gitbook-cli -g
     - gitbook install
     - gitbook build
    tags:
     - build

test:
    stage: test
    script: 
     - echo "no tests."
    tags:
     - test

deploy:
    stage: deploy
    script:
     - rm -rf /var/www/ziwolianghua/*
     - cd _book
     - cp -rf . /var/www/ziwolianghua
     - echo "发布成功!"
    tags:
     - deploy
    only:
     - master

这里配置了三个 tag:build、test 和 deploy,和 GitLab Runner 设置的 tags 配合使用。当知足 build、test 时,就会触发咱们刚才定义的 ziwolianghua_build_test Runner,也就会执行咱们定义好的 buildtest jobs,编译和测试咱们网站。

咱们将本地代码 push 到 Gitlab 看看效果:

build 和 test 成功后,咱们接下来就须要把生成的静态代码部署到指定路径上,这时候再也不是 docker 模式了,改成 shell,由于咱们在相同的服务器部署网站,并且经过 docker 共享 volumn,将文件存放地方和 nginx 共享,这样就能够直接在 nginx 容器下配置访问。

接下来,配置第二个 「Gitlab-Runner」:

好了,咱们再看看 jobs 运行结果

发布成功。

这时候咱们只需配置 ngnix 去访问这个路径便可,这里就再也不赘述了。

直接访问连接 https://ziwolianghua.coding01.cn 看看效果:

总结

从本地使用 GitBook init 开始写 blog 和电子书,而后代码托管到 GitLab 上,再利用 GitLab Runner 自动化编译和部署网站,一鼓作气。这样作的好处是,只要写好的 markdown 电子书扔到项目中,在目录文件上添加路径便可,咱们能够随时随地更新和提交原始代码,彻底不用考虑在本地部署 GitBook 环境了,而生成静态文件的任务交给服务器自动完成。

「完」

相关文章
相关标签/搜索