前言
由于目前公司使用了gitlab做代码管理,但在环境部署上是用了rancher1.6。
其实也就是是gitlab+rancher+docker+drone进行持续集成
但这套是运维在用。
作为公司的一个小透明当然是没法用的。
但我很仰慕新技术啊,所以。自己动手,丰衣足食。
搭建gitea
之所以选择gitea,是因为轻量级而且满足条件了。
看了官网的文档,非常详细。
有兴趣的移步
https://docs.gitea.io/zh-cn/install-with-docker/
官网的一个例子就已经足够了
docker run -d --name=gitea -p 10022:22 -p 10080:3000 -v /var/lib/gitea:/data gitea/gitea:latest
运行起来后。直接访问IP:10080即可
这边会有个安装过程,非常简单易懂就不细说了。
我用的是本身的MySQL。
搭建drone
我开始的时候看drone的文档觉得好像没网上说的那么差
但是我后来一实践,,都是坑。附上官网文档地址https://docs.drone.io/
直接用官网的其实也可以,就是怎么也搞不到跟gitea一起
然后吧,我就一起安装算了,直接用docker-compose
version: "3.3"
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
environment:
TZ: Asia/Shanghai
volumes:
- /var/lib/gitea:/data
restart: always
networks:
- dronenet
ports:
- "10022:22"
- "1280:3000"
drone-server:
image: drone/drone:1.0.0-rc.5
container_name: drone-server
ports:
- "1380:80"
- "8000:8000"
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dnmp/drone/:/var/lib/drone/:rw
restart: always
environment:
- DRONE_GITEA_SERVER=http://172.16.8.185:1280
- DRONE_DEBUG=true
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_RUNNER_CAPACITY=2
- DRONE_SERVER_HOST=172.16.8.185
- DRONE_SERVER_PROTO=http
- DRONE_RPC_SECRET=9c3921e3e748aff725d2e16ef31fbc42
- DRONE_TLS_AUTOCERT=false
- DRONE_USER_CREATE=username:wsyceshi002,admin:true
- TZ=Asia/Shanghai
restart: always
networks:
- dronenet
drone-agent:
image: drone/agent:latest
container_name: drone-agent
command: agent
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_SERVER=http://172.16.8.185:9000
- DRONE_RPC_SECRET=9c3921e3e748aff725d2e16ef31fbc42
- DRONE_DEBUG=true
- DRONE_LOGS_DEBUG=true
- DRONE_LOGS_PRETTY=true
- DRONE_LOGS_NOCOLOR=false
- TZ=Asia/Shanghai
restart: always
networks:
- dronenet
networks:
dronenet:
总结犯过的错误和坑
yaml
格式的文件后缀是 yml (我智障)
drone-server
一定要设置一个管理员
drone-server
中的变量 DRONE_SERVER_PROTO 和 DRONE_SERVER_HOST
决定了你仓库中 webhook
的地址,如果你的域名做了 http to https
,而且你的DRONE_SERVER_PROTO
是 http
,将会产生301重定向,method
从 post
转成 ge
t,会发生error 405
drone
是用GO语言开发的,drone
使用的http
包,不支持没写协议的 url,例如 dronetest.yiranzai.top
不能被识别,要写成 http(s)://dronetest.yiranzai.top
建议测试阶段打开debug,方便部署和调试