本文首发于个人博客 Cyy’s Blog
转载请注明出处 https://cyyjs.top/blog/5feacf61d67bdd000f281382

deone是面向开发的自助持续集成平台。本文章讲解如何自己搭建部署Drone平台,并通过在GitHub提交代码后,自动执行构建程序。

前提条件:

  1. docker有一些了解
  2. 拥有一台服务器

本章所有内容可通过drone官方文档详细了解。

# Github创建Auth App

首先要在Github创建一个Oauth App, 因为Drone需要通过Github授权来获取用户的仓库信息,添加钩子等。

授权回调地址,填写自己设置的访问Drone地址的域名,后加/login


设置成功后会得到Client IDClient 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
然后提交代码,提交成功后,将会触发构建流程。

yml文件规范