158 lines
8.0 KiB
Diff
158 lines
8.0 KiB
Diff
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
|
||
|