栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Drone CI/CD系列(三)——java语言(Springboot)之配置.drone.yml文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Drone CI/CD系列(三)——java语言(Springboot)之配置.drone.yml文件

上篇文章讲到python脚本如何搭配drone来进行部署,本篇文章来讲解java springboot如何搭配drone来进行部署集成!

简介

本文整体思路还是应用drone的docker流水线特性,整体步骤分为3步,第一步先使用maven镜像将springboot打包成为jar包,将jar从docker镜像拷贝到宿主机目录。第二步使用docker的ssh镜像将jar包build成docker的镜像。第三步将打包好的镜像构建成运行的容器。

.drone.yml

老规矩,先看配置文件

kind: pipeline # 定义对象类型,还有secret和signature两种类型
type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型
name: jar-deploy # 定义流水线名称
node:
  name: centos-runner

steps: # 定义流水线执行步骤,这些步骤将顺序执行
  - name: build-package # 流水线名称
    image: maven:3.8-openjdk-11 # 定义创建容器的Docker镜像
    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
      - name: maven-cache
        path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
      - name: maven-build
        path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
    commands: # 定义在Docker容器中执行的shell命令
      - mvn clean package # 应用打包命令
      - cp target/demo-1.0.0.jar /app/build/demo-1.0.0.jar
      - cp Dockerfile /app/build/Dockerfile
      - cp run.sh /app/build/run.sh

  - name: deploy-start
    image: appleboy/drone-ssh # SSH工具镜像
    settings:
      host: 192.168.31.83 # 远程连接地址
      username: root # 远程连接账号
      password:
        from_secret: ssh_password # 从Secret中读取SSH密码
      port: 22 # 远程连接端口
      command_timeout: 5m # 远程执行命令超时时间
      script:
        - cd /root/docker/maven/build # 进入宿主机构建目录
        - chmod +x run.sh # 更改为可执行脚本
        - ./run.sh # 运行脚本打包应用镜像并运行
    when:
      event:
        - promote

volumes: # 定义流水线挂载目录,用于共享数据
  - name: maven-build
    host:
      path: /root/docker/maven/build # 从宿主机中挂载的目录
  - name: maven-cache
    host:
      path: /root/docker/maven/cache
配置解析

    kind 类型 这里就用pipeline管道类型即可

    type 这里我们上文使用的是docker这里我们也要设置写docker

    name 就是这个管道的名称

    node对应上文讲的DRONE_RUNNER_LABELS参数用来指定哪个runner执行部署任务

    volumes这里我们先看下这个配置,其实就是相当于我们定义宿主机的目录映射到每个step中的docker的目录,我们将宿主机的/root/docker/maven/build这个路径定义成maven-build这个标识的映射,会在后面的step中使用。

    step对应的流水线步骤,每一个步骤都会使用对应的docker镜像

    step之build-package,本步骤中使用的是dockerhub中的maven:3.8-openjdk-11官方镜像,镜像中包含maven3.8和jdk11。首先step中的volumes配置,这里会引用刚刚外层定义的volumes的路径,所以相当于本步骤的中镜像目录/app/build映射到宿主机的/root/docker/maven/build这个目录。commands配置就是在对应的docker镜像中执行的命令,这里执行了基本的maven打包命令。有一点需要说明的是,这里我们将maven:3.8-openjdk-11镜像中的.m2目录映射到宿主机目录了,原因是当该镜像执行完后会被销毁,所以给maven做了个缓存,防止每次部署的时候都要重新从中央仓库下载jar,增加部署时间。

    step之when,当点击promote时,才会执行,下文图会展示

    step之deploy-start,本步骤中使用的是docker ssh镜像,来让drone可以远程的执行部署任务,先进入上部中构建的jar目录,然后运行自定义的部署脚本,下文会提供

特别说明 step中的from_secret如何配置

点击+ new secret按钮 会有如下弹窗

部署的时候,drone控制台报错无权限

原因:在部署drone服务器的时候,启动参数没有设置

DRONE_USER_CREATE 管理员用户名,建议填不然后面目录挂载会报权限不足错误,具体可查看本系列第一篇文章Drone CI/CD系列(一)——docker安装与配置

promote

当使用drone build构建完之后,点击右上角的三个点,就可以执行了创立了,并且会打一个tag,可以用来回滚使用

可以用来回滚使用使用

run.sh配置解析
#!/usr/bin/env bash
# 定义应用组名
group_name='juinjonn'
# 定义应用名称
app_name='demo'
# 定义应用版本
app_version='latest'
# 定义应用环境
profile_active='prod'
echo '----copy jar----'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 打包编译docker镜像
docker build -t ${group_name}/${app_name}:${app_version} .
echo '----build image----'
docker run -p 8181:8181 --name ${app_name} 
-e TZ="Asia/Shanghai" 
-v /etc/localtime:/etc/localtime 
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'
总结

整体springboot drone搭建部署完成,并把构建和部署分离,来保证线上发布的稳定性!

drone配置文件的部署,其实还是在于思路,就像开发逻辑一样,有了思路,其实部署各种语言都是一样的,选择适合自己项目或者公司的部署步骤!

转载说明

本篇文章禁止私自转载,如需转载请联系作者,否则必追究法律责任!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号