Drone-CI 学习笔记

大道至简。和 Jenkins 相比, Drone 就轻量的多了,并且原生支持 Docker。此外,Drone 和源码管理系统相集成,所以 Drone 天生就省去了各种账户权限的配置,直接与 gitlab 、 github 、 Bitbucket 这样的源码管理系统操作源代码的权限一致。

编写 Env 文件

由于基于 Docker 安装的 Drone 有非常繁杂的配置项,建议将部分环境变量的设置写入 Env 文件,方便下次启动时使用。以 Gitea 为例,并放在 /etc/drone/ 文件夹下。
  1. Server 部分
    DRONE_GITEA_CLIENT_ID=[ DRONE_GITEA_CLIENT_ID ]
    DRONE_GITEA_CLIENT_SECRET=[ GITEA_SECRET ]
    DRONE_GITEA_SERVER=http://[ GITEA_ADDRESS ]:[ PORT ]
    DRONE_GIT_ALWAYS_AUTH=false
    DRONE_RPC_SECRET=[ GENERATE_A_SECRET ]
    DRONE_SERVER_HOST=[ CURRENT_VPS_ADDRESS ]
    DRONE_SERVER_PROTO=http
    DRONE_USER_CREATE=username:ci-bot,admin:true
    
  2. Agent 部分
    DRONE_RPC_HOST= [ DRONE_SERVER_HOST ]
    DRONE_RPC_PROTO=http
    DRONE_RPC_SECRET=[ MASTER_SECRET ]
    DRONE_RUNNER_CAPACITY=4
    

使用 Docker 启动

  1. Server 部分
    # docker run --volume=/var/lib/drone:/data   \
    --env=DRONE_AGENTS_ENABLED=true   \
    --env-file=/etc/drone/server.env   \
    --publish=80:80   \
    --publish=443:443   \
    --restart=always   \
    --detach=true   \
    --name=drone   \
    drone/drone:1
    
  2. Agent 部分
    # docker run -d   \
    -v /var/run/docker.sock:/var/run/docker.sock   \
    -p 3000:3000  \
    --env-file=/etc/drone/agent.env   \
    --restart always   \
    --name runner   \
    drone/agent:1
    

参考资料

评论