一、部署docker和docker-compose
https://www.runoob.com/docker/centos-docker-install.html
https://docs.docker.com/engine/install/centos/
二、Gitee账号创建第三方应用授权
注意服务端口,若未在80端口,需要单独写明
三、部署Drone CI
首先需要将对外服务端口在防火墙放行,若使用云平台则还需要把对应端口加入到网络安全组
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
Drone CI通过容器部署特别方便,docker-compose.yml
配置参考drone-server和drone-runner-docker官方配置:
version: '3'
services:
drone-server:
restart: always ## 容器自动重启
image: drone/drone:2
container_name: drone-server-cloudnative
networks: ## 使用自定义网络,也可以不写
- drone-net-cloudnative
ports:
- "9901:80" ## 映射到宿主机的端口
volumes:
- ./data:/var/lib/drone:rw
environment:
- DRONE_GITEE_CLIENT_ID=exxxx ## gitee中生成的CLIENT ID
- DRONE_GITEE_CLIENT_SECRET=cxxxx ## gitee中生成的SECRET
- DRONE_SERVER_HOST=ip:9901 ## 端口需要和映射至宿主机的一致
- DRONE_SERVER_PROTO=http
- DRONE_RPC_SECRET=c64bab058885900124d31250b6780307 ## openssl rand -hex 16 自动生成
- DRONE_USER_CREATE=username:xxxx,admin:true ## gitee中的用户名
- TZ=Asia/Shanghai
#- DRONE_LOGS_DEBUG=true ## 日志调试开关
#- DRONE_LOGS_TRACE=true ## 日志调试开关
- DRONE_LOGS_TEXT=true
- DRONE_LOGS_PRETTY=true
- DRONE_LOGS_COLOR=true
drone-runner-docker:
restart: always ## 容器自动重启
image: drone/drone-runner-docker:1
container_name: drone-runner-docker-cloudnative
networks:
- drone-net-cloudnative
ports:
- "9902:3000" ## 映射到宿主机的端口,用于提供web页面,显示任务执行情况,可不映射
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=drone-server-cloudnative
- DRONE_RPC_SECRET=c64bab058885900124d31250b6780307 ## 与server服务中保持一致
- DRONE_RUNNER_NAME=docker-worker
- DRONE_RUNNER_CAPACITY=2
- TZ=Asia/Shanghai
- DRONE_DEBUG=true
#- DRONE_LOGS_DEBUG=true
#- DRONE_LOGS_TRACE=true
#- DRONE_UI_USERNAME=admin ## runner的web页面用户信息
#- DRONE_UI_PASSWORD=password
depends_on:
- drone-server
networks: ## 可以不自定义
drone-net-cloudnative:
driver: bridge
运行后观察会发现时区配置未生效,是因为alpine镜像中没有Asia/Shanghai时区文件,需要进入到容器后,安装一下时区文件包,
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories ## 使用国内仓库镜像
apk add --no-cache tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ ## 若添加TZ参数,则可不执行
&& echo "Asia/Shanghai" > /etc/timezone \ ## 若添加TZ参数,则可不执行
&&rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache ## 清除缓存
四、初始化项目
访问Drone CI服务,自动跳转到Gitee授权,登录后,激活对应项目,编写drone.yml
即可
参考:https://docs.drone.io/pipeline/docker/overview/
五、注意事项
drone/drone镜像最好选择最新的版本,旧版本对gitee的支持不完整,建议是2.12之后的版本。