Drone 是一个轻量级,为容器构建的强大的持续交付平台。drone提供的功能感觉强大而不臃肿,下面就记录一下drone使用的过程。
Drone有server和agent两个组件,可以通过docker-compose实现快速安装,可以集成github,gitlab,gogs等多种代码托管平台,因为这里需要用到webhook的功能,所以就自己搭建了一个私有的gogs。gogs的搭建非常简单,也可以通过docker-compose快速启动一个。
安装Gogs
version: '2'
services:
postgres:
image: postgres:9.5
restart: always
ports:
- "5432:5432"
environment:
- "POSTGRES_USER=admin"
- "POSTGRES_PASSWORD=123456"
- "POSTGRES_DB=gogs"
networks:
- gogs
gogs:
image: gogs/gogs:latest
restart: always
ports:
- "10022:22"
- "3000:3000"
links:
- postgres
environment:
- "RUN_CROND=true"
networks:
- gogs
depends_on:
- postgres
networks:
gogs:
driver: bridge
这个一个gogs的compose文件,通过这个文件可以启动一个gogs项目。
安装Drone
version: '2'
services:
drone-server:
image: drone/drone:0.7
ports:
- 8000:8000
volumes:
- /tmp/drone:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
- DRONE_ADMIN=yqguo
- DRONE_HOST=192.168.31.114
- DRONE_SECRET=yqguo
- DRONE_GOGS=true
- DRONE_GOGS_URL=http://192.168.31.114:3000
# - DRONE_GOGS_GIT_USERNAME=yqguo
# - DRONE_GOGS_GIT_PASSWORD=123456
- DRONE_GOGS_PRIVATE_MODE=true
- DRONE_GOGS_SKIP_VERIFY=false
drone-agent:
image: drone/drone:0.7
command: agent
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=ws://drone-server:8000/ws/broker
- DRONE_SECRET=yqguo
这是drone的docker-compose文件,通过这个yaml文件可以快速启动drone项目。
启动以后用gogs的用户名密码登录如下图所示:
配置构建过程
在gogs里面新建一个项目并添加.drone.yml编译文件。
.drone.yml内容
pipeline:
build:
image: golang
commands:
- go build
配置文件就是单纯的执行了一次go build命令。
然后在drone里面开启dronetest项目构建:
到最后往dronetest里面push代码可以看到drone的构建过程: