持续集成平台Drone CI的Docker部署和使用
本文使用Gitee代码仓储,Linux的Docker环境下,演示如何使用部署Drone和自动化构建项目
1.创建Gitee应用
个人》设置》第三方应用,创建一个第三方应用。
Client ID
应用自行生成Client Secret
应用自行生成应用主页
Drone部署地址,我使用这样的格式:https://drone.xxx.com应用回调地址
Drone使用账号授权后的回调地址,我使用这样的格式:https://drone.xxx.com/login
2.Dcoker-compose部署Drone服务
drone:
image: "drone/drone:2"
container_name: drone
privileged: true
volumes:
- /etc/localtime:/etc/localtime
- /data/drone/data:/data
environment:
- DRONE_GITEE_CLIENT_ID=xxx
- DRONE_GITEE_CLIENT_SECRET=xxx
- DRONE_RPC_SECRET=xxx
- DRONE_SERVER_HOST=drone.xxx.com
- DRONE_SERVER_PROTO=https
- DRONE_USER_CREATE=username:xxx,admin:true
networks:
- backend
restart: always
DRONE_GITEE_CLIENT_ID
上一步骤生成的Client IDDRONE_GITEE_CLIENT_SECRET
上一步骤生成的Client SecretDRONE_RPC_SECRET
密钥,推荐使用32位GUID,如:2a5g0c0eb7avy7ed18fd198785ed1d86DRONE_SERVER_HOST
Drone部署地址DRONE_SERVER_PROTO
Drone部署协议DRONE_USER_CREATE
创建管理员账户,这里对应为gitee的用户名(也就是登录的账号,不是昵称)(填错了会导致自动化部署失败),如:username:myname,admin:true
Drone服务部署好后,注意要使用Nginx将Drone服务进行web转发,Drone容器默认对外暴露80和443端口,在networks网络环境下自行配置转发即可,侦听的域名即为上面所说的部署地址。
3.Dcoker-compose部署Drone的Runner服务
Runner是Drone的执行服务,负责对Drone的命令进行轮询侦听和执行,可以部署多个Runner同时工作
runner:
image: "drone/drone-runner-docker:1"
container_name: runner
privileged: true
depends_on:
- drone
volumes:
- /etc/localtime:/etc/localtime
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_PROTO=https
- DRONE_RPC_HOST=drone.xxx.com
- DRONE_RPC_SECRET=xxx
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=runner
- DRONE_RUNNER_LABELS=server:guangzhou
- DRONE_DEBUG=true
- DRONE_LOGS_DEBUG=true
- DRONE_LOGS_TRACE=true
- TZ=Asia/Shanghai
networks:
- backend
restart: always
DRONE_RPC_PROTO
Drone部署协议DRONE_RPC_HOST
Drone部署地址DRONE_RPC_SECRET
Drone服务一致的密钥DRONE_RUNNER_CAPACITY
限制 Runner 可以执行的并发 Pipeline 的数量DRONE_RUNNER_NAME
Runner的名称DRONE_RUNNER_LABELS
Runner标签,可在项目脚本上指定一个Runner执行DRONE_DEBUG
是否开启debugDRONE_LOGS_DEBUG
是否开启debug日志DRONE_LOGS_TRACE
是否开启trace日志TZ=Asia/Shanghai
时区选择
4.使用Drone服务
打开Drone部署地址
点击 Continue
继续
完成授权后,Drone会得到账号下所有的仓储,根据需要激活对应的仓储服务
仓储项目配置,保存配置即可
接下来我们在仓储的根目录,建立一个 .drone.yml
脚本
kind: pipeline
type: docker
name: test
clone:
disable: true
node:
server: runner1
steps:
- name: build test
image: appleboy/drone-ssh
settings:
host: 127.0.0.1
username: root
password:
from_secret: password
port: 22
command_timeout: 5m
script:
- cd /data/code/test
- git pull --progress -v --no-rebase "origin"
- cd /data/ymls
- sh build.sh
个人喜欢使用 appleboy/drone-ssh 直接远控服务器进行项目发布(也有其它的方式进行项目构建,发送编译包等,自行探索)
node.server
指定Runner才可以执行steps.settings.password.from_secret
使用加密密文。如果脚本有敏感信息(如服务器密码),是不适合直接写在脚本上的,可使用Drone自带的密文进行替换steps.settings.script
插件drone-ssh会逐行执行脚本,只需要提前将编译脚本放进服务器即可完成代码拉取,编译,发布的所有过程
注意:gitee的仓库名称和git地址一定要一致,否则webhook会提示仓库不存在,应该是属于bug
5.更多插件
Drone支持很多插件,比如钉钉推送,附上插件地址
- 0
- 0
-
分享