使用Jenkins自动发布
github和gitbook都对书籍的发布提供了自动化的支持,比如github中可以方便的将生成的html page发布github pages上,gitbook更是天然支持。
但是对于一些不适合发布到github和gitbook的内容,比如公司内部的一些文档或者知识分享,就需要考虑其他的方式。
Jenkins/nginx的安装部署不在本书之列,我们假设jenkins/nginx服务器已经准备OK,而且在同一台物理机器上。
默认情况下jenkins执行脚本的用户名是 jenkins,为了让它可以有权限操作文件系统,需要修改目录权限。
为了让jenkins可以执行 gitbook 的 build 命令,需要在jenkins所在机器上安装nodejs和gitbook,方法如前所述。
准备下面的bash脚本,保存为jenkins.sh,存放在git仓库的根目录下:
source /etc/profile
echo `pwd`
echo `id`
echo "PATH=$PATH"
echo "**** get content from git ****"
echo `ls -l`
echo "**** prepare nodejs ****"
npm install
echo "**** begin to build html ****"
gitbook build
echo "static html content is located in _book folder:"
echo `ls -l _book`
echo "**** remove exist document ****"
echo "**** copy content in _book to nginx ****"
cp -r _book /usr/share/nginx/html/docs/reference
echo "**** Done! ****"
echo "new content is published to nginx:"
在这个jenkins的Job中,设置 Poll SCM: H/2 * * * *
来每3分钟检查一次git,然后执行command sh jenkins.sh
。