drone 官网 Drone CI – Automate Software Testing and Delivery
推荐使用宝塔傻瓜式一键安装宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板
安装好docker环境之后开始部署容器
这里用到的git版本软件是gogs,其他自己研究
docker版的gogs和实体机安装版的都适用
docker run -v /soft/docker/drone:/data -e DRONE_AGENTS_ENABLED=true -e DRONE_GOGS_SERVER=http://ip:3000 -e DRONE_RPC_SECRET=dronerpc666 -e DRONE_SERVER_HOST=ip:3080 -e DRONE_SERVER_PROTO=http -e DRONE_USER_CREATE=username:demon471,admin:true -e TZ="Asia/Shanghai" -p 3080:80 --restart=always --detach=true --name=drone drone/drone
-e DRONE_GOGS_SERVER=http://ip:3000 此处为gogs的访问地址
-e DRONE_RPC_SECRET=dronerpc666 dronerpc666 非固定但是部署drone-runner- 需要参数一致
-e DRONE_SERVER_HOST=ip:3080 配置drone的访问地址
-e DRONE_USER_CREATE=username:gogs,admin:true 设置管理员账号最好和gogs的管理员一致(也可以自作更改)
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -e DRONE_RPC_PROTO=http -e DRONE_RPC_HOST=ip:3080 -e DRONE_RPC_SECRET=dronerpc666 -e DRONE_RUNNER_CAPACITY=2 -e DRONE_RUNNER_NAME=runner-docker -e TZ="Asia/Shanghai" -p 3070:3000--restart always --name drone-runner drone/drone-runner-docker
-e DRONE_RPC_HOST=ip:3080 drone的访问地址
-e DRONE_RPC_PROTO=http 有证书可以是https
-e DRONE_RPC_SECRET=dronerpc666 需要和drone的配置一样
注意linux放行端口
页面输入http://ip:3080 登录你的gogs账号 建议超级管理员
1)访问ip:3080即可访问登录drone,就可以看到项目,如果没有可以点击sync同步gogs中的代码即可。
2)点击同步到的项目,可以设置drone中的项目属性
3)返回gogs中的项目设置可以看到webhook中有一个刚刚我们创建的属于drone的webhook
idea项目
【.drone.yml】文件内容
kind: pipeline # 定义对象类型,还有secret和signature两种类型
type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型
name: filesystem-drone # 定义流水线名称
#指定打包分支和触发事件
#trigger:
# branch:
# - master
# event:
# - push
steps: # 定义流水线执行步骤,这些步骤将顺序执行
- name: package # 流水线名称
image: maven:3-jdk-8 # 定义创建容器的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/filesystem.jar /app/build/filesystem.jar
- cp Dockerfile /app/build/Dockerfile
- cp run.sh /app/build/run.sh
- name: build-start
image: appleboy/drone-ssh # SSH工具镜像
settings:
host: 服务器(宿主机ip) # 远程连接地址
username: root # 远程连接账号
password:
from_secret: ssh_password # 从Secret中读取SSH密码
port: 22 # 远程连接端口
command_timeout: 5m # 远程执行命令超时时间
script:
- cd /mydata/maven/build # 进入宿主机构建目录
- chmod +x run.sh # 更改为可执行脚本
- ./run.sh # 运行脚本打包应用镜像并运行
volumes: # 定义流水线挂载目录,用于共享数据
- name: maven-build
host:
path: /mydata/maven/build # 从宿主机中挂载的目录
- name: maven-cache
host:
path: /mydata/maven/cache # 从宿主机中挂载的目录
查看地址:
其中 ssh_password需要在drone中的项目配置
【Dockerfile】文件内容
# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD filesystem.jar /filesystem.jar
# 指定docker容器启动时运行jar包
#在容器启动的时候运行命令,来启动我们的项目
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/filesystem.jar","-Xms128m","-Xmx128m","-c"]
# 指定维护者的名字
MAINTAINER demon471
run.sh
app_name='filesystem-drone'
# 瀹氫箟搴旂敤鐗堟湰
app_version='1.0.0'
# 瀹氫箟搴旂敤鐜
#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 8080:8080 --name ${app_name} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d ${group_name}/${app_name}:${app_version} \
echo '----start container----'
打包成功内容
后言:如果发现maven打包很慢可以通过修改settings.xml来提速位置/mydata/maven/cache,再次重新打包就
Docker市场 https://hub.docker.com/