没有废话直接上代码
version: "3"
services:
drone-server:
image: drone/drone:2.4
container_name: drone_server
ports:
- 10081:80
networks:
network:
# 在network网络下的容器内部的Ipv4地址
ipv4_address: 177.31.0.11
volumes:
- ./drone/data:/var/lib/drone/:rw
- /var/run/docker.sock:/var/run/docker.sock:rw
restart: always
environment:
- DRONE_DEBUG=true
- DRONE_DATABASE_DATASOURCE=root:passwd@tcp(you-ip:3306)/drone?parseTime=true #mysql配置,要与上边mysql容器中的配置一致
- DRONE_DATABASE_DRIVER=mysql
- DRONE_GOGS=true
- DRONE_GOGS_SERVER=http://you-ip:3000
- DRONE_PROVIDER=gogs
- DRONE_RPC_SECRET=miyao#RPC秘钥
- DRONE_SERVER_PROTO=http #这个配置决定了你激活时仓库中的webhook地址的proto
- DRONE_SERVER_HOST=you-ip:10081
- DRONE_USER_CREATE=username:admin,admin:true #管理员账号,一般是你github用户名
drone-agent:
image: drone/agent:latest
container_name: drone_agent
restart: always
networks:
network:
# 在network网络下的容器内部的Ipv4地址
ipv4_address: 177.31.0.12
depends_on:
- drone-server #依赖drone_server,并在其后启动
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- DRONE_RPC_SERVER=you-ip:10081 #drone用的http请求包,url一定要写上协议才能支持
- DRONE_RPC_SECRET=miyao#RPC秘钥,要与drone_server中的一致
- DRONE_DEBUG=true
drone-runner:
image: drone/drone-runner-docker:latest
container_name: drone_runner-docker
restart: always
ports:
- 10082:3000
networks:
network:
# 在network网络下的容器内部的Ipv4地址
ipv4_address: 177.31.0.13
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=you-ip:10081
- DRONE_RPC_SECRET=miyao
- DRONE_DEBUG=true
gogs:
container_name: drone_gogs
image: gogs/gogs
restart: always
ports:
- 3000:3000
- "3022:22"
networks:
network:
# 在network网络下的容器内部的Ipv4地址
ipv4_address: 177.31.0.14
networks:
network:
ipam:
driver: default
config:
- subnet: '177.31.0.0/16'
ci-cd .drone.yml 流程书写包含 dingTalk消息通知
# 第一条构建部署流水线
kind: pipeline
type: docker
name: runner
workspace:
base: /drone
steps:
- name: build
image: golang
commands:
- echo $GOPATH
- pwd
- go build -o go_drone
- ls -al
- chmod +x ./go_drone
- ./go_drone
---
# 第二条消息通知流水线
kind: pipeline
type: docker
name: notify
# 消息通知流水线不需要clone代码
clone:
disable: true
steps:
- name: dingtalk
image: lddsb/drone-dingtalk-message
settings:
token:
from_secret: ding_token
type: markdown
# 触发条件
trigger:
status: [success, failure]
# 依赖
depends_on: [runner]
New Build使用
Branch 写具体的分支名称
Parametes
commit commit-id hash号
message 本次提交的message内容