再见了 Jenkins, 使用 Drone + Gitee 实现自动化部署 SpringBoot 项目

再见了 Jenkins, 使用 Drone + Gitee 实现自动化部署 SpringBoot 项目

Drone 介绍

Drone 是一款基于 Docker 的轻量级开源 CI/CD 工具,旨在帮助开发人员自动化构建、测试和部署应用程序。它拥有简单易用的配置方式,并且支持多种流行的源代码管理平台和容器平台。

前期准备

  • 一台服务器或本地虚拟机
  • 服务器已安装 Docker、Drone
  • Gitee 仓库
  • SpringBoot 测试项目

配置 Gitee

登录 Gitee ,点击头像,找到设置,页面左侧点击 数据管理-第三方应用,创建应用,具体配置如下:

截图来自 Drone 官网

配置 Drone 项目

登录服务器中部署好的Drone web 端配置项目

  • 找到我们的 Java 项目,在 Settings 界面中开启 Trusted

  • Settings界面中点击左侧的Secrets,创建秘钥ssh_hostssh_userssh_password

配置 SpringBoot 项目

在 SpringBoot 项目根目录中创建三个文件.drone.ymlDockerfilerun.sh

编写 .drone.yml 配置文件

master分支有提交代码时,就会触发 Drone 自动部署项目

kind: pipeline
name: default

volumes:
  - name: cache
    host:
      path: /var/lib/cache
  - name: muqing-api
    host:
      path: /mydata/muqing-api

steps:
  - name: build
    image: maven:3.6.3-openjdk-17
    pull: if-not-exists
    volumes:
      - name: cache
        path: /root/.m2
      - name: muqing-api
        path: /muqing-api
    commands:
      # 开始打包maven工程
      - mvn clean package -Dmaven.test.skip=true
      # 将打包后的文件复制到宿主机映射目录
      - cp run.sh /muqing-api
      - cp muqing-admin/target/*.jar /muqing-api
      - cp muqing-admin/Dockerfile /muqing-api
  # 2.使用ssh访问主机制作镜像并运行
  - name: ssh commands
    pull: if-not-exists
    image: appleboy/drone-ssh
    settings:
      host: 
        # 从drone仓库配置中秘密空间读取服务器IP
        from_secret: ssh_host
      username: 
        # 从drone仓库配置中秘密空间读取用户
        from_secret: ssh_user
      password:
        # 从drone仓库配置中秘密空间读取密码
        from_secret: ssh_password
      port: 22
      script:
        - cd /mydata/muqing-api
        - chmod +x run.sh
        - ./run.sh
# drone执行触发器
trigger:
  branch:
    - master

编写 Dockerfile 文件

FROM openjdk:17

ADD muqing-admin-0.0.1.jar /home/app.jar

EXPOSE 8080

CMD ["java", "-jar", "/home/app.jar"]

编写 run.sh 脚本

#!/bin/bash
# 应用组名
group_name='java'
# 应用名称
app_name='muqing-api'
echo '---------- 停止旧容器 ----------'
docker stop ${app_name}
echo '---------- 删除旧容器 ----------'
docker rm ${app_name}
echo '---------- 删除旧镜像 ----------'
docker rmi ${group_name}/${app_name}
echo '---------- 打包新镜像 ----------'
docker build -t ${group_name}/${app_name} .
echo '---------- 删除无用镜像 ----------'
docker image prune -f
echo '---------- 创建新容器 ----------'
docker run -p 8080:8080 --name ${app_name} \
-e TZ="Asia/Shanghai" \
-d ${group_name}/${app_name}

部署结果

对应.drone.yml中配置的流水线步骤

从 Git 仓库中拉取项目代码

Maven 打包 Java 项目

Docker 部署

总结

Drone 是一款功能强大、易于使用的 CI/CD 工具,提供了丰富的插件,可以扩展其功能。Drone 采用轻量级的基于 Docker 的架构,易于部署和管理,重点是免费。Drone 和 Jenkins 都是优秀的 CI/CD 工具,选择哪一款取决于您的项目需求和团队规模。如果您追求简单易用,Drone 是一个不错的选择。


欢迎大家关注我的微信公众号【源梦倩影】~

在这里插入图片描述

相关推荐

  1. 使用Docker 部署jenkins 实现自动化部署

    2024-04-24 12:20:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 12:20:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 12:20:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 12:20:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 12:20:01       20 阅读

热门阅读

  1. web前端代码指南(vue3)

    2024-04-24 12:20:01       13 阅读
  2. ElasticSearch 入门学习

    2024-04-24 12:20:01       13 阅读
  3. 前后端连接完后的各种安全问题

    2024-04-24 12:20:01       13 阅读
  4. C++中的抽象类

    2024-04-24 12:20:01       16 阅读
  5. draw.io使用心得

    2024-04-24 12:20:01       14 阅读
  6. draw.io使用心得

    2024-04-24 12:20:01       14 阅读
  7. Hibernate6根据xml获取ddl sql语句

    2024-04-24 12:20:01       10 阅读
  8. Node.js 环境变量动态获取和静态获取的区别

    2024-04-24 12:20:01       12 阅读
  9. go实现异常捕捉

    2024-04-24 12:20:01       12 阅读