使用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仓库的根目录下:

    1. source /etc/profile
    2. echo `pwd`
    3. echo `id`
    4. echo "PATH=$PATH"
    5. echo "**** get content from git ****"
    6. echo `ls -l`
    7. echo "**** prepare nodejs ****"
    8. npm install
    9. echo "**** begin to build html ****"
    10. gitbook build
    11. echo "static html content is located in _book folder:"
    12. echo `ls -l _book`
    13. echo "**** remove exist document ****"
    14. echo "**** copy content in _book to nginx ****"
    15. cp -r _book /usr/share/nginx/html/docs/reference
    16. echo "**** Done! ****"
    17. echo "new content is published to nginx:"

    在这个jenkins的Job中,设置 Poll SCM: H/2 * * * * 来每3分钟检查一次git,然后执行command sh jenkins.sh