轻量级CI/CD自动构建平台Gitea+Drone搭建

搭建环境

ip 角色
10.0.7.20 Gitea
10.0.7.40 drone server/runner

搭建Gitea

本文采用docker方式搭建

cat  docker-compose.yaml

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - 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:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - mysql_db:/var/lib/mysql

volumes:
  mysql_db:

运行Gitea

docker-compose up -d

查看运行结果

[root@10 gitea]# docker ps -a
CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                                                                     NAMES
a3f073d7d034   gitea/gitea:latest   "/usr/bin/entrypoint…"   42 seconds ago   Up 11 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp   gitea
8db614e594b5   mysql:8              "docker-entrypoint.s…"   42 seconds ago   Up 41 seconds   3306/tcp, 33060/tcp

设置及访问web页面

http://10.0.7.20:3000

服务器地址填写
在这里插入图片描述

管理员账号设置
在这里插入图片描述

管理员账号登陆
在这里插入图片描述

在这里插入图片描述
创建git仓库
在这里插入图片描述

配置Gitea

创建管理 OAuth2 应用程序


在这里插入图片描述

配置webhook

在这里插入图片描述

Drone server及runner搭建

配置server/runner

[root@10 drone]# cat docker-compose.yaml
version: "3"

networks:
  drone:


volumes:
  drone_data:

services:
  server:
    image: drone/drone
    container_name: drone
    restart: always
    environment:
      - DRONE_GITEA_SERVER=http://10.0.7.20:3000
      - DRONE_GITEA_CLIENT_ID=f5028918-5a2c-4db7-9f07-5f78c56bb11e  ###(客户端ID)
      - DRONE_GITEA_CLIENT_SECRET=YKXuTXorxZw3MVswjg1dUJyPLEcitLdZ3vC3jAuPVXah ####(客户端秘钥)
      - DRONE_RPC_SECRET=super-duper-secret 
      - DRONE_SERVER_HOST=10.0.7.40 ####(drone服务器地址)
      - DRONE_SERVER_PROTO=http ###(http协议)
      - DRONE_GIT_ALWAYS_AUTH=true
      - DRONE_GIT_USERNAME=(gitea-应用-tokens用户)
      - DRONE_GIT_PASSWORD=(gitea-应用-tokens用户令牌)
      - DRONE_USER_CREATE=username:root,admin:true,,token:55f24eb3d61ef6ac5e83d550178638dc (用于生成admin管理员,用于docker容器挂载本地文件使用,否则无法挂载提示untrusted repositories cannot mount host volumes)
      - TZ=Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - drone_data:/data
    networks:
      - drone

  runner:
    image: drone/drone-runner-docker
    container_name: runner
    restart: always
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=10.0.7.40
      - DRONE_RPC_SECRET=super-duper-secret  ####(与server端一致即可)
      - DRONE_RUNNER_CAPACITY=4
      - DRONE_RUNNER_NAME=runner
      - TZ=Asia/Shanghai
      - DRONE_DEBUG=true
      - DRONE_TRACE=true
        #- DRONE_UI_USERNAME=root
        #- DRONE_UI_PASSWORD=
    ports:
      - "3000:3000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - drone
    depends_on:
      - server

  ssh:   ####(drone 用户支持ssh 管道服务)
    image: drone/drone-runner-ssh
    container_name: ssh
    restart: always
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=10.0.7.40
      - DRONE_RPC_SECRET=super-duper-secret
    ports:
      - "4000:3000"
    networks:
      - drone

启动

在这里插入图片描述

访问drone

http://10.0.7.40

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试Gitea-webhook

测试gieta we-hook
在这里插入图片描述

关于webhook失败问题解决方法(补充说明)

需要在gitea中配置允许webhook的ip
修改映射出来的gitea/conf/app.ini,添加以下内容

[webhook]
ALLOWED_HOST_LIST = 10.0.7.0/16

Drone 使用docker管道实例

1. 查看gitea及drone

在这里插入图片描述

2. 创建并提交.drone.yaml

[root@10 project]# ls -al
总用量 8
drwxr-xr-x  3 root root  53 825 16:57 .
drwxr-xr-x. 5 root root  54 825 15:15 ..
-rw-r--r--  1 root root 125 815 16:22 .drone.yml
drwxr-xr-x  8 root root 166 825 16:57 .git
-rw-r--r--  1 root root  12 825 15:49 README.md

cat .drone.yml

kind: pipeline
type: docker
name: default

steps:
- name: greeting
  image: alpine
  commands:
  - echo hello
  - echo world

3. 查看运行结果

git执行fiirt commit 提交后,drone执行指定命令成功
在这里插入图片描述
在这里插入图片描述

4. 用户界面展示


若没有上图这个选项则说明并未使用admin用户。请参考上面drone的compose文件重新设置。
在这里插入图片描述

Drone 使用命令行管道实例

1. 安装drone-runner-exec

需要在runner所在服务器(10.0.7.40)上安装 drone-runner-exec

方式一
curl -L https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone-runner-exec

方式二
浏览器地址栏输入https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz 
下载成功后,将tar包上传到drone-runner所在服务器
执行:
tar -zxvf drone_runner_exec_linux_amd64.tar.gz -C /usr/sbin

[root@10 ~]# ls /usr/sbin/drone*
/usr/sbin/drone-runner-exec

配置drone-runner-exec 环境变量
mkdir /etc/drone-runner-exec
touch /etc/drone-runner-exec/config
vim /etc/drone-runner-exec/config (以下3个参数对照上述docker-compose文件填写)
DRONE_RPC_PROTO=http
DRONE_RPC_HOST=10.0.7.40
DRONE_RPC_SECRET=super-duper-secret

启动drone-runner-exec
drone-runner-exec service install
drone-runner-exec service start (启动命令)
drone-runner-exec service stop (停止命令)

注: exec问题谢谢网友分享,参考链接
https://blog.csdn.net/weixin_36766709/article/details/116795778

2. 更改并提交.drone.yaml

[root@10 project]# cat .drone.yml
kind: pipeline
type: exec
name: default

platform:
  os: linux
  arch: amd64

steps:
- name: greeting
  commands:
  - echo Linux yyds 

3. 查看运行结果

在这里插入图片描述

在这里插入图片描述

Drone 使用ssh管道实例

之前部署drone server/runner dockr-compose文件中已经部署drone/drone-runner-ssh容器

1. 安装使用drone/drone-runner-ssh

在这里插入图片描述

2. 更改并提交.drone.yaml

1. 远程服务器地址10.0.7.0

在10.0.7.0 中创建 /tmp/drone_test.log
echo "third commit" >> /tmp/drone_test.log

2. 修改.drone.yaml

kind: pipeline
type: ssh
name: default


server:
  host: 10.0.7.0
  user: root
  password: 1@3$qWeR

steps:
- name: greeting
  commands:
  - cat /tmp/drone_test.log

3.查看运行结果

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44157851/article/details/126350649