前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[ 利器篇 ] - GitLab CI 部署GitBook

[ 利器篇 ] - GitLab CI 部署GitBook

作者头像
程序手艺人
发布2019-04-23 15:55:34
2.7K0
发布2019-04-23 15:55:34
举报

平时写的文档一般用Gitbook管理,类似于Git,其实Git主要用于管理代码,而Gitbook则使用Git管理文档。写好的文档可以按照特定的目录编译,运行,部署,然后一个带有文档的网站就展现出来了。而Gitbook也提供了本地的运行环境,通过npm安装gitbook即可,直接通过gitbook 本地部署环境。

场景

有的时候更换电脑则需要重新安装gitbook环境,甚是麻烦,有没有比较好的方法,类似Github,我只需要上传编写好代码,上传上去就好了?

这里就不得不说GitLab CI的强大之处了。直接使用CI部署GitBook的环境,简单快速方便。

GitLab CI 之前,结合官方文档先了解一些持续集成相关的概念。

Pipeline

一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。

任何提交或者 Merge Request 的合并都可以触发 Pipeline。

Stages Stages 表示构建阶段,说白了就是上面提到的流程。 我们可以在一次 Pipeline 中定义多个 Stages,这些 Stages 会有以下特点:

  • 所有 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始
  • 只有当所有 Stages 完成后,该构建任务 (Pipeline) 才会成功
  • 如果任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败
在这里插入图片描述
在这里插入图片描述

Jobs

Jobs 表示构建工作,表示某个 Stage 里面执行的工作。 我们可以在 Stages 里面定义多个 Jobs,这些 Jobs 会有以下特点:

  • 相同 Stage 中的 Jobs 会并行执行
  • 相同 Stage 中的 Jobs 都执行成功时,该 Stage 才会成功
  • 如果任何一个 Job 失败,那么该 Stage 失败,即该构建任务 (Pipeline) 失败
在这里插入图片描述
在这里插入图片描述

GitLab Runner

最终由谁来执行这些构建任务呢? 就是 GitLab Runner 了!

想问为什么不是 GitLab CI 来运行那些构建任务?

一般来说,构建任务都会占用很多的系统资源 (譬如编译代码),而 GitLab CI 又是 GitLab 的一部分,如果由 GitLab CI 来运行构建任务的话,在执行构建任务的时候,GitLab 的性能会大幅下降。

GitLab CI 最大的作用是管理各个项目的构建状态,因此,运行构建任务这种浪费资源的事情就交给 GitLab Runner 来做拉!

因为 GitLab Runner 可以安装到不同的机器上,所以在构建任务运行期间并不会影响到 GitLab 的性能~

按照 官方文档 安装即可!如果本地没有安装,也可以使用官方提供Shared Runners,GitLab.com上的Shared Runners以自动缩放模式运行,并由Google Cloud Platform提供支持,由于资源有限,有的时候还是本地搭建方便快速些。

在这里插入图片描述
在这里插入图片描述

GitLab CI构建

CI代表持续项目集成,简单点说就是自动化构建,编译。在GitLab中构建CI,只需要在项目中添加 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成。

  • .gitlab-ci.yml 文件
# requiring the environment of NodeJS 8.9.x LTS (carbon)
image: node:6

# add 'node_modules' to cache for speeding up builds
cache:
  paths:
    - node_modules/ # Node modules and dependencies

before_script:
    # - npm install npm -g
  - npm install gitbook-cli -g # install gitbook
    # - gitbook fetch latest # fetch latest stable version
  - gitbook fetch 2.6.9 # fetch latest pre-release version
  - gitbook install # add any requested plugins in book.json
  #- gitbook fetch pre # fetch latest pre-release version
  #- gitbook fetch 2.6.7 # fetch specific version

test:
  stage: test
  script:
    - gitbook build . public # build to public path
  only:
    - branches # this job will affect only the 'master' branch
  except:
    - master
    
# the 'pages' job will deploy and build your site to the 'public' path
pages:
  stage: deploy
  script:
    - gitbook build . public # build to public path
  artifacts:
    paths:
      - public
    expire_in: 1 week
  only:
    - master # this job will affect only the 'master' branch
  • 当git push 上传代码或提交合并请求的时候,会开始构建
在这里插入图片描述
在这里插入图片描述
  • 第一次提交,自动构建报错
GitBook 2.6.9 has been installed
$ gitbook init
Error loading version latest: Error: Cannot find module 'internal/util/types'
    at Function.Module._resolveFilename (module.js:538:15)
    at Function.Module._load (module.js:468:25)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at evalmachine.<anonymous>:31:26
    at Object.<anonymous> (/root/.gitbook/versions/2.6.9/node_modules/graceful-fs/fs.js:11:1)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)

TypeError: Cannot read property 'commands' of null
ERROR: Job failed: exit code 1

由于.gitlab-ci.yml 中 image: node:8.9版本过高,改为node:6问题解决

  • 构建完成之后,查看Settings->Pages,看到静态网页的网址
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档