持续集成-droneCI-docker部署

持续集成-droneCI-docker部署

导航

  1. 简介
  2. 部署
  3. 实例1 - nodejs 项目
  4. 实例2 - go 项目

简介

目前使用 docker-compose 的方式应该是主流的方式

部署

TODO: 待完善

docker-compose.yml

注解:

  1. registry.wait 为离线的私有仓库,
    git.services.wait 为离线的 gitea 仓库
  2. 用户 master 和 slave 通信的 DRONE_RPC_SECRET 是随便生成的;
  3. Gitea OAuth 需要在 gitea 上配置一个应用和返回时的地址
  4. 特别注意的是 drone 没有账号体系,使用的是 gitea 里面的账号;
    这里指定管理员时,需要指定 gitea 的用户登录帐号, 注意不是别名或邮箱地址。
  5. 本例使用了 traefik 作为统一的入口
  6. 存储和网络都是 external 类型的, 所以需要手动创建
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
version: '3'

services:

  drone-server:
    image: registry.wait/cwx/drone/drone:2.16.0
    # ports:
    #   - 80:80
    #   - 443:443

    restart: unless-stopped
    networks:
      - services
    # privileged: true
    environment:

      # GITEA 配置(OAuth2)

      # Gitea OAuth 客户端 ID
      - DRONE_GITEA_CLIENT_ID=3dee43ca-55c2-4878-b912-5fe892cc6f4b
      # Gitea OAuth 客户端密钥
      - DRONE_GITEA_CLIENT_SECRET=gto_rkxuxkaneyrxpuji5i3hwvunhlzd3sfhhifhn4z5qj23u6hz2nu3
      # Gitea 服务器地址
      - DRONE_GITEA_SERVER=https://git.services.wait
      # - DRONE_GITEA_SERVER=http://10.2.1.5:3000

      # 和 runner 通信的 rpc 密钥
      - DRONE_RPC_SECRET=12e42a821c41754db091b62d899edff7

      # drone server 的服务地址; IP或域名
      - DRONE_SERVER_HOST=drone.services.wait

      # - DRONE_TLS_AUTOCERT=false

      - DRONE_SERVER_PROTO=https

      # - DRONE_SERVER_PROTO=https
      # - DRONE_TLS_CERT=/certs/services.wait.pem
      # - DRONE_TLS_KEY=/certs/services.wait-key.pem

      - DRONE_LOGS_DEBUG=true

      # - DRONE_GIT_ALWAYS_AUTH=false

      # 创建管理员账户, 这里对应为 gitee 的用户名(也就是登录的账号,不是昵称)
      # 也就是说 这个外部帐号会作为管理员
      # 说明, 这里应该是 gitee 内的登录帐号, 不是别名或邮箱
      - DRONE_USER_CREATE=username:chenwx,admin:true

      # 数据库默认是 sqlite
      # - DRONE_DATABASE_DRIVER=mysql
      # - DRONE_DATABASE_DATASOURCE=root:password@tcp(1.2.3.4:3306)/drone?parseTime=true
    volumes:
      - drone_data:/data
      # - ./ssl/services.wait.pem:/certs/services.wait.pem:ro
      # - ./ssl/services.wait-key.pem:/certs/services.wait-key.pem:ro
      - ./ssl/cwxCA.pem:/etc/ssl/certs/cwxCA.pem:ro
    labels:
      - "service_name=drone"
      - "traefik.enable=true"
      - "traefik.http.routers.droneHttps.entrypoints=https"
      - "traefik.http.routers.droneHttps.service=droneServer"
      - "traefik.http.routers.droneHttps.rule=Host(`drone.services.wait`)"
      - "traefik.http.routers.droneHttps.tls=true"
      - "traefik.http.services.droneServer.loadbalancer.server.port=80"
    logging:
      options:
        labels: "service_name"


  drone-docker-runner:
    # container_name: drone-runner
    image: registry.wait/cwx/drone/drone-runner-docker:1.8.3
    # restart: always
    # privileged: true
    networks:
      - services
    environment:

      # 用于连接到 Drone 服务器的协议; http 或 https
      # - DRONE_RPC_PROTO=https
      - DRONE_RPC_PROTO=https

      # 用于连接到 Drone 服务器的主机名
      - DRONE_RPC_HOST=drone.services.wait

      # server rpc key
      - DRONE_RPC_SECRET=12e42a821c41754db091b62d899edff7

      # 限制运行程序可以执行的并发管道数
      - DRONE_RUNNER_CAPACITY=2

      # 自定义 docker runner 节点名称
      - DRONE_RUNNER_NAME=docker-runner-1
      # - DRONE_RUNNER_NETWORKS=drone_default

      # - DRONE_DEBUG=true                      # 调试相关, 部署的时候建议先打开
      # - DRONE_LOGS_DEBUG=true                 # 调试相关, 部署的时候建议先打开
      # - DRONE_LOGS_TRACE=true                 # 调试相关, 部署的时候建议先打开
      - TZ=Asia/Shanghai

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/wait/data/ca/cwxCA.pem:/etc/ssl/certs/cwxCA.pem:ro


volumes:
  drone_data:
    external: true


networks:
  services:
    external: true

微信搜索IT运维小秋

Licensed under CC BY-NC-SA 4.0
转载或引用本文时请遵守许可协议,知会作者并注明出处
不得用于商业用途!
最后更新于 2023-03-17 00:00 UTC