Files
BYW-VoiceHub/patches/0003-ci-Gitea-1.27-Runner-Token-RGT-RGO-RG.patch
T

158 lines
8.0 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
From 08a6a669771a8352bb19649cbe534958e455ddb9 Mon Sep 17 00:00:00 2001
From: HenryDu8133 <813367384@qq.com>
Date: Sun, 6 Sep 2026 08:56:16 +0800
Subject: [PATCH 03/58] =?UTF-8?q?ci:=20=E9=80=82=E9=85=8D=20Gitea=201.27+?=
=?UTF-8?q?=20=E7=9A=84=20Runner=20=E6=B3=A8=E5=86=8C=20Token=EF=BC=88RGT/?=
=?UTF-8?q?RGO/RG=20=E4=B8=89=E7=A7=8D=E5=89=8D=E7=BC=80=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scripts/setup-runner.sh | 87 ++++++++++++++++++++++++++++++++++-------
1 file changed, 72 insertions(+), 15 deletions(-)
diff --git a/scripts/setup-runner.sh b/scripts/setup-runner.sh
index bc424e7..2599738 100644
--- a/scripts/setup-runner.sh
+++ b/scripts/setup-runner.sh
@@ -2,30 +2,58 @@
# ============================================================================
# setup-runner.sh —— 一键安装并注册 Gitea Actions Runner(act_runner)
#
-# 使用方法:
-# ① 先在你的 Gitea 仓库页面 → Settings → Actions → Runners → 「Create Runner」
-# 选「Linux + amd64」,它会给你一条注册命令,里面有一串 registration token,
-# 格式像: GFxxxxxxxxxxxxxxxxxxxx ,复制它。
-# ② 再在你要跑 Runner 的机器上执行:
-# curl -fsSL https://<你的-gitea>/<仓库>/-/raw/branch/main/scripts/setup-runner.sh \
-# | sudo bash -s -- --gitea https://<你的-gitea> --token GFxxxxxxxxxxxxxxxxxxxx
+# ✅ 兼容 Gitea 1.21 ~ 最新(含 1.27.x),新版没有 Platform 下拉菜单。
#
-# 或者直接本地执行:
-# sudo bash scripts/setup-runner.sh \
-# --gitea https://git.baoyiwai.com \
-# --token GFxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+# 使用方法(两种模式任选其一,推荐 模式 A 最省事):
+#
+# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+# 模式 A:仓库级 Runner(只给这个 VoiceHub 仓库用,最常用、权限最小)
+# 路径:你的仓库 → Settings → Actions → Runners → 右上角
+# → 新版(1.21+)这里没有 Platform 选择,直接有一个输入框
+# 写着「Registration token」或「注册令牌」
+# → 点右边的 📋 复制按钮,得到一串以 R 开头的 token
+# 例: RGT8FZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxV
+#
+# 机器上执行:
+# sudo bash scripts/setup-runner.sh \
+# --scope repo --gitea https://你的-gitea --token RGTxxxx...
+#
+# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+# 模式 B:组织级 Runner(同一个 Gitea 组织下所有仓库都能用)
+# 路径:组织主页 → Settings → Actions → Runners → 复制 Registration token
+# (Token 开头一般是 RGOxxxx)
+#
+# 执行:
+# sudo bash scripts/setup-runner.sh \
+# --scope org --gitea https://你的-gitea --token RGOxxxx...
+#
+# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+# 模式 C:全局/站点级 Runner(Gitea 全站所有仓库都能用,需站点管理员)
+# 路径:站点管理后台(Site Administration)→ Actions → Runners
+# → 复制 Registration token(开头一般是 RGxxxx)
+#
+# 执行:
+# sudo bash scripts/setup-runner.sh \
+# --scope global --gitea https://你的-gitea --token RGxxxx...
+#
+# 其他可选参数:
+# --name "my-runner-01" 自定义 Runner 名字(默认是 runner-主机名)
+# --user gitrunner 运行用户(默认 gitrunner)
+# --dir /opt/act_runner 安装目录(默认 /opt/act_runner)
# ============================================================================
set -euo pipefail
# ---------- 颜色 ----------
-RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
+RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[1;36m'; NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
err() { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; }
+ok() { echo -e "${CYAN}[ OK ]${NC} $*"; }
# ---------- 解析参数 ----------
GITEA_URL=""
REG_TOKEN=""
+SCOPE="repo" # repo | org | global(默认 repo,绝大多数人的场景)
RUNNER_NAME="runner-$(hostname | tr '[:upper:]' '[:lower:]')"
RUNNER_USER="gitrunner"
INSTALL_DIR="/opt/act_runner"
@@ -34,11 +62,12 @@ while [[ $# -gt 0 ]]; do
case "$1" in
--gitea) GITEA_URL="${2}"; shift 2 ;;
--token) REG_TOKEN="${2}"; shift 2 ;;
+ --scope) SCOPE="${2}"; shift 2 ;;
--name) RUNNER_NAME="${2}"; shift 2 ;;
--user) RUNNER_USER="${2}"; shift 2 ;;
--dir) INSTALL_DIR="${2}"; shift 2 ;;
-h|--help)
- sed -n '2,20p' "$0" | sed 's/^# \{0,1\}//'
+ sed -n '2,60p' "$0" | sed 's/^# \{0,1\}//'
exit 0
;;
*) err "未知参数:$1(--help 查看帮助)" ;;
@@ -46,12 +75,25 @@ while [[ $# -gt 0 ]]; do
done
[[ -n "${GITEA_URL}" ]] || err "必须传 --gitea https://你的-gitea-地址"
-[[ -n "${REG_TOKEN}" ]] || err "必须传 --token GF……(Gitea 页面里拿的注册 token)"
+[[ -n "${REG_TOKEN}" ]] || err "必须传 --token(从 Gitea 页面的 Registration token 复制,Rxx 开头的一串)"
+case "${SCOPE}" in
+ repo|org|global) ;;
+ *) err "--scope 必须是 repo | org | global 其中之一" ;;
+esac
[[ $EUID -eq 0 ]] || err "请用 sudo 运行本脚本(需要写 /opt / /etc/systemd/system)"
# 去掉末尾 /
GITEA_URL="${GITEA_URL%/}"
+echo ""
+echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+echo -e "${CYAN} 🚀 开始部署 Gitea Actions Runner (兼容 1.21 ~ 1.27+)${NC}"
+echo -e "${CYAN} • 绑定 Gitea : ${GITEA_URL}${NC}"
+echo -e "${CYAN} • 作用域 : ${SCOPE}${NC}"
+echo -e "${CYAN} • Runner 名称 : ${RUNNER_NAME}${NC}"
+echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+echo ""
+
# ---------- 0. 架构检测 ----------
ARCH="$(uname -m)"
case "${ARCH}" in
@@ -60,7 +102,22 @@ case "${ARCH}" in
armv7l) PLATFORM="linux-arm" ;;
*) err "暂不支持的架构:${ARCH}(需要 x86_64 / aarch64 / armv7)" ;;
esac
-info "检测到架构:${ARCH} → 下载版本:${PLATFORM}"
+ok "检测到架构:${ARCH} → 下载版本:${PLATFORM}"
+
+# ---------- 0.5 给新版 Gitea 用户的 Token 格式提示 ----------
+case "${REG_TOKEN}" in
+ RG*) ok "Token 前缀 RG:全局/站点级 Runner Token ✅" ;;
+ RGO*) ok "Token 前缀 RGO:组织级 Runner Token ✅" ;;
+ RGT*) ok "Token 前缀 RGT:仓库级 Runner Token ✅(最常用)" ;;
+ R[0-9A-Za-z]*)
+ warn "Token 不是标准 RG/RGO/RGT 前缀。新版本 Gitea 里 Registration token 应该是 Rxx 开头。"
+ warn " 如果你是从旧文档里拿的 GFxxxxx(旧版),在 1.27 里已经不再用这种格式了!"
+ warn " → 请回到仓库/组织/站点的 Actions → Runners 页面,点击 「创建 Runner」或「Registration Token」"
+ ;;
+ *)
+ warn "Token 前缀不匹配任何已知格式:$REG_TOKEN。请核对复制的内容是否少选。"
+ ;;
+esac
# ---------- 1. 安装依赖:docker(Runner 要用 Docker-in-Docker 执行 buildx 等)----------
if ! command -v docker >/dev/null 2>&1; then
--
2.45.1.windows.1