一、需求背景
Drone已经可以与Gogs集成,且测试可以正常构建,现在需要执行后续的自动部署操作。
二、具体实现
编写.drone.yml脚本文件
kind: pipeline
type: docker
name: test-pipeline
# #关闭自动设置Git镜像
# 此处可以不设置,将获取最新的git镜像
clone:
disable: true
steps:
image: drone/git:1.2.1
# 构建和编译Java项目
image: maven:3.8.4
volumes:
# Maven缓存目录
path: /root/.m2
# 在Docker容器内执行的命令
commands:
# 发布项目
image: appleboy/drone-ssh:1.6.4
settings:
## 部署主机的IP
host: 192.168.3.66
# 部署主机的登录账号,需从Drone中获取密钥名ssh_user的值,创建方式见下面
username:
from_secret: ssh_user
# 部署主机的登录密码,需从Drone中获取密钥名ssh_pwd的值,创建方式见下面
password:
from_secret: ssh_pwd
# 端口号
port: 22
## 设置超时
command_timeout: 10m
# 编写脚本,可根据具体情况编写
script:
# 进入宿主机的“/home/app”目录(注意:先在宿主机上创建app目录)
# 删除jar包,我测试的工程名是test
# 将编译后的jar包复制到"/home/app"下
# 执行"/home/app"下的脚本(注意:需要在“/home/app”目录下创建start.sh文件)
## 挂载宿主机目录,对应"test-build"的Maven容器的目录
volumes:
host:
path: /home/mvn/.m2
## 对应Gogs仓库分支
trigger:
branch:
编写start.sh启动脚本
cd /home/app
ps aux | grep java | grep my_test-0.0.1-SNAPSHOT.jar |grep -v grep | awk '{print $2}'| xargs kill -9
/usr/local/java/bin/java -jar my_test-0.0.1-SNAPSHOT.jar &
更新代码后,验证可以执行自动构建。