之前都是用jenkins+gitee 做的CI方案,发现朋友在使用Drone构建。运行资源占用比较小。适合个人做CI。
Drone
Drone是一款基于容器技术的持续集成工具,使用简单的YAML配置文件即可完成复杂的自动化构建、测试、部署任务,在Github上已经有22K+Star。

- 相比于jenkins使用起来简介很多,大多时候没那么多需求。这个也足够满足基础需求。
- 使用gitee + drone 演示
- 官方文档
快速安装
采用docker-compose部署。
version: '3'
networks:
  network-drone:
    driver: bridge
services:
  server:
    container_name: server
    image: drone/drone:2
    networks:
      - network-drone
    ports:
      - "9000:80"
    volumes:
      - ./data/drone/:/var/lib/drone/
      - ./data/data/:/data/
    environment:
      - DRONE_SERVER_HOST=xxx.www.com # 你的服务器域名或ip
      - DRONE_SERVER_PROTO=https # 使用的协议http或者https
      - DRONE_GITEE_CLIENT_ID= #gitee生成的OAuth2客户端ID
      - DRONE_GITEE_CLIENT_SECRET= #gitee生成的OAuth2客户端密钥
      - DRONE_RPC_SECRET= # openssl rand -hex 16 可以用这个命令生成
      - DRONE_USER_CREATE=username:name,admin:true # 默认创建账户,设置你的gitee用户名,这样你登录后是作为管理员
      # drone各日志功能
      - DRONE_LOGS_DEBUG=true
      - DRONE_LOGS_TRACE=true
      - DRONE_LOGS_COLOR=true
      - DRONE_LOGS_PRETTY=true
      - DRONE_LOGS_TEXT=true
  runner:
    container_name: runner
    image: drone/drone-runner-docker:1
    networks:
      - network-drone
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      # 与drone server通信的协议http/https
      - DRONE_RPC_PROTO=http
      # drone server服务器
      - DRONE_RPC_HOST=server
      # drone server rpc密钥
      - DRONE_RPC_SECRET= #自定义的Drone与runner通信密钥
      # runner name,标识runner
      - DRONE_RUNNER_NAME=runner
      # runner最多同时执行任务数
      - DRONE_RUNNER_CAPACITY=2
      # runner使用协议http/https
      - DRONE_HTTP_PROTO=http
      # runner的host,server向runner主动推送任务时使用此配置,如果在不同服务器此处应该设置为runner的域名或ip,此处是同一服务器,所以使用docker service name是可以直接访问的
      - DRONE_HTTP_HOST=runner
      # 是否开启runner ui
      - DRONE_UI_DISABLE=true
      # 访问runner ui时的登录用户名
      - DRONE_UI_USERNAME=admin
      # 访问runner ui时的登录密码
      - DRONE_UI_PASSWORD=pwd
需要修改配置
- 使用docker-compose -f docker-compose.yaml up -d构建并启动

- 如果gitee配置没问题,登陆会跳转到gitee授权界面。