美文网首页
Jenkins实现Gitbook自动部署

Jenkins实现Gitbook自动部署

作者: zpfang | 来源:发表于2017-10-24 09:07 被阅读0次

    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}


    参考地址:
    http://www.jianshu.com/p/4eac43872b40

    相关文章

      网友评论

          本文标题:Jenkins实现Gitbook自动部署

          本文链接:https://www.haomeiwen.com/subject/ftqtpxtx.html