搭建Gitea仓库
参考文档安装即可
本地启动方法
上面的文档中有介绍二进制文件启动还有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的优势
- 轻量级和易用性: Drone 被设计为轻量级且易于使用。它的用户界面简洁,配置简单,使得用户能够快速上手。
- 可移植性: 由于使用容器,Drone 的流水线可以在不同的环境中轻松运行,而无需担心环境差异。这提高了流水线的可移植性和一致性。
- 简单部署: 由于轻量,Drone 的部署相对简单。你可以很容易地在不同的环境中启动 Drone 代理,而无需过多的配置和资源。
安装Drone
这里使用Podman来安装Drone,如果资源充足建议使用docker,官方安装教程就是docker安装,但是这里我们使用podman更加轻量。
参考文档
Gitea应用创建

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

共享密钥创建
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)

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

这里选用的是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 匹配。
更多参数配置请参考
日志文件创建
日志文件的存放目录必须在启动服务之前先创建好,如果是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 执行命令。
验证服务
检查日志是否有输出,如果有并且没有报错就说明服务已经启动

service文件创建权限关闭
chmod o-w /etc/systemd/system
激活仓库
登录到drone的UI界面后授权登录,并且找到需要进行自动化部署的仓库
授权账号一定要是之前创建仓库应用的用户

创建

信任此仓库

添加webhook范围允许
打开gitea配置文件加入
[webhook]
ALLOWED_HOST_LIST = 10.8.0.1
添加流水线配置文件
规范文档:
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 "执行脚本成功"
