再见了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_host
、ssh_user
、ssh_password
配置 SpringBoot 项目
在 SpringBoot 项目根目录中创建三个文件.drone.yml
、Dockerfile
、run.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 是一个不错的选择。
原文始发于微信公众号(源梦倩影):再见了Jenkins, 使用Drone+Gitee实现自动化部署SpringBoot项目
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/291887.html