前言
由于目前公司使用了gitlab做代碼管理,但在環(huán)境部署上是用了rancher1.6。
其實(shí)也就是是gitlab+rancher+docker+drone進(jìn)行持續(xù)集成
但這套是運(yùn)維在用。
作為公司的一個(gè)小透明當(dāng)然是沒(méi)法用的。
但我很仰慕新技術(shù)啊,所以。自己動(dòng)手,豐衣足食。
搭建gitea
之所以選擇gitea,是因?yàn)檩p量級(jí)而且滿足條件了。
看了官網(wǎng)的文檔,非常詳細(xì)。
有興趣的移步
https://docs.gitea.io/zh-cn/install-with-docker/
官網(wǎng)的一個(gè)例子就已經(jīng)足夠了
docker run -d --name=gitea -p 10022:22 -p 10080:3000 -v /var/lib/gitea:/data gitea/gitea:latest
運(yùn)行起來(lái)后。直接訪問(wèn)IP:10080即可
這邊會(huì)有個(gè)安裝過(guò)程,非常簡(jiǎn)單易懂就不細(xì)說(shuō)了。
我用的是本身的MySQL。

搭建drone
我開(kāi)始的時(shí)候看drone的文檔覺(jué)得好像沒(méi)網(wǎng)上說(shuō)的那么差
但是我后來(lái)一實(shí)踐,,都是坑。附上官網(wǎng)文檔地址https://docs.drone.io/
直接用官網(wǎng)的其實(shí)也可以,就是怎么也搞不到跟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:
總結(jié)犯過(guò)的錯(cuò)誤和坑
yaml 格式的文件后綴是 yml (我智障)
drone-server 一定要設(shè)置一個(gè)管理員
drone-server 中的變量 DRONE_SERVER_PROTO 和 DRONE_SERVER_HOST決定了你倉(cāng)庫(kù)中 webhook 的地址,如果你的域名做了 http to https ,而且你的DRONE_SERVER_PROTO 是 http,將會(huì)產(chǎn)生301重定向,method 從 post 轉(zhuǎn)成 get,會(huì)發(fā)生error 405
drone 是用GO語(yǔ)言開(kāi)發(fā)的,drone 使用的http 包,不支持沒(méi)寫(xiě)協(xié)議的 url,例如 dronetest.yiranzai.top 不能被識(shí)別,要寫(xiě)成 http(s)://dronetest.yiranzai.top
建議測(cè)試階段打開(kāi)debug,方便部署和調(diào)試
例子運(yùn)行
根據(jù)以上的例子
https://juejin.im/post/5c81f3e6f265da2d8f4767a1