文档地址:Drone官方文档搭配Gitea
Gitea创建OAuth
点击右上角个人头像 -> 设置 -> 应用 -> 管理OAuth2应用程序 中添加Drone应用。


创建共享秘钥
openssl rand -hex 16
# 在windwos的terminal中可能无法直接使用此条命令# 可以在git-bash中使用此条命令
安装Drone和Runner
services: drone-server: restart: always image: drone/drone:2 ports: - "9080:80" volumes: - ./drone:/var/lib/drone/ - ./data:/data/ - /var/www/blog:/dist # 挂载博客目录 environment: - DRONE_GITEA_SERVER=http://gitea服务器地址 # 支持http, https - DRONE_GITEA_CLIENT_ID=gitea生成的OAuth2客户端ID - DRONE_GITEA_CLIENT_SECRET=gitea生成的OAuth2客户端密钥 - DRONE_SERVER_HOST=drone服务器地址16 collapsed lines
- DRONE_SERVER_PROTO=http # 支持http, https - DRONE_RPC_SECRET=自定义的Drone与runner通信密钥
drone-runner-docker: restart: always image: drone/drone-runner-docker:1 ports: - "9300:3000" volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_RPC_PROTO=http # 支持http, https - DRONE_RPC_HOST=drone-server - DRONE_RPC_SECRET=自定义的Drone与runner通信密钥 - DRONE_RUNNER_NAME=drone-runner-docker - DRONE_RUNNER_CAPACITY=2启用docker-compose:
dcoker compose up -d查看是否正常运行:
root@VM-12-5-debian:~/docker-compose/drone# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa349ab3b348a drone/drone:2 "/bin/drone-server" 17 seconds ago Up 17 seconds 443/tcp, 0.0.0.0:9080->80/tcp, :::9080->80/tcp drone-drone-server-1009b9af35d4c drone/drone-runner-docker:1 "/bin/drone-runner-d…" 17 seconds ago Up 17 seconds 0.0.0.0:9300->3000/tcp, :::9300->3000/tcp drone-drone-runner-docker-1
root@VM-12-5-debian:~/docker-compose/drone# docker logs 009b9af35d4ctime="2025-01-08T03:04:00Z" level=info msg="starting the server" addr=":3000"time="2025-01-08T03:04:01Z" level=error msg="cannot ping the remote server" error="Post \"https://drone.cirry.cn/rpc/v2/ping\": remote error: tls: internal error"提示没有ping通,是因为我还没有配置域名加上反代,需要在域名解析中添加drone.cirry.cn的地址解析,在服务器中配置caddy的反代。
完成上述操作后再查看一下日志,提示了successfully pinged the remote server。
# ...time="2025-01-08T03:06:04Z" level=info msg="successfully pinged the remote server"time="2025-01-08T03:06:04Z" level=info msg="polling the remote server" arch=amd64 capacity=2 endpoint="https://drone.cirry.cn" kind=pipeline os=linux type=docker# ...这个时候打开我们的drone.cirry.cn网站就可以看到页面了。

点击Continue跳转到授权页面。

点击应用授权后,重新跳转到drone的登录页。

填写个人信息后点击SUBMIT进入个人仓库页面。

Drone的基本用法
第一步
默认每一个仓库都是不活动的,所以需要启用CI/CD的仓库,点击对应的仓库名称后,再点击ACTIVE REPOSITORY。

第二步
在仓库的设置页面中打开Trusted按钮后保存配置。

接下来,在代码仓库根目录中编写.drone.yml文件后提交,就可以正常运行流水线了。
示例
kind: pipeline # 定义一个管道type: docker # 当前管道的类型load: ""name: deploy-astro-blog # 当前管道的名称volumes: # 声明数据卷(此为服务器中的实际目录) - name: node_modules # 数据卷名称 host: # Host Volume path: /root/drone/blog/node_modules # 宿主机目录,绝对路径,缓存node_modules - name: dist host: path: /var/www/blog/dist # 博客部署路径,绝对路径,打包目录clone: disable: false # 启用代码 depth: 1 commands:16 collapsed lines
- git remote -vsteps: # 定义管道的执行步骤 - name: build image: gplane/pnpm:9.4.0 # 当前步骤使用的镜像 pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载 depends_on: [ clone ] # 依赖的步骤 volumes: # 挂载数据卷(此为容器内的目录) - name: node_modules # 数据卷名称,相当于把node_modules挂载在下面的路径上 path: /drone/src/node_modules # 容器内目录 绝对路径 - name: dist path: /drone/src/dist commands: # 当前步骤执行的命令 - ls - pnpm config set registry https://registry.npmmirror.com # 切换源 - pnpm i # 安装node_modules包 - pnpm run build # 执行编译打包速度还行,以后不用在使用脚本来跑了。
