zoukankan      html  css  js  c++  java
  • jenkins+gitlab+maven+docker自动化部署spring boot

     工作流程:

    开发人员在gitLab上打了一个tag
    gitLab把tag事件推送到Jenkins
    Jenkins 获取tag源码,编译,打包,构建镜像
    Jenkins 复制jar包到远程服务器
    Jenkins 执行远程脚本(停止老版本容器,删除老版本容器,build 镜像,run 新容器)
    通知测试人员部署结果

    环境要求:

    git,jdk,maven,docker,jenkins

    一、环境安装:

    1.1先安装jdk,maven

    https://blog.csdn.net/sopp_li/article/details/80446932

    远程wget下载不到文件,可到官网下载最新的。再配置

    1.2 安装git

    https://www.cnblogs.com/gsliuruigang/p/7899803.html
    

    1.3安装 docker 

    http://www.runoob.com/docker/centos-docker-install.html
    

      

    1.4 安装jenkins

    https://www.cnblogs.com/stulzq/p/9291237.html
    

    docker 安装 jenkins

    https://www.cnblogs.com/fuzongle/p/12834080.html
    

      

    pom.xml 

    <build>
            <finalName>gpserver</finalName>
            <plugins>
                <!-- Srping Boot 打包工具 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- 指定JDK编译版本 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

      

    dockerfile

    # 基于哪个镜像
    FROM frolvlad/alpine-oraclejdk8:slim
    # 将本地文件夹挂载到当前容器
    VOLUME /tmp
    # 声明需要暴露的端口
    EXPOSE 15678 10111
    # 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
    ADD gpserver.jar app.jar
    RUN sh -c 'touch /app.jar'
    
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
    ENV JAVA_OPTS=""
    # 配置容器启动后执行的命令
    ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
    

      

    二、 jenkins 配置

    插件下载
    所需要的插件:
    Maven Integration plugin
    docker-build-step
    Docker plugin
    Gitlab Hook Plugin
    GitLab Plugin

    jenkins 系统配置:

    2.1Maven项目配置

    默认配置即可

    2.2 Gitlab 配置

     Credentials 添加:

    gitlab的账号、密码

    gitlab 有权限的api token

    可提前在凭证》系统里添加好

    jenkins全局工具配置 

    2.3Maven 配置

    选择安装的maven的目录settings.xml路径

    2.4 Maven配置,新增一个,去掉自动安装,选择安装的目录

    到止jenkins环境配置完成。

    三、配置部署项目

     在jenkin里新建任务,构建一个maven项目

    3.1源码管理:

    把git地址,填上,Credentials 如果之前未设置,添加一个

    如果连接成功,不会报报错

    3.2构建触发器

    在gitlab的项目里》设置》导入所有仓库,webhooks配置,填上上边的url,secret token

    配置成功下边会显示 200状态码

    3.3 构建build

     

    构建成功后,在jenkins workspace文件目录里可看到下载下来的代码,以及在target里生成的jar包

    Post Steps执行发布,更新脚本

    在远程操作之前,先要配置发布对象主机免密登录

    https://blog.csdn.net/fuck487/article/details/79361197
    

    具体脚本:

    echo '================打包完成,开始复制================'
    cd /var/lib/jenkins/workspace/gpsserver
    scp Dockerfile-gps  root@hadoop1:/data/public/gpsserver/
    scp server-gps/target/gpserver.jar  root@hadoop1:/data/public/gpsserver/
    echo '================复制文件完成================'
    ssh root@hadoop1 << remotessh 
    echo '================进入主机hadoop1 shell================'
    cd /data/public/gpsserver
    echo '================停止容器 gpsserver================'
    sudo  docker stop gpsserver
    echo '================删除容器 gpsserver================'
    sudo  docker rm gpsserver
    echo '================删除镜像 gpsserver:latest================'
    sudo  docker rmi gpsserver:latest
    echo '================build 镜像 gpsserver:latest================'
    sudo docker build -t gpsserver:latest -f ./Dockerfile-gps .
    echo '================运行容器 gpsserver================'
    sudo docker run --name=gpsserver -e JAVA_OPTS='  -Dspring.profiles.active=prod ' --restart always -it -d -p 10111:10111 -p 15678:15678  -v /data/public/gpsserver/logs:/logs gpsserver:latest
    
    echo "finished!"
    exit  ###退出远程机器
    remotessh  ###结尾哦
    echo '================结束远程启动================'
    

      

     至此 一个项目配置完成。

    结语:

    jenkins 只是一个工具,使用功能强大,有其他的使用方式:

    1.生成docker镜像,上传到阿里云或自搭镜像服务器,远程到主机shell进行pull,更新容器等。

    2.可配合docker swarm,搭建集群部署,只需改一下脚本即可。

  • 相关阅读:
    装饰者模式
    Linux 编译的一些注意参数
    CodeBlocks使用静态链接库
    [BOOST] BOOST::String
    [BOOST] BOOST::Regex
    如何启动仿真环境里的网络联接?
    BlackCore
    Silverlight 中为Dialog添加委托
    c# windows应用程序或C# 控制台应用程序 添加web引用步骤
    Hyperv Server Q&A
  • 原文地址:https://www.cnblogs.com/lucoo/p/10209892.html
Copyright © 2011-2022 走看看