shynome / shynome.github.io

8 stars 0 forks source link

gogs 部署 drone.io 踩的坑 #1

Closed shynome closed 1 year ago

shynome commented 6 years ago

评价先行

先列下 drone.io 的优点, 免得你们看到这些坑就放弃了它


第一个坑

一开始按照官方教程设置, 把 drone serverdrone agent 这两个服务跑了起来, 但总是在半个小时左右的时候失去连接, 找来找去最后在社区找到了解决方案, 好像是因为 docker stack 的负载均衡代理缘故(也可能不是, 我也是个小白, 对此不是很明白), 添加一个选项就行了, 如下.

# docker stack compose 的 版本得升到 3.2 才能使用 { service: { deploy: endpoint_mode: dnsrr } } 选项
version: '3.2'

services:
  # gogs ci
  drone_server:
    image: drone/drone:0.8.5
    deploy:
      replicas: 1
+     endpoint_mode: dnsrr
      resources:
        limits:
          memory: 50M
    depends_on:
    - gogs
    environment:
    - DRONE_DATABASE_DRIVER=mysql
    - 'DRONE_DATABASE_DATASOURCE=root:root@tcp(mysql:3306)/drone?parseTime=true'
    - DRONE_OPEN=true
    - DRONE_HOST=http://drone_server:9000
    - DRONE_GOGS=true
    - DRONE_GOGS_URL=http://gogs.hostname.com
# 如果 gogs 是需要登录才能查看的, 那么就需要开启 PRIVATE_MODE, 这就是第二个坑的解决方案
+   - DRONE_GOGS_PRIVATE_MODE=true
    - DRONE_SECRET=drone
    - DRONE_ADMIN=shynome
  # gogs ci worker
  drone_agent:
    image: drone/agent:0.8.5
    deploy:
      replicas: 1
+     endpoint_mode: dnsrr
      resources:
        limits:
          memory: 50M
    command: agent
    depends_on:
    - drone_server
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock:rw
    environment:
    - DRONE_SERVER=drone_server:9000
    - DRONE_SECRET=drone

第二个坑

第二个坑不知道是 drone.io 还是 gogs 的坑, 重现步骤

看起来是 gogs 没有管全局设置, 把公开库视为全网都可以访问的, 从而没有传 usernametokendrone.io , 导致 clone 失败

临时的解决方案


shynome commented 6 years ago

新坑

# 结尾不能带 / ,  http://gogs.hostname.com/ 这样的的话会授权失败
DRONE_GOGS_URL: http://gogs.hostname.com
shynome commented 1 year ago

直接使用gitea ci/cd