前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Travis CI 构建 GitBook 实践

Travis CI 构建 GitBook 实践

作者头像
康怀帅
发布2018-02-28 15:47:22
发布2018-02-28 15:47:22
1.1K00
代码可运行
举报
文章被收录于专栏:康怀帅的专栏康怀帅的专栏
运行总次数:0
代码可运行

本文只提供思路,具体实现请查看本人博客的其他文章。务必对 Travis CI 基础知识 了解之后再阅读本文。

刚开始在 Travis CI 中从零开始搭建环境,全部执行时间为 三分半,将环境部署进 Docker, docker run XXX 之后直接开始生成,时间缩短为 一分半

准备 GitBook 项目文件

新建 .travis 文件夹

复制根目录 book.json 文件

编写 Dockerfile 文件

代码语言:javascript
代码运行次数:0
复制
FROM node:9-alpine

ENV TZ=Asia/Shanghai

WORKDIR /srv/gitbook

COPY book.json book.json

COPY docker-entrypoint.sh /usr/local/bin/

RUN apk add --no-cache \
          tzdata \
      && npm install -g gitbook-cli \
      && gitbook install \
      && ln -s /usr/local/bin/docker-entrypoint.sh / \
      && rm -rf /root/.npm /tmp/*

EXPOSE 4000

VOLUME /srv/gitbook-src

WORKDIR /srv/gitbook-src

ENTRYPOINT ["docker-entrypoint.sh"]

CMD server

编写 docker-entrypoint.sh 文件

代码语言:javascript
代码运行次数:0
复制
#!/bin/sh

START=`date "+%F %T"`

if [ $1 = "sh" ];then sh ; exit 0; fi

rm -rf node_modules _book

cp -a . ../gitbook

cd ../gitbook

main(){
  if [ "$1" = build ];then gitbook build; cp -a _book ../gitbook-src; echo $START; date "+%F %T"; exit 0; fi
  gitbook serve
  exit 0
}

main $1 $2 $3

编写 docker-compose.test.yml 文件

代码语言:javascript
代码运行次数:0
复制
sut:
  build: .
  volumes:
    - ../:/srv/gitbook-src
command: build

该文件用于 Docker Cloud 在每次提交 PR 时测试。

加密 SSH 私钥

该文件一般为 id_rsa.enc

根目录文件

编写 .travis.yaml

代码语言:javascript
代码运行次数:0
复制
language: bash
sudo: required
services:
- docker
before_install:
- openssl aes-256-cbc -K $encrypted_6cc8cff04075_key -iv $encrypted_6cc8cff04075_iv
  -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- export TZ='Asia/Shanghai'
- date
- git config --global user.name "khs1994"
- git config --global user.email "khs1994@khs1994.com"
script:
- docker run -it --rm -v $PWD:/srv/gitbook-src yeasy/docker_practice build
after_success:
- sudo chmod -R 777 _book
- cd _book
- git init
- git remote add origin "$REPO"
- git add .
- COMMIT=`date "+%F %T"`
- git commit -m "Travis CI Site updated $COMMIT"
- git push -f origin master:"$DEPLOY_BRANCH"
env:
  global:
  - DEPLOY_BRANCH: pages
  - REPO: git@github.com:yeasy/docker_practice.git
addons:
  ssh_known_hosts:
  - github.com
branches:
  only:
  - master

编写 docker-compose.yml

代码语言:javascript
代码运行次数:0
复制
version: "3"
services:

  server:
    # build: ./.travis
    image: username/project:latest
    ports:
      - 4000:4000
    volumes:
      - ./:/srv/gitbook-src
    command: server

  build:
    image: username/project:latest
    volumes:
      - ./:/srv/gitbook-src
    command: build

  development:
    build: ./.travis
    image: username/project:latest
    ports:
      - 4000:4000
    volumes:
      - ./:/srv/gitbook-src
    command: server
    # command: build

构键 Docker 镜像并推送

代码语言:javascript
代码运行次数:0
复制
# 根目录执行
$ docker-compose build development

$ docker-compose push development

不在本地构建镜像也行,在 Docker Cloud 关联 GitHub 仓库构建也可以。

推送 GitBook 项目到 GitHub

示例

如果不清楚文件夹结构,可以参考:https://github.com/yeasy/docker_practice

相关链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备 GitBook 项目文件
  • 新建 .travis 文件夹
    • 复制根目录 book.json 文件
    • 编写 Dockerfile 文件
    • 编写 docker-entrypoint.sh 文件
    • 编写 docker-compose.test.yml 文件
    • 加密 SSH 私钥
  • 根目录文件
    • 编写 .travis.yaml
    • 编写 docker-compose.yml
  • 构键 Docker 镜像并推送
  • 推送 GitBook 项目到 GitHub
  • 示例
  • 相关链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档