部署 Drone

要求

  • 拥有公网 IP、域名 (如果你不满足要求,可以尝试在本地使用 Gogs + Drone)

  • 域名 SSL 证书 (目前国内有很多云服务商提供免费证书)

  • 熟悉 Docker 以及 Docker Compose

  • 熟悉 Git 基本命令

  • CI/CD 有一定了解

新建 GitHub 应用

登录 GitHub,在 https://github.com/settings/applications/new 新建一个应用。

部署 Drone - 图1

接下来查看这个应用的详情,记录 Client IDClient Secret,之后配置 Drone 会用到。

配置 Drone

我们通过使用 Docker Compose 来启动 Drone,编写 docker-compose.yml 文件。

  1. version: '3'
  2. services:
  3. drone-server:
  4. image: drone/drone:1
  5. ports:
  6. - 443:443
  7. - 80:80
  8. volumes:
  9. - drone-data:/data:rw
  10. - ./ssl:/etc/certs
  11. restart: always
  12. environment:
  13. - DRONE_AGENTS_ENABLED=true
  14. - DRONE_SERVER_HOST=${DRONE_SERVER_HOST:-https://drone.yeasy.com}
  15. - DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO:-https}
  16. - DRONE_RPC_SECRET=${DRONE_RPC_SECRET:-secret}
  17. - DRONE_GITHUB_SERVER=https://github.com
  18. - DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
  19. - DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
  20. drone-agent:
  21. image: drone/drone-runner-docker:1
  22. restart: always
  23. depends_on:
  24. - drone-server
  25. volumes:
  26. - /var/run/docker.sock:/var/run/docker.sock:rw
  27. environment:
  28. - DRONE_RPC_PROTO=http
  29. - DRONE_RPC_HOST=drone-server
  30. - DRONE_RPC_SECRET=${DRONE_RPC_SECRET:-secret}
  31. - DRONE_RUNNER_NAME=${HOSTNAME:-demo}
  32. - DRONE_RUNNER_CAPACITY=2
  33. dns: 114.114.114.114
  34. volumes:
  35. drone-data:

新建 .env 文件,输入变量及其值

  1. # 必填 服务器地址,例如 drone.domain.com
  2. DRONE_SERVER_HOST=
  3. DRONE_SERVER_PROTO=https
  4. DRONE_RPC_SECRET=secret
  5. HOSTNAME=demo
  6. # 必填 在 GitHub 应用页面查看
  7. DRONE_GITHUB_CLIENT_ID=
  8. # 必填 在 GitHub 应用页面查看
  9. DRONE_GITHUB_CLIENT_SECRET=

启动 Drone

  1. $ docker-compose up -d