美文网首页
centos 7 Tomcat+ jenkins +mvn+gi

centos 7 Tomcat+ jenkins +mvn+gi

作者: JackSpeed | 来源:发表于2018-10-11 15:42 被阅读0次

      教程讲述的是在centos7系统环境下,把mvn项目自动化部署到docker容器中,实现提交代码之后自动部署功能,代码管理使用码云(gitee)。安装Tomcat、jenkins、mvn环境请移步https://www.jianshu.com/p/686e534a6fec,docker安装配置请移步https://www.jianshu.com/p/9bd3ed0b336b
    简要流程:

    一共分为六个步骤:
      1. idea新建mvn项目,编写测试接口
      2. 安装gitee插件
      3. jenkins配置gitee
      4. jenkins新建mvn项目并配置
      5. 测试触发构建功能
      6. 编写Dockerfile,shell脚本,构建镜像,创建运行容器


    一、idea新建mvn项目,编写测试接口

    在idea中新建mvn项目,提交到gitee上,此步骤省略。

    二、安装gitee插件

    选择插件
    安装插件
    如果在线安装失败,可下载插件文件,选择在插件这个地方选择高级,从本地安装插件。
    下载地址 https://gitee.com/oschina/Gitee-Jenkins-Plugin/releases
    安装完成插件之后重启jenkins服务

    三、jenkins配置gitee

    配置gitee
    1. 链接名:可按自己想法填写

    2. Gitee 域名 URL: https://gitee.com,或者按gitee官方提示 (码云私有化客户输入部署的域名)

    3. 证书令牌:

      3.1 点击新建 3.2 访问蓝色背景处的链接,在gitee上获取私人令牌

      3.4 点击提交,系统会生成一串字符,复制过来填进去就OK了,ID和描述可按自己需求填写,没有什么限制条件

    4. 点击测试链接,完美的配置成功
    5. 保存返回

    四、jenkins新建mvn项目并配置

    新建mvn项目

    1.源码配置


    image.png

    参数说明

        1. Repository URL:gitee项目地址
        2. Credentials:上一步创建的凭据
        3. Name:origin
        4. Refspec:+refs/heads/*:refs/remotes/origin/* +refs/pull/*/MERGE:refs/pull/*/MERGE
        5. Branch Specifier (blank for 'any'):
              1. 对于单仓库工作流输入: origin/${giteeSourceBranch}
              2. 对于 PR 工作流输入: pull/${giteePullRequestIid}/MERGE
    
    2.构建触发器配置,需要在项目位置webhooks,前面提示的链接和点击生成webhooks密码的结果填入gitee项目的webhooks中,如下图所示 webhooks配置
    3.构建环境 构建环境
    4.准备构建 准备构建
    5.构建设置和构建后操作 image.png

    6.保存

    五、测试触发构建功能

    1.随意修改一个文件,提交代码到gitee,然后观察jenkins 立即构建
    控制台输出

    2.自动构建已经完成,接下来编写shell,使其运行在docker中,在 PostSteps这一步中

    六、编写shell脚本,把jar包打包成镜像

    1.在服务器的jenkins工作目录下找到我们新建的项目的目录,进入项目目录,新建文件夹

    mkdir  work
    
    工作目录

    新建工作目录完成之后,新建Dockerfile文件,

    vim  Dockerfile
    

    Dockerfile代码

    FROM  java:8
    
    VOLUME /usr/local/jenkins_home/workspace/jenkinsdemo/work
    
    ADD   jenkinsdemo-1.0.0.jar  jenkinsdemo.jar
    
    RUN bash -c 'touch /jenkinsdemo.jar'
    
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/jenkinsdemo.jar"]
    

    2.在Jenkins的项目配置界面的post steps步骤执行shell脚本,shell脚本代码根据https://blog.csdn.net/wangshouhan/article/details/80332951改动得到,如下

     #!/bin/bash
    #操作/项目路径(Dockerfile存放的路劲)
    BASE_PATH=/usr/local/jenkins_home/workspace/jenkinsdemo/work
    #jenkins工作空间
    SOURCE_PATH=/usr/local/jenkins_home/workspace
    #docker 镜像/容器名字或者jar名字 这里都命名为这个
    SERVER_NAME=jenkinsdemo
    JAR_NAME=jenkinsdemo-1.0.0
    #获取容器id
    CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
    #获取镜像id
    IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
     
    DATE=`date +%Y%m%d%H%M`
     
     # 备份
    function backup(){
        if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
            echo "$SERVER_NAME.jar 备份..."
                cp $BASE_PATH/$JAR_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
            echo "备份 $JAR_NAME.jar 完成"
        else
            echo "$BASE_PATH/$JAR_NAME.jar不存在,跳过备份"
        fi
    }
    
    
    # 最新构建代码 移动到项目环境
    function transfer(){
        echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$JAR_NAME.jar 迁移至 $BASE_PATH"
            cp $SOURCE_PATH/$SERVER_NAME/target/$JAR_NAME.jar  $BASE_PATH/
        echo "迁移完成"
    }
     
    # 修改访问权限
    function changemod(){
        echo "修改 $BASE_PATH/$JAR_NAME.jar 的访问权限"
           cd $BASE_PATH
           chmod 777 $JAR_NAME.jar
        echo "修改访问权限完成"
    }
     
     
    # 构建docker镜像
    function build(){
        if [ -n "$IID" ]; then
            echo "存在$SERVER_NAME镜像,IID=$IID"
            echo "停止容器docker stop  $CID"
            docker stop  $CID
            echo "删除容器 docker rm $CID"
            docker rm $CID
            echo "删除镜像 docker rmi $SERVER_NAME"
            docker rmi $SERVER_NAME
            echo "构建镜像 docker build -t="$SERVER_NAME"  ."
            cd $BASE_PATH
            docker build -t="$SERVER_NAME"  .
        else
            echo "不存在$SERVER_NAME镜像,开始构建镜像  docker build -t $SERVER_NAME . "  
            cd $BASE_PATH
            docker build -t="$SERVER_NAME"  .
        fi
    }
     
    # 运行docker容器
    function run(){
        backup
        transfer
        changemod
        build
        echo "docker run创建容器... docker run -d  --name=$SERVER_NAME -p 8002:8082 -v  $BASE_PATH:$BASE_PATH    jenkinsdemo:latest"
            docker run -d  --name=$SERVER_NAME -p 8002:8002 -v  $BASE_PATH:$BASE_PATH    jenkinsdemo:latest
        echo "$SERVER_NAME容器创建完成"
    }
     
    #入口
    run 
    

    3.保存,返回

    4.然后修改代码,push到gitee,在系统中会产生镜像和容器, 5.浏览器效果

    大吉大利,完工。


    jvm参数配置:
    -server -Xms180m -Xmx180m -Xmn64m -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

    相关文章

      网友评论

          本文标题:centos 7 Tomcat+ jenkins +mvn+gi

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