搭建持续集成平台 Drone
本文首发于个人博客 Cyy’s Blog
转载请注明出处 https://cyyjs.top/blog/5feacf61d67bdd000f281382
deone是面向开发的自助持续集成平台。本文章讲解如何自己搭建部署Drone
平台,并通过在GitHub
提交代码后,自动执行构建程序。
前提条件:
- 对docker有一些了解
- 拥有一台服务器
本章所有内容可通过drone官方文档详细了解。
# Github创建Auth App
首先要在Github
中创建一个Oauth App, 因为Drone需要通过Github
授权来获取用户的仓库信息,添加钩子等。
授权回调地址,填写自己设置的访问Drone地址的域名,后加/login
设置成功后会得到Client ID
和 Client Secret
,这两个会在接下来的步骤使用到。
然后创建共享秘钥, 可通过一下方式随机生成16进制字符串
openssl rand -hex 16
# b28f06c2280fe17a444ee9282342c65b
# 编写docker-compones.yml文件
version: '3.1'
services:
drone-server:
image: drone/drone:1.10.1
container_name: drone-server
volumes:
- /workspace/docker/volume/drone:/data
restart: always
environment:
- DRONE_GITHUB_CLIENT_ID=Github Client ID
- DRONE_GITHUB_CLIENT_SECRET=Github Client Secret
- DRONE_RPC_SECRET=b28f06c2280fe17a444ee9282342c65b #共享秘钥
- DRONE_SERVER_HOST=drone.alibt.top # 主机域名
- DRONE_SERVER_PROTO=https # 协议
- DRONE_USER_FILTER=cyyjs # 指定可访问的用户
- DRONE_USER_CREATE=username:cyyjs,admin:true # 指定管理员
ports:
- 4080:80
drone-runner:
image: drone/drone-runner-docker:1
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
container_name: drone-runner
restart: always
environment:
- DRONE_RPC_HOST=drone-server
- DRONE_RPC_PROTO=http
- DRONE_RPC_SECRET=b28f06c2280fe17a444ee9282342c65b #共享秘钥
ports:
- 4081:3000
# 运行
执行以下命令运行即可
docker-compose up
等待镜像下载完成,自动运行。
# 配置nginx
域名证书有很多免费的,自行查找。
server {
listen 443 ssl;
server_name drone.alibt.top;
ssl_certificate /etc/nginx/cert/alibt/drone.alibt.top.pem;
ssl_certificate_key /etc/nginx/cert/alibt/drone.alibt.top.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://drone-server;
}
location ~* /ws {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_pass http://drone-server;
}
}
然后重启nginx,访问 https://drone.alibt.top
即可打开drone
平台页面,此时将自动跳转Github
获取授权,授权成功后,会同步Github
仓库列表。
# 项目添加自动构建
从上面的仓库列表中选择需要自动构建的仓库,点击后面的ACTIVATE
,进入配置页面。
根据选项需要进行配置。
此时会在Github
对应仓库配置里添加一条webhooks
# 编写.drone.yml文件
在项目根目录下,添加.drone.yml
然后提交代码,提交成功后,将会触发构建流程。
