搭建gitea+drone完成小团队的CD/CI

前言

由于目前公司使用了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。

我这边是改了1280的端口访问的!

搭建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_PROTOhttp,将会产生301重定向,methodpost 转成 get,会发生error 405
drone 是用GO语言开发的,drone 使用的http 包,不支持没写协议的 url,例如 dronetest.yiranzai.top 不能被识别,要写成 http(s)://dronetest.yiranzai.top
建议测试阶段打开debug,方便部署和调试

例子运行

根据以上的例子
https://juejin.im/post/5c81f3e6f265da2d8f4767a1

你可能感兴趣的:(搭建gitea+drone完成小团队的CD/CI)