Jenkins实现Gitbook自动部署
2017-10-24 本文已影响0人
zpfang
nodeJS安装
gitbook安装
//安装gitbook
npm install -g gitbook-cli
//验证并安装
gitbook -V
生成gitbook
书写SUMMARY.md目录结构
* [简介](README.md)
* [第一章](chapter1/README.md)
- [第一节](chapter1/section1.md)
- [第二节](chapter1/section2.md)
* [第二章](chapter2/README.md)
- [第一节](chapter2/section1.md)
- [第二节](chapter2/section2.md)
* [结束](end/README.md)
新增book.json加入目录折叠插件
{
"title" : "消息服务文档",
"plugins": ["toggle-chapters"]
}
使用gitbook install安装插件
使用gitbook init根据目录结构生成相应的文件
使用gitbook build . _book(这里.默认创建后面的文件夹)生成对应的html文件
预览
使用gitbook serve启动预览服务器
访问localhost:4000预览gitbook
创建git项目地址
创建git项目, 并上传markdown文件
这里采用一个git项目下存放多个gitbook目录, 后面Jenkins同时部署
Jenkins发布
- 创建Jenkins项目, 并配置git地址, 分支等
- 创建构件脚本
root_dir=/var/lib/jenkins/workspace/gitbook
cd $root_dir
function getdir(){
for element in `ls $1`
do
dir_or_file=$1"/"$element
c_dir=$root_dir"/"$dir_or_file
if [ -d "$c_dir" ]
then
cd $dir_or_file/
echo $dir_or_file
if [ -f "book.json" ]
then
## 安装插件, 如果book.json中未加入该插件则不用执行
npm install
gitbook build . $root_dir/package/$dir_or_file
cd $root_dir
else
cd $root_dir
getdir $dir_or_file
fi
fi
done
}
source /etc/profile
getdir .
-
打包上传文件
cd /xxx/jenkins_jobs/gitbook/workspace rm -r gitbook.tar tar -cf gitbook.tar gitbook
-
发送文件到目标服务器并解压(Jenkins默认的文件目前是workspace的子目录, 在该文件目录下查找文件并发送)
cd /usr/local rm -rf gitbook tar -xvf gitbook.tar rm -f gitbook.tar
nginx配置
server {
server_name localhost;
listen 8080;
location / {
root /usr/local/gitbook;
#开启目录
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
}
}
配置上传代码自动部署
-
生成随机token(用户匿名构建Jenkins项目)
openssl rand -hex 12 30910262eff664f2acbcb962
-
Jenkins安装Gitlab Hook Plugin和Build Authorization Token插件并重启
-
配置项目远程构建, 添加前面生成的token
-
配置gitlab项目webhook, 加入构建地址http://${Jenkins地址}:${Jenkins端口}/buildByToken/build?job=${Jenkins项目名称}&token=${前面生成并添加到Jenkins远程构建的token}