简易CICD流水线搭建配置文档Gitea+Drone

搭建Gitea仓库

参考文档安装即可

https://docs.gitea.com/zh-cn

本地启动方法

上面的文档中有介绍二进制文件启动还有service方式启动,更加推荐service方式

root@yaosoft:~# systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-10-19 17:08:41 CST; 6 days ago
   Main PID: 867 (gitea)
     Status: "Starting Gitea"
      Tasks: 14 (limit: 8937)
     Memory: 748.5M
        CPU: 18min 42.314s
     CGroup: /system.slice/gitea.service
             └─867 /usr/local/bin/gitea web --config /etc/gitea/app.ini

Drone的优势

  1. 轻量级和易用性: Drone 被设计为轻量级且易于使用。它的用户界面简洁,配置简单,使得用户能够快速上手。
  2. 可移植性: 由于使用容器,Drone 的流水线可以在不同的环境中轻松运行,而无需担心环境差异。这提高了流水线的可移植性和一致性。
  3. 简单部署: 由于轻量,Drone 的部署相对简单。你可以很容易地在不同的环境中启动 Drone 代理,而无需过多的配置和资源。

安装Drone

这里使用Podman来安装Drone,如果资源充足建议使用docker,官方安装教程就是docker安装,但是这里我们使用podman更加轻量。

参考文档

https://drone.cool

Gitea应用创建

简易CICD流水线搭建配置文档Gitea+Drone

下方的链接是待会要部署的Drone的登录地址,保存好ID和密钥

简易CICD流水线搭建配置文档Gitea+Drone

共享密钥创建

openssl rand -hex 16

一定要保存好此密钥,在后面的与自动部署工具通讯的必要

创建数据目录

mkdir /opt/drone

podman拉取并且启动Drone

podman run -d \
  --volume=/opt/drone:/data \
  --env=DRONE_GITEA_SERVER=http://10.8.0.1:2216 \
  --env=DRONE_GITEA_CLIENT_ID=fbc81d51-4bc6-4eaa-9110-8cd40c05841c \
  --env=DRONE_GITEA_CLIENT_SECRET=gto_mugkkkzyl7tg35okt7tpis4um5vomjdxsutdksb4soey6tmd6z6q \
  --env=DRONE_RPC_SECRET=7b248d430ae0320f6eaf6ca1fecd2b31 \
  --env=DRONE_SERVER_HOST=10.8.0.1:2217 \
  --env=DRONE_SERVER_PROTO=http \
  --env=DRONE_ADMIN=admin \
  --env=DRONE_USER_CREATE=username:wangqing,admin:true \
  --publish=2217:80 \
  --name=drone \
  drone/drone:2

安装自动部署工具(runner)

简易CICD流水线搭建配置文档Gitea+Drone

这里的工具有很多,常用的其实就docker以及exec,区别就在于你想让项目是以容器的方式启动还是直接在宿主机中启动

简易CICD流水线搭建配置文档Gitea+Drone

这里选用的是Exec runner直接使用shell命令,在主机上执行构建 Pipeline,无需隔离,只不过必须要信任仓库,下面的激活仓库会选择信任仓库。

下载配置Exec runner

下载基于 amd64 架构的二进制文件:

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

Exec Runner 是使用环境变量文件配置的。环境文件位置由运行进程的用户决定,如果是root用户就放在/etc如果是其他用户放在该用户的家目录下

Root:/etc/drone-runner-exec/config

其他用户:~/.drone-runner-exec/config

比如下方,就是用的git-sync用户,在他的家目录下创建了目录和配置文件

root@yaosoft:/opt/git-sync# mkdir .drone-runner-exec
root@yaosoft:/opt/git-sync# touch .drone-runner-exec/config

配置文件内容如下:

DRONE_RPC_PROTO=https
DRONE_RPC_HOST=drone.company.com
DRONE_RPC_SECRET=super-duper-secret
DRONE_LOG_FILE=/用户目录/.drone-runner-exec/log.txt //如果是root用户就换成/var/log/drone-runner-exec/log.txt
  • DRONE_RPC_HOST提供 Drone Server 的主机名(和可选端口)。Runner 连接到指定主机地址的 Server 以接收 Pipeline 以执行。
  • DRONE_RPC_PROTO提供用于连接 Drone Server 的协议。该值必须是 http 或 https。
  • DRONE_RPC_SECRET提供用于向 Drone Server 进行身份验证的共享密钥。这必须与你的 Drone Server 配置中定义的 Secret 匹配。

更多参数配置请参考

https://drone.cool/runner/exec/configuration/reference

日志文件创建

日志文件的存放目录必须在启动服务之前先创建好,如果是root用户执行那么要创建,如果是其他用户则不用,因为日志放在普通用户的家目录下,而之前放配置文件就已经创建

mkdir /var/log/drone-runner-exec

service文件创建权限问题

如果是其他用户运行的话,会有权限问题导致不能创建以及打开service文件,所以需要提前临时放开权限

chmod o+w /etc/systemd/system

安装Exec runner

如果是其他用户需要先切换至目标用户,如果用root用户安装,会默认去读etc下面的配置文件

drone-runner-exec service install
sudo drone-runner-exec service start

上面的命令创建了一个初始化服务。你可能需要以 root 身份或使用 sudo 执行命令。

验证服务

检查日志是否有输出,如果有并且没有报错就说明服务已经启动

简易CICD流水线搭建配置文档Gitea+Drone

service文件创建权限关闭

chmod o-w /etc/systemd/system

激活仓库

登录到drone的UI界面后授权登录,并且找到需要进行自动化部署的仓库

授权账号一定要是之前创建仓库应用的用户

简易CICD流水线搭建配置文档Gitea+Drone

创建

简易CICD流水线搭建配置文档Gitea+Drone

信任此仓库

简易CICD流水线搭建配置文档Gitea+Drone

添加webhook范围允许

打开gitea配置文件加入

[webhook]
ALLOWED_HOST_LIST = 10.8.0.1

添加流水线配置文件

规范文档:

https://drone.cool/yaml/exec
kind: pipeline
type: exec
name: xueye-service

trigger:
  branch:
    include:
      - dev

steps:
  - name: update-repo
    commands:
      - cd /opt/git-sync/www/xueye-service
      - git config --global --add safe.directory /opt/git-sync/www/xueye-service
      - git pull
      - echo "git拉取成功"
  - name: clean
    commands:
      - export GOPATH="/opt/tools/go1.20.1"
      - export PATH="$GOPATH/bin:$PATH"
      - cd /opt/git-sync/www/xueye-service
      - make clean
      - echo "清理成功"

  - name: build
    commands:
      - export GOPATH="/opt/tools/go1.20.1"
      - export PATH="$GOPATH/bin:$PATH"
      - cd /opt/git-sync/www/xueye-service
      - export GOPROXY=https://goproxy.cn,direct
      - make build
      - echo "构建成功"

  - name: startup
    commands:
      - cd /opt/git-sync/www/xueye-service
      - ./scripts/startup_test.sh
      - echo "执行脚本成功"
Linux运维

OpenVPN企业级内网工具

2025-12-14 13:59:30

Linux运维

swap交换内存/cache机制/OOM killer机制

2025-12-14 14:07:11

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索