shynome / shynome.github.io

8 stars 0 forks source link

Drone 1.0 部署参考 #14

Open shynome opened 5 years ago

shynome commented 5 years ago

最近 Drone 发布 1.0-RC3 的版本, 更新支持了 多机器(每个机器上运行一个agent), 多平台(windows, arm ...) 构建 官方文档链接: https://docs.drone.io/

下面是我基于 gitlab 的部署文件:

# filename: /work/docker-compose.yml
version: '3.6'
volumes:
  caddy:
services: 
  proxy:
    # 一个用 caddy 来做反向代理的镜像
    image: shynome/caddy
    labels: { name: proxy }
    ports: 
    - { mode: host, protocol: tcp, target: 80, published: 80 }
    - { mode: host, protocol: tcp, target: 443, published: 443 }
    volumes: 
    - caddy:/root/.caddy
    - /work/proxy.d:/etc/proxy.d
    logging: &logging
      options: { max-size: "200k", max-file: "10" }
    deploy:  &deploy
      replicas: 1
      restart_policy: { condition: on-failure, max_attempts: 3 }
      update_config: { parallelism: 0, failure_action: rollback, max_failure_ratio: 1, order: stop-first }
  # gogs ci
  drone_server:
    image: drone/drone:1.0.0-rc.3
    logging: { <<: *logging }
    deploy: &drone_deploy
      replicas: 1
    volumes: [ '/var/lib/drone:/data' ]
    # 不用 mysql 的话就通过 volume 挂载数据卷来保存 sqlite3 的数据库文件
    # depends_on: [ mysql ]
    environment:
    # - 'DRONE_DATABASE_DATASOURCE=drone:drone@tcp(mysql:3306)/drone_1?parseTime=true'
    # - DRONE_DATABASE_DRIVER=mysql
    - DRONE_GIT_ALWAYS_AUTH=false
    - DRONE_GITLAB_SERVER=https://gitlab.com
    - DRONE_GITLAB_CLIENT_ID=xxxxxxxxxx
    - DRONE_GITLAB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxx
    - DRONE_RPC_SECRET=yyyyyyyyyyyyyyy
    - DRONE_SERVER_HOST=drone.company.com
    - DRONE_SERVER_PROTO=https
    - DRONE_TLS_AUTOCERT=false
    # 这里设置管理垣
    - DRONE_USER_CREATE=username:shynome,admin:true
    # 这个是用来过滤 用户名 和 组织 可以注册的
    - DRONE_USER_FILTER=shynome

  drone_agent:
    image: drone/agent:1.0.0-rc.3
    logging: { <<: *logging }
    deploy: { <<: *drone_deploy }
    volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ]
    environment: 
    - DRONE_RPC_SERVER=https://drone.company.com
    - DRONE_RPC_SECRET=yyyyyyyyyyyyyyy
    # 该机器运行最大同时运行的任务数
    - DRONE_RUNNER_CAPACITY=5
    # .drone.yml 里面可以指定这里的机器名字
    - DRONE_RUNNER_NAME=drone-agent1.company.com

然后这是我的 caddy 配置文件

# filename: /work/proxy.d/drone.conf
drone.company.com {
  gzip {
    not /api/stream
  }
  proxy / drone_server:80 {
    websocket
    transparent
  }
}