Skip to content

gitea + drone CI/CD

Published: at 12:40

gitea: Gitea Official Website

drone server: https://docs.drone.io/server/overview/

drone runner: https://docs.drone.io/runner/overview/

安装 drone server (基于 gitea)

文档: https://docs.drone.io/server/provider/gitea/

第一步, 在 gitea 添加 OAuth2 Applications

这里的 URL,填写 drone server 的部署地址. 域名/IP 都可以,如果是 docker 部署,这里不要写 127.0.0.1 这种回环地址,需要写 192.168 这类局域网地址.

记住 Client ID 和 Client Secret

第二步 Create a Shared Secret

Terminal window
openssl rand -hex 16
068a98df4700ad90ed646e1f716e42d9

第三步 docker 部署 drone server

Terminal window
docker pull drone/drone:2

docker-compose.yml

version: "3.8"
services:
drone-server:
image: drone/drone:2
container_name: drone
restart: always
ports:
- "33000:80"
- "33001:443"
volumes:
- ./data:/data
environment:
- DRONE_GITEA_SERVER=http://192.168.50.106:3300/ # 替换为你的 Gitea 服务器地址
- DRONE_GITEA_CLIENT_ID=75f3afac-d66e-410c-9262-ec1ad78cf7cb # 替换为你的 Gitea OAuth Client ID
- DRONE_GITEA_CLIENT_SECRET=gto_hbdmxg2gfuifnqf3navblqmwlcwfbjyvhecyjk7bg44xua3v23ta # 替换为你的 Gitea OAuth Client Secret
- DRONE_RPC_SECRET=068a98df4700ad90ed646e1f716e42d9 # 替换为你的 RPC Secret
- DRONE_SERVER_HOST=192.168.50.106:30000 # 替换为你的外部主机名或 IP 地址
- DRONE_SERVER_PROTO=http # 根据需要设置为 http 或 https

安装 drone runner (docker)

https://docs.drone.io/runner/docker/installation/linux/

version: '3.8'
services:
runner:
image: drone/drone-runner-docker:1
container_name: runner
restart: always
ports:
- "33100:3000"
environment:
- DRONE_RPC_PROTO=http # drone server 的部署协议
- DRONE_RPC_HOST=192.168.50.106:33000 # drone server 的地址
- DRONE_RPC_SECRET=068a98df4700ad90ed646e1f716e42d9 # rpc secret, 与 drone server 中的配置对应
- DRONE_RUNNER_CAPACITY=2 # 可以并行执行的 runner 数量
- DRONE_RUNNER_NAME=runner-docker1 # runner 名称
- DRONE_RUNNER_LABELS=node1:docker1 # runner tag
- DRONE_UI_USERNAME=root # UI 界面登录用户名
- DRONE_UI_PASSWORD=root
- DRONE_UI_DISABLE=false # 是否支持 http UI 界面,可以通过 ports 配置的端口来访问
- DRONE_DEBUG=true
- DRONE_TRACE=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock

安装 drone runner (exec)

drone-runners/drone-runner-exec: Experimental Drone pipeline runner that executes builds directly on the host machine

有个问题是, docker 中的 runner 只能基于 docker 虚拟环境来运行,有些场景需要基于本地原生的 Windows 来执行,这就需要 drone-runner-exec

https://docs.drone.io/runner/exec/installation/windows/

但是, drone-runner-exec 已经长时间不维护了,而且最后的版本,测试使用也没有成功.

有个思路是自己写一个来做中转. 在本地 Windows 运行一个服务,运行 docker runner,在 docker runner 中调用这个本地 Windows 运行的服务. 但是有点折腾.

使用

在代码仓库中,编写 .drone.yml (也可以自定义,在 drone 中配置)


原文链接: https://blog.jgrass.cc/posts/drone-gitea-startup/

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。