文档地址:Drone官方文档搭配Gitea
Gitea创建OAuth
点击右上角个人头像 -> 设置 -> 应用 -> 管理OAuth2应用程序 中添加Drone应用。
创建共享秘钥
1openssl rand -hex 162
3# 在windwos的terminal中可能无法直接使用此条命令4# 可以在git-bash中使用此条命令
安装Drone和Runner
1services:2 drone-server:3 restart: always4 image: drone/drone:25 ports:6 - "9080:80"7 volumes:8 - ./drone:/var/lib/drone/9 - ./data:/data/10 - /var/www/blog:/dist # 挂载博客目录11 environment:12 - DRONE_GITEA_SERVER=http://gitea服务器地址 # 支持http, https13 - DRONE_GITEA_CLIENT_ID=gitea生成的OAuth2客户端ID14 - DRONE_GITEA_CLIENT_SECRET=gitea生成的OAuth2客户端密钥15 - DRONE_SERVER_HOST=drone服务器地址16 collapsed lines
16 - DRONE_SERVER_PROTO=http # 支持http, https17 - DRONE_RPC_SECRET=自定义的Drone与runner通信密钥18
19 drone-runner-docker:20 restart: always21 image: drone/drone-runner-docker:122 ports:23 - "9300:3000"24 volumes:25 - /var/run/docker.sock:/var/run/docker.sock26 environment:27 - DRONE_RPC_PROTO=http # 支持http, https28 - DRONE_RPC_HOST=drone-server29 - DRONE_RPC_SECRET=自定义的Drone与runner通信密钥30 - DRONE_RUNNER_NAME=drone-runner-docker31 - DRONE_RUNNER_CAPACITY=2
启用docker-compose:
1dcoker compose up -d
查看是否正常运行:
1root@VM-12-5-debian:~/docker-compose/drone# docker ps -a2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3a349ab3b348a 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-14009b9af35d4c 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-15
6root@VM-12-5-debian:~/docker-compose/drone# docker logs 009b9af35d4c7time="2025-01-08T03:04:00Z" level=info msg="starting the server" addr=":3000"8time="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
。
1# ...2time="2025-01-08T03:06:04Z" level=info msg="successfully pinged the remote server"3time="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=docker4# ...
这个时候打开我们的drone.cirry.cn网站就可以看到页面了。
点击Continue跳转到授权页面。
点击应用授权
后,重新跳转到drone的登录页。
填写个人信息后点击SUBMIT
进入个人仓库页面。
Drone的基本用法
第一步
默认每一个仓库都是不活动的,所以需要启用CI/CD的仓库,点击对应的仓库名称后,再点击ACTIVE REPOSITORY
。
第二步
在仓库的设置页面中打开Trusted
按钮后保存配置。
接下来,在代码仓库根目录中编写.drone.yml
文件后提交,就可以正常运行流水线了。
示例
1kind: pipeline # 定义一个管道2type: docker # 当前管道的类型3load: ""4name: deploy-astro-blog # 当前管道的名称5volumes: # 声明数据卷(此为服务器中的实际目录)6 - name: node_modules # 数据卷名称7 host: # Host Volume8 path: /root/drone/blog/node_modules # 宿主机目录,绝对路径,缓存node_modules9 - name: dist10 host:11 path: /var/www/blog/dist # 博客部署路径,绝对路径,打包目录12clone:13 disable: false # 启用代码14 depth: 115 commands:16 collapsed lines
16 - git remote -v17steps: # 定义管道的执行步骤18 - name: build19 image: gplane/pnpm:9.4.0 # 当前步骤使用的镜像20 pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载21 depends_on: [ clone ] # 依赖的步骤22 volumes: # 挂载数据卷(此为容器内的目录)23 - name: node_modules # 数据卷名称,相当于把node_modules挂载在下面的路径上24 path: /drone/src/node_modules # 容器内目录 绝对路径25 - name: dist26 path: /drone/src/dist27 commands: # 当前步骤执行的命令28 - ls29 - pnpm config set registry https://registry.npmmirror.com # 切换源30 - pnpm i # 安装node_modules包31 - pnpm run build # 执行编译
打包速度还行,以后不用在使用脚本来跑了。