1. 基本安装和使用
前提是已经安装了Node和Git环境,然后安装GitBook:
npm install -g gitbook-cli
然后在写作的时候(比如写一本叫做Jenkins入门
),可以在指定的目录下,先创建一个Jenkins入门
文件夹,然后初始化:
# 进入创建的空文件夹
cd Jenkins入门
# 初始化
gitbook init
然后回到Jenkins入门
文件夹,看到gitbook已经自动帮我们生成了 README.md 和 SUMMARY.md 两个Markdown文件,前者 README.md 和git中一样,用于写些项目介绍(这里就是写些书本介绍信息),至于后者的 SUMMARY.md 文件是用于罗列书本目录的,后面gitbook会帮我们自动依据这个文件中的目录信息生成对应的文件和文件夹,比如写成下面这样:
# Summary 目录
* [介绍](README.md)
* [第一章](第一章/README.md)
* [第一节:导览](第一章/第1节--启航.md)
* [第二节:创建第一个管道](第一章/第2节--创建第一个管道.md)
* [第二章](第二章/README.md)
* [第一节:总览](第二章/第1节--总览.md)
然后进入到Jenkins入门
文件夹再用gitbook init
初始化一下,gitBook会依据上述的目录结构帮我创建好文件夹和文件,结构如下:
然后可以在已有的目录结构和文件中进行创作,创作完后,可以使用gitbook serve
命令进行在线发布预览,比如:
# 发布并指定端口号
gitbook serve --port=4000
然后访问4000端口,效果如下:
这里的页面渲染主要是由 Node.js 提供的,除了这种在线发布外,还可以直接使用gitbook build [gitbook创建源书目录] [构建本地书籍的输出路径]
命令来构建本地书籍,比如:
gitbook build . F:\我的第一本书
默认是生成HTML格式的书籍,当然也可以生成其他格式的书籍,比如生成pdf(还需要安装ebook-convert):gitbook pdf . F:\我的第一本PDF书
,但建议不要搞得像我这里名字搞得这么奇葩不一致。
2. 版本控制
这里使用git作版本控制和我们普通工程下使用git控制一样,简单说一下,进入在源书本的根目录
# 初始化本地仓库
git init
此外,利用GitBook Editor工具可以直接进行即时可见的编辑(需要注册账户,我死活注册不了),
注:所有内容在githup上,具体参见GitBook
尝试结合Jenkins完成gitbook的发送到远程服务器自动化部署,未成功(一直提示无法识别gitbook
命令),测试过的方案如下:
1.配置软件的环境(无效)
ln -s /usr/local/node-v10.14.2-linux-x64/bin/node /usr/local/bin/node
ln -s /usr/local/node-v10.14.2-linux-x64/bin/npm /usr/local/bin/npm
ln -s /usr/local/node-v10.14.2-linux-x64/bin/gitbook /usr/local/bin/gitbook
2.手动添加环境变量(无效)
vim /etc/profile
# 添加Node环境
export NODE_HOME=/usr/local/node-v10.14.2-linux-x64/bin
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$NODE_HOME/bin:$PATH
3.在Jenkins全局环境中添加环境(无效)
在Linux中查看$PATH
变量:echo $PATH
,然后将出现的字符串复制,粘贴到:系统管理–>系统设置–>Global properties–>环境变量–>Add–>Name为PATH
,Value为刚刚复制的内容,无效。
4.手动调用环境变量(无效)
在配置任务的“执行Shell”时,在shell命令上方加上#!/bin/bash -il
,无效,诸如:
#!/bin/bash -il
gitbook build /usr/local/test/Jenkins入门
gitbook serve /usr/local/test/Jenkins入门 --port=4000
后来尝试了一下,在Jenkins所在机器A上做了同样的配置,不上传到远程机器B,只在A上进行简单的执行脚本,可以部署,简单代码如下:
cp -r /root/.jenkins/workspace/localhost-gitbook/抽离的知识点/GitBook/Jenkins入门 /usr/local/test/
cd /usr/local/test/Jenkins入门
gitbook init
gitbook serve --port=4000
但通过SSH上传到B上就不行(B上也配置了A的环境),最终解决方案:后来发现执行的shell不放在在SSH Publishers中的Eexc command中即可,build中再加一个“执行shell”即可,然后直接写:
cd /usr/local//test/Jenkins入门/
gitbook init
# 将运行日志重定向到 Jenkins入门.out 文件中
nohup gitbook serve --port=4000 &> Jenkins入门.out
详细如下: