为什么使用Drone
为了达到持续集成和持续交付,必须要提高自动构建/测试/发布工作流的过程,除了使用Git+Jekins的组合,我发现了另一个组合Gogs+Drone,当然Drone也可以组合Github、Gitlab等,然后因为Drone比Jekins好的一点是,比较轻量级,而且界面优雅,安装使用Docker直接拉取镜像,能高效集成流水线化测试,编译和部署
如何构建Gogs+Drone
1.Linux环境中安装Docker服务
#具体安装哪些服务,参考https://www.runoob.com/docker/centos-docker-install.html
systemctl status docker.service
#如果起不来,查看下这个文件,需要tab一下空格,然后再start docker就起来了
[root@172-0-10-194 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://qiyb9988.mirror.aliyuncs.com"]
}
2.安装Gogs
在宿主机上下载Gogs的镜像
docker pull gogs/gogs
运行Gogs镜像
docker run -p 10022:22 -p 10080:3000 --name=gogs \
-e TZ="Asia/Shanghai" \
-v /mydata/gogs:/data \
-d gogs/gogs
登录界面安装Gogs配置(***第一次登陆时必须配置的参数)
服务端Gogs管理项目(***创建仓库时记得选择使用选定的文件和初始化仓库)
客户端自己本地管理项目(使用git远程下载和上传)
git clone http://xxxx
git push
3.安装Drone
安装镜像
# Drone的Server
docker pull drone/drone:1
# Drone的Runner
docker pull drone/drone-runner-docker:1
运行drone镜像和drone-runner镜像
docker run \
-v /mydata/drone:/data \
-e DRONE_AGENTS_ENABLED=true \
-e DRONE_GOGS_SERVER=http://172.0.10.194:10080 \
-e DRONE_RPC_SECRET=dronerpc666 \
-e DRONE_SERVER_HOST=172.0.10.194:3080 \
-e DRONE_SERVER_PROTO=http \
-e DRONE_USER_CREATE=username:huangtao,admin:true \
-e TZ="Asia/Shanghai" \
-p 3080:80 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:1
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=172.0.10.194:3080 \
-e DRONE_RPC_SECRET=dronerpc666 \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=runner-docker \
-e TZ="Asia/Shanghai" \
-p 3000:3000 \
--restart always \
--name runner-docker \
drone/drone-runner-docker:1
安装完后直接web登录Drone
此时创建的项目不会自动构建,还需要完成两步(***Drone上勾选参数,Gogs中指定项目创建.drone.yml文件)
kind: pipeline
name: default
steps:
- name: Hello World
image: centos
commands:
- echo Hello World
最后确认下Gogs中的项目是否能自动触发给Drone中,如果是绿色的对勾就代表打通了
下一篇打算总结写一下.drone.yml文件,以上内容有问题的欢迎随时交流