简介
- Drone是一个现代化的CI/CD平台,相比于传统的Jenkins等平台,Drone更为轻巧,速度更快,特别是与git和容器的完美结合,大大加快了开发的部署工作。
- 本文介绍Drone如何安装并和gitea进行整合,下一篇将通过持续发布一个Java Springboot项目为例来介绍如何使用Drone。需要更详细的文档,可以查看官方网站。
准备工作
- 首先登录gitea后台,生成一个应用。记住应用的ClientID和密钥,后面要用。
- 生成一个共享密钥,以便于runner和Drone Server之间进行通讯。
# openssl rand -hex 16
1bce30a727813ba274a295e9ecf4af85
Drone安装与配置
- 本文通过docker-compose安装Drone,确认您已经安装好docker,最好设置国内代理镜像,否则有可能没法pull镜像。
vi /etc/docker/daemon.json
{
"registry-mirrors":[
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info #看看镜像是否已经改过
docker pull drone/drone:2
安装docker-compose
#sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#安装bash_completion(可选)
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.26.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
docker-compose --version
- 运行drone容器。新建docker-compose.yml,配置drone。
version: '3'
services:
drone-server:
container_name: drone-server
image: drone/drone:latest
restart: always
privileged: true
environment:
- DRONE_GITEA_SERVER=https://git.xxx.com:3000 #gitea服务地址
- DRONE_GITEA_CLIENT_ID={{}} #上一步创建完成后生成的客户端ID
- DRONE_GITEA_CLIENT_SECRET={{}} #上一步创建完成后生成的客户端密钥
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_GITEA_SKIP_VERIFY=true
- DRONE_RUNNER_CAPACITY=2
- DRONE_SERVER_PROTO=http
- DRONE_SERVER_HOST=drone.xxx.com:8005 #drone的域名,也可以是 ip:port 的组合,和第一步填写的重定向URL的域名部分一致
- DRONE_TLS_AUTOCERT=false
- DRONE_NETWORK=cicd_default
- DRONE_RUNNER_NETWORKS=cicd_default
# 这个密钥是给runner用的,上文生成的。
- DRONE_RPC_SECRET=1bce30a727813ba274a295e9ecf4af85
- DRONE_AGENTS_ENABLED=true
# 给用户admin权限
- DRONE_USER_CREATE=username:【Git 仓库当前授权的账号名】,admin:true
ports:
# 控制台页面端口
- "8005:80"
- "7443:443"
volumes:
- /data/drone:/data
drone-runner:
container_name: drone-runner
image: drone/drone-runner-docker:latest
restart: always
privileged: true
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_PROTO=http
# 如果直接使用本配置,这儿不需要改,如果部署到其他服务器,需要填server的域名
- DRONE_RPC_HOST=drone-server
# server配置的DRONE_RPC_SECRET
- DRONE_RPC_SECRET=1bce30a727813ba274a295e9ecf4af85
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=drone-runner
- DRONE_RPC_SKIP_VERIFY=true
# 下面注释的是runner的控制台,没必要加上,server可以直接看到
# - DRONE_UI_USERNAME=root
# - DRONE_UI_PASSWORD=root
ports:
- 3001:3000
docker-compose up -d
访问http://drone.xxx.com:8005即可进入drone,Drone的安装和配置就算成功了。docker有多种runner,适用于不同的场景,大家可以自己去研究。
评论区