用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 環境了,而生成靜態文件的任務交給服務器自動完成。

「完」

相關文章
相關標籤/搜索