之前都是用jenkins+gitee 做的CI方案,发现朋友在使用Drone构建。运行资源占用比较小。适合个人做CI。
Drone
Drone是一款基于容器技术的持续集成工具,使用简单的YAML配置文件即可完成复杂的自动化构建、测试、部署任务,在Github上已经有22K+Star。
- 相比于jenkins使用起来简介很多,大多时候没那么多需求。这个也足够满足基础需求。
- 使用gitee + drone 演示
- 官方文档
快速安装
采用docker-compose部署。
version: '3'
networks:
network-drone:
driver: bridge
services:
server:
container_name: server
image: drone/drone:2
networks:
- network-drone
ports:
- "9000:80"
volumes:
- ./data/drone/:/var/lib/drone/
- ./data/data/:/data/
environment:
- DRONE_SERVER_HOST=xxx.www.com # 你的服务器域名或ip
- DRONE_SERVER_PROTO=https # 使用的协议http或者https
- DRONE_GITEE_CLIENT_ID= #gitee生成的OAuth2客户端ID
- DRONE_GITEE_CLIENT_SECRET= #gitee生成的OAuth2客户端密钥
- DRONE_RPC_SECRET= # openssl rand -hex 16 可以用这个命令生成
- DRONE_USER_CREATE=username:name,admin:true # 默认创建账户,设置你的gitee用户名,这样你登录后是作为管理员
# drone各日志功能
- DRONE_LOGS_DEBUG=true
- DRONE_LOGS_TRACE=true
- DRONE_LOGS_COLOR=true
- DRONE_LOGS_PRETTY=true
- DRONE_LOGS_TEXT=true
runner:
container_name: runner
image: drone/drone-runner-docker:1
networks:
- network-drone
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
# 与drone server通信的协议http/https
- DRONE_RPC_PROTO=http
# drone server服务器
- DRONE_RPC_HOST=server
# drone server rpc密钥
- DRONE_RPC_SECRET= #自定义的Drone与runner通信密钥
# runner name,标识runner
- DRONE_RUNNER_NAME=runner
# runner最多同时执行任务数
- DRONE_RUNNER_CAPACITY=2
# runner使用协议http/https
- DRONE_HTTP_PROTO=http
# runner的host,server向runner主动推送任务时使用此配置,如果在不同服务器此处应该设置为runner的域名或ip,此处是同一服务器,所以使用docker service name是可以直接访问的
- DRONE_HTTP_HOST=runner
# 是否开启runner ui
- DRONE_UI_DISABLE=true
# 访问runner ui时的登录用户名
- DRONE_UI_USERNAME=admin
# 访问runner ui时的登录密码
- DRONE_UI_PASSWORD=pwd
需要修改配置
- 使用
docker-compose -f docker-compose.yaml up -d
构建并启动
- 如果gitee配置没问题,登陆会跳转到gitee授权界面。