drone+gitee轻量级CI/CD自动构建平台
2022/1/25 23:34:49
本文主要是介绍drone+gitee轻量级CI/CD自动构建平台,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 一、drone简介
- 二、drone+gitee
- 1. 创建oauth2应用
- 2. 生成rpc密钥
- 3. 部署drone
- 三、gitee插件
一、drone简介
drone是一个golang编写的轻量级持续集成平台,它是原生Docker,所有的进程都在容器内进行。这使得Drone非常适合像Kubernetes这样的平台,因为在Kubernetes上启动容器很简单。
如果你觉得jenkins太复杂可以尝试以下使用drone替代,drone所有构建步骤都是以docker镜像提供的插件完成的,官方和社区都提供了很多高质量的插件(类似钉钉消息、微信消息、aws支持等),如果业务太复杂也可以自行开发插件或使用一个基础镜像通过脚本完成构建。
使用过程中如发现bug可以到社区寻求帮助
官方及社区收录的插件库
drone github仓库
drone社区
二、drone+gitee
drone从v2.7.2
版本开始支持gitee
官方文档
1. 创建oauth2应用
右上角头像->设置->第三方应用->创建应用
配置如下图,应用主页填你准备部署drone的服务器域名或ip,应用回调地址在drone访问链接后跟/login
,权限至少选择projects
、pull_requests
、notes
、hook
2. 生成rpc密钥
drone server和drone runner通信的密钥,可以使用openssl
生成,这个密钥后面部署drone server
和drone runner
都需要使用
$ openssl rand -hex 16 bea26a2221fd8090ea38720fc445eca6
3. 部署drone
直接使用docker-compose
部署,按配置说明修改对应配置
简单的docker-compose.yml
version: '3' services: server: image: drone/drone ports: - 80:80 - 443:443 volumes: - /opt/drone/data:/data:rw networks: - drone restart: always environment: # 你的服务器域名或ip - DRONE_SERVER_HOST=your.company.com # 使用的协议http或者https - DRONE_SERVER_PROTO=http # runner通信密钥,后面runner也要配置相同的值 - DRONE_RPC_SECRET=d7daxxxxxxxxxxxx1a8b # gitee第三方应用client id - DRONE_GITEE_CLIENT_ID=dba7xxxxxxxxxxxx4eb9 # gitee第三方应用client secret - DRONE_GITEE_CLIENT_SECRET=ea5exxxxxxxxxxxx748d # 默认创建账户,设置你的gitee用户名,这样你登录后是作为管理员 - DRONE_USER_CREATE=username:your_gitee_username,admin:true runner: image: drone/drone-runner-docker restart: always ports: - 3000:3000 networks: - drone depends_on: - server volumes: # 挂载宿主机的docker sock,runner实际还是使用的宿主机的docker daemon - /var/run/docker.sock:/var/run/docker.sock:rw environment: # 与drone server通信的协议http/https - DRONE_RPC_PROTO=http # drone server服务器 - DRONE_RPC_HOST=your.company.com # drone server rpc密钥 - DRONE_RPC_SECRET=d7daxxxxxxxxxxxx1a8b # 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 networks: drone:
更为详细的docker-compose.yml
version: '3' services: server: image: drone/drone ports: - 80:80 - 443:443 volumes: - /opt/drone/data:/data:rw networks: - drone restart: always environment: # 你的服务器域名或ip - DRONE_SERVER_HOST=your.company.com # 使用的协议http或者https - DRONE_SERVER_PROTO=https # 使用https时你的ssl证书路径 - DRONE_TLS_CERT=/data/your.company.com.pem # 使用https时你的ssl证书密钥路径 - DRONE_TLS_KEY=/data/your.company.com.key # runner通信密钥,后面runner也要配置相同的值 - DRONE_RPC_SECRET=d7daxxxxxxxxxxxx1a8b # gitee第三方应用client id - DRONE_GITEE_CLIENT_ID=dba7xxxxxxxxxxxx4eb9 # gitee第三方应用client secret - DRONE_GITEE_CLIENT_SECRET=ea5exxxxxxxxxxxx748d # 默认创建账户,设置你的gitee用户名,这样你登录后是作为管理员 - DRONE_USER_CREATE=username:your_gitee_username,admin:true # drone各日志功能 - DRONE_LOGS_DEBUG=true - DRONE_LOGS_TRACE=true - DRONE_LOGS_COLOR=true - DRONE_LOGS_PRETTY=true - DRONE_LOGS_TEXT=true runner: image: drone/drone-runner-docker restart: always ports: - 3000:3000 networks: - drone depends_on: - server volumes: - /var/run/docker.sock:/var/run/docker.sock:rw environment: # 与drone server通信的协议http/https - DRONE_RPC_PROTO=https # drone server服务器 - DRONE_RPC_HOST=your.company.com # drone server rpc密钥 - DRONE_RPC_SECRET=d7daxxxxxxxxxxxx1a8b # 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=runner_admin_username # 访问runner ui时的登录密码 - DRONE_UI_PASSWORD=runner_admin_password networks: drone:
三、gitee插件
由于gitee没有提供类似github/gitlab那样status的api,所以在pr中调整到CI平台基本只能靠评论。可以使用这个插件kit101z/drone-plugin-gitee-pulls
实现在pr中更新build任务状态及快速访问的链接。
github status效果图:
kit101z/drone-plugin-gitee-pulls
仓库文档也提供了示例,以下为效果图:
镜像链接:https://hub.docker.com/r/kit101z/drone-plugin-gitee-pulls
源码仓库:https://github.com/kit101/drone-plugin-gitee-pulls
这个插件有个问题就是开始时会在clone步骤之后执行,clone时间比较长的时候,pr中的评论会延迟很久。
后续计划利用drone的webhook实现。
这篇关于drone+gitee轻量级CI/CD自动构建平台的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!