jenkins+gitlab自动化部署

    xiaoxiao2022-07-07  193

    本次部署前提

    1、搭建好jenkins,搭建文档地址:https://blog.csdn.net/baidu_38432732/article/details/80499898

    2、搭建好gitlab,搭建文档地址:https://blog.csdn.net/baidu_38432732/article/details/90371731

    3、私有仓库的搭建文档(本文档没有登录账号和密码的私有镜像库):

           1)没有登录账号和密码:https://blog.csdn.net/baidu_38432732/article/details/90405049

           2)有登陆账号和密码:https://blog.csdn.net/baidu_38432732/article/details/95737742

    jenkins构建部署思路:

    在jenkins主机上编写docker制作镜像并将镜像上传到私有库的脚本,然后在jenkins里调用jenkins主机上脚本,接着就在目标主机pull镜像并启动镜像

    一、配置jenkins

    1、安装和gitlab有关的插件

    2、置jenkins和gitlab密钥对

    首先我们配置ssh密钥对,让jenkins和gitlab通信无需密码,直接用密钥认证

    在linux终端

    ssh-keygen -t rsa            #一路回车 会在/root/ 生成.ssh/目录 里边有rsa rsa.pub 两个文件

    点OK。

    3、把.ssh目录的另一个rsa.pub放到这

    先点右上角头像-settings,出现如图点ssh密钥

    4、构建git+maven项目,

     

    调用jenkins服务器上的脚本

    远程主机上执行的脚本

    二、gitlab上的配置

    1、查看配置时所需的url值

    2、配置webhook

    点击add webhook时我们出现一下报错

    解决办法

    用管理员账号登录

    然后重新加入

    补充相关的脚本

    脚本一:

    制作镜像脚本以及将镜像上传到我们的私有库上(ip是私有库地址,此脚本的必须和Dockerfile在同一级目录,或者我们将docker build -t mall-admin:vtest . 中的最后那个点改成Dockerfile的路径)

    #!/bin/bash rm *.jar cp 项目路径/target/mall-admin*.jar mall-admin.jar #把jir包拷贝到我们脚本执行的目录下(也可以自定义路径,自定义路径时,注意jar包和dockerfile路径都要写绝对路径) docker build -t mall-admin:$1 . # 制作镜像 docker tag mall-admin:vtest ip:5000/mall-admin:$1 # 镜像做tar标记 docker push ip:5000/mall-admin:vtest # 将镜像上传致我们的镜像库,一般都是私有镜像库

     

    Dockerfile:

    FROM java:8 VOLUME /app COPY mall-admin*.jar mall-admin.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezone RUN bash -c "touch /mall-admin.jar" EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./uranedom","-jar","-Dspring.profiles.active=docker-linux", "-Duser.timezone=GMT+08", "/mall-admin.jar"]

    2、在目标服务器上的启动脚本

    docker stop mall-task # 停止原来的容器 docker rm mall-task # 删除容器,线上环境不建议操作 docker rmi ip:5000/mall-task:$2 删除镜像 docker run --name mall-task -v /config/application_task.yml:/application_task.yml -v /var/log/task:/var/logs -e spring.config.location=/application_task.yml -d -p 8090:8090 ip:5000/mall-task:$1 #挂载式启动

     

    最新回复(0)