告別 Jenkins ?這套輕量級自動化部署方案,讓你輕松上車!
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
1.編寫 .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
2.編寫 Dockerfile 文件
FROM openjdk:17
ADD muqing-admin-0.0.1.jar /home/app.jar
EXPOSE 8080
CMD ["java", "-jar", "/home/app.jar"]
3.編寫 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中配置的流水線步驟:
(1) 從 Git 倉庫中拉取項目代碼
(2) Maven 打包 Java 項目
(3) Docker 部署
總結
Drone 是一款功能強大、易于使用的 CI/CD 工具,提供了豐富的插件,可以擴展其功能。Drone 采用輕量級的基于 Docker 的架構,易于部署和管理,重點是免費。Drone 和 Jenkins 都是優秀的 CI/CD 工具,選擇哪一款取決于你的項目需求和團隊規模。如果您追求簡單易用,Drone 是一個不錯的選擇。