基于Gitea和Drone的CI/CD


说起版本管理,CI/CD等名词的时候,大多数人可能想到的会是 Gitlab /Jenkins,但近些年随着整个软件生态的发展,给了我们一些别的选择,比如 Gitlab自带的 Gitlab-runner ,Travis ,抑或是 本文要讲述的 Gitea + Drone 组合;对于个人来说,更倾向于Gitea + Drone 组合

环境版本

gitea:1.15.2
drone:2
drone-runner-docker:linux-amd64

环境搭建

本文基于 Docker 环境,使用Docker-compose(Docker环境搭建可参考之前的文章Docker系列之安装 , Docker系列之Docker Compose)搭建 Gitea + Drone 环境
基础环境官网已经有详细的描述:GiteaDrone

  1. Gitea+Mysql对应Docker-compose脚本
version: "3"

networks:
  gitea:
    external: false

volumes:
  gitea:
    driver: local

services:
  server:
    image: gitea/gitea:1.15.2
    container_name: gitea
    environment:
      - DB_TYPE=mysql
      - DB_HOST=db:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "9300:3000"
      - "9200:22"
    depends_on:
      - db

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    ports:
    - 9306:3306
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql
  1. 启动一下(ps:切到docker-compose配置文件所在目录,或者使用 -f 指定配置文件位置)
[root@origin docker-compose]# docker-compose up -d
Creating network "docker-compose_gitea" with the default driver
Creating volume "docker-compose_gitea" with local driver
Pulling db (mysql:8)...
8: Pulling from library/mysql
a330b6cecb98: Pull complete
9c8f656c32b8: Pull complete
88e473c3f553: Pull complete
062463ea5d2f: Pull complete
daf7e3bdf4b6: Pull complete
1839c0b7aac9: Pull complete
cf0a0cfee6d0: Pull complete
1b42041bb11e: Pull complete
10459d86c7e6: Pull complete
b7199599d5f9: Pull complete
1d6f51e17d45: Pull complete
50e0789bacad: Pull complete
Digest: sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c
Status: Downloaded newer image for mysql:8
Pulling server (gitea/gitea:1.15.2)...
1.15.2: Pulling from gitea/gitea
4e9f2cdf4387: Pull complete
ceb56db4e74f: Pull complete
1b27c5440181: Pull complete
fb014a245ba1: Pull complete
bb332b9bf890: Pull complete
24834170abbb: Pull complete
13693b4b3d6a: Pull complete
Digest: sha256:852a6b4a5339aa2ee5ff27207ef4de159dc1a0787cc229247bbe658baba4e0e4
Status: Downloaded newer image for gitea/gitea:1.15.2
Creating docker-compose_db_1 ... done
Creating gitea               ... done
[root@origin docker-compose]# docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                                                              NAMES
228e1780e81f   gitea/gitea:1.15.2   "/usr/bin/entrypoint…"   2 minutes ago   Up 2 minutes   0.0.0.0:9200->22/tcp, :::9200->22/tcp, 0.0.0.0:9300->3000/tcp, :::9300->3000/tcp   gitea
55258b48484a   mysql:8              "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   33060/tcp, 0.0.0.0:9306->3306/tcp, :::9306->3306/tcp                               docker-compose_db_1
  1. 启动成功,完善配置
    访问地址:http://192.168.0.108:9300/
    在这里插入图片描述
    主要配置上面部分就可以了;这里再说两个可选配置注意事项
    在这里插入图片描述
    这里邮箱设置里面的 SMTP 主机是要包含端口的

在这里插入图片描述
这和gitlab有点区别,可以在这里个人推荐是在这里设置管理员

设置完毕,点击立即安装
在这里插入图片描述

  1. Gitea配置Drone的OAuth的授权应用,用于Drone连接Gitea
    设置 >> 应用 >> 创建OAuth2 应用
    在这里插入图片描述
    保存客户端id和密钥

  2. 生成共享密钥

openssl rand -hex 16
  1. 安装Drone及Runner
version: '3'
services:
  fan-drone-server:
    image: drone/drone:2
    ports:
      - 9080:80
      - 9443:443
    volumes:
      - /data/drone:/data
    restart: always
    environment:
      - DRONE_GITEA_SERVER=http://192.168.0.108:9300
      - DRONE_GITEA_CLIENT_ID=客户端id
      - DRONE_GITEA_CLIENT_SECRET=客户端密钥
      - DRONE_RPC_SECRET=共享密钥
      - DRONE_SERVER_HOST=192.168.0.109
      - DRONE_SERVER_PROTO=http
      - DRONE_USER_CREATE=username:root,admin:true

  fan-docker-runner:
    image: drone/drone-runner-docker:linux-amd64
    ports:
      - 9030:3000
    restart: always
    depends_on:
      - fan-drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=192.168.0.109
      - DRONE_RPC_SECRET=共享密钥和上面的相同
      - DRONE_RUNNER_CAPACITY=2
      - DRONE_RUNNER_NAME=fan-docker-runner-1

// 启动

[root@origin docker-compose]# docker-compose up -d
Creating network "docker-compose_default" with the default driver
Pulling fan-drone-server (drone/drone:2)...
2: Pulling from drone/drone
6a428f9f83b0: Pull complete
a083aabdd28e: Pull complete
f91ef8e40777: Pull complete
8288ffdfc356: Pull complete
Digest: sha256:baaff1ced6739fe40e2697b605d0356e01b9bd55050af2589c6baa2538a140be
Status: Downloaded newer image for drone/drone:2
Pulling fan-docker-runner (drone/drone-runner-docker:linux-amd64)...
linux-amd64: Pulling from drone/drone-runner-docker
188c0c94c7c5: Pull complete
56a34a47cffc: Pull complete
d86e9de69e32: Pull complete
dfdbe7a3e2e7: Pull complete
Digest: sha256:6564d2e7ee0c34e9103dc38270b043123fc81b1ef20b948c0154f46532f7f20d
Status: Downloaded newer image for drone/drone-runner-docker:linux-amd64
Creating docker-compose_fan-drone-server_1 ... done
Creating docker-compose_fan-docker-runner_1 ... done
[root@origin docker-compose]# docker ps
CONTAINER ID   IMAGE                                   COMMAND                  CREATED             STATUS             PORTS                                                                            NAMES
b6cef404c18e   drone/drone-runner-docker:linux-amd64   "/bin/drone-runner-d…"   About an hour ago   Up About an hour   0.0.0.0:9030->3000/tcp, :::9030->3000/tcp                                        docker-compose_fan-docker-runner_1
cc6b107b3ea3   drone/drone:2                           "/bin/drone-server"      About an hour ago   Up About an hour   0.0.0.0:9080->80/tcp, :::9080->80/tcp, 0.0.0.0:9443->443/tcp, :::9443->443/tcp   docker-compose_fan-drone-server_1
  1. 访问Drone控制台
    http://192.168.0.109:9080/

在这里插入图片描述
可以看到Drone已经成功启动,进入看看
在这里插入图片描述
点击授权

在这里插入图片描述
完善注册信息

进入Drone可以看到root创建的一个仓库

在这里插入图片描述

  1. 激活仓库
    在这里插入图片描述
    再进入Gitea,点开对应仓库的webhook,可以看到已经创建了一个钩子
    在这里插入图片描述

测试

  1. 点击测试推送发现失败
    在这里插入图片描述
    此时,需要在仓库根目录创建配置文件 .drone.yml
kind: pipeline
type: docker
name: default
   
steps:
- name: test
  image: alpine
  commands:
  - echo hello
  - echo world
  1. 再看Drone,可以看到一条构建记录
    在这里插入图片描述

配置优化,drone.yml 关键词

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值