Drone CI 安装
warning:
这篇文章距离上次修改已过550天,其中的内容可能已经有所变动。
Drone CI是基于Dockers的下一代CICD工具,与Git源结合更加紧密,且轻量化,并解决了很多Jenkins的痛点,先来看看它的架构。
安装
安装前需要装好Docker环境(建议)。
安装Git
Drone CI是和代码仓库高度耦合的,所以需要依赖一个具体的代码仓库源。这里我使用的是Gitea,可以参考官网的部署脚本。
Gitea官网
创建OAuth应用(Gitea)
因为Drone CI和Git仓库源是高度耦合的,权限与账号也都是基于Git的。所以需要在仓库源中创建一个OAuth应用给Drone CI使用。
登录Gitea, 右上角头像 -> 设置 -> 应用。就可以在下方看到新建应用:
应用名称填写随意,建议用Drone来标识所属应用。重定向URI填写Drone地址/login即可。
保存后记得将密钥保存下来(后续密钥不会再显示了,只有重置)。
安装 Drone CI Server
通过Docker Compose进行安装(基于Gitea):
version: "3.9"
services:
drone:
image: drone/drone:2
container_name: drone
environment:
- DRONE_GITEA_SERVER=git地址
- DRONE_GITEA_CLIENT_ID=申请的应用ID
- DRONE_GITEA_CLIENT_SECRET=申请的应用密钥
- DRONE_RPC_SECRET=自定义RPC链接密钥
- DRONE_SERVER_HOST=域名
- DRONE_SERVER_PROTO=http(s)
- DRONE_USER_CREATE=可以指定管理员(用户名是Gitea里的用户名),格式:username:用户名,admin:true
- DRONE_GIT_ALWAYS_AUTH=true
- DRONE_LOGS_DEBUG=true
- DRONE_LOGS_TEXT=true
- DRONE_LOGS_PRETTY=true
- DRONE_LOGS_COLOR=true
volumes:
- /docker/drone/data:/data
ports:
- 8080:80
restart: always
安装 Drone Runner
Drone CI的构建是完全交给Runner处理的,Runner从Server拉取构建任务,然后反馈给Server。这一点和Jenkins是相反的,Jenkins通常是作为Master + Server的角色,把任务分发给构建机。
Runner的yml脚本:
version: "3.9"
services:
drone-runner:
image: drone/drone-runner-docker:1
container_name: drone-runner
environment:
- DRONE_RPC_PROTO=http(s)
- DRONE_RPC_HOST=Server地址(不需要带协议,只填写域名/ip+端口即可)
- DRONE_RPC_SKIP_VERIFY=true # 是否跳过ssl验证
- DRONE_RPC_SECRET=Server中定义的连接密钥
- DRONE_RUNNER_CAPACITY=最大的同时构建数
- DRONE_RUNNER_NAME=构建机名称(但是没有看到哪里有显示)
- DRONE_TRACE=true
- DRONE_DEBUG=true
ports:
- 8000:3000 # 这个端口是用来查看构建详情的,没其他用
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: always
启动容器后, 查看一下日志检查是否连接上即可。
启用
部署完成后通过地址访问,第一次登陆时会自动同步仓库。耐心等待一下就可以看到账号下所有仓库了。此时还没有任何仓库被激活,需要手动选择需要激活的仓库,去激活后才会自动根据脚本构建。
激活仓库
选择需要激活的仓库,选择Settings,点击激活即可。激活后可以看到Git仓库中已经自动添加了WebHook了。
开启特权容器
激活后,将Project Settings中的Trusted选项开启,然后点击Save Changes保存配置。
评论已关闭