Skip to content

Commit 82b44ba

Browse files
committed
refactor: 移除通用 runner 资源锁逻辑,仅保留板卡专用锁
1 parent d78994d commit 82b44ba

1 file changed

Lines changed: 12 additions & 25 deletions

File tree

runner.sh

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ RUNNER_WORKDIR="${RUNNER_WORKDIR:-}"
3939
RUNNER_LABELS="${RUNNER_LABELS:-intel}"
4040
RUNNER_BOARD="2"
4141
DISABLE_AUTO_UPDATE="${DISABLE_AUTO_UPDATE:-false}"
42-
# 普通 runners 的全局资源 ID:可选,设置后普通 runners 会通过 flock 串行执行以避免硬件竞争。多组织部署时推荐设置为相同值(如 "general-runners")
43-
RUNNER_RESOURCE_ID_GENERAL="${RUNNER_RESOURCE_ID_GENERAL:-}"
4442
# 板子级:未设置时用本板默认值(同类型板串行、不同类型板并行);多组织共享同一块板时显式设为相同 ID 即可
4543
RUNNER_RESOURCE_ID_PHYTIUMPI="${RUNNER_RESOURCE_ID_PHYTIUMPI:-}"
4644
RUNNER_RESOURCE_ID_ROC_RK3568_PC="${RUNNER_RESOURCE_ID_ROC_RK3568_PC:-}"
@@ -124,7 +122,6 @@ shell_usage() {
124122
printf " %-${KEYW}s %s\n" "RUNNER_NAME_PREFIX" "Container name prefix (default: <hostname>-<org>[-<repo>]-); auto includes ORG/REPO to avoid name conflicts"
125123
printf " %-${KEYW}s %s\n" "RUNNER_IMAGE" "Image used for compose generation (default ghcr.io/actions/actions-runner:latest)"
126124
printf " %-${KEYW}s %s\n" "RUNNER_CUSTOM_IMAGE" "Image tag used for auto-build (can override)"
127-
printf " %-${KEYW}s %s\n" "RUNNER_RESOURCE_ID_GENERAL" "Lock ID for generic runners (optional); prevents hardware contention in multi-org deployments"
128125
printf " %-${KEYW}s %s\n" "RUNNER_RESOURCE_ID_PHYTIUMPI" "Lock ID for phytiumpi board (default: board-phytiumpi); same ID = serial across runners"
129126
printf " %-${KEYW}s %s\n" "RUNNER_RESOURCE_ID_ROC_RK3568_PC" "Lock ID for roc-rk3568-pc board (default: board-roc-rk3568-pc); same ID = serial"
130127
printf " %-${KEYW}s %s\n" "RUNNER_LOCK_DIR" "Lock dir in container (default /tmp/github-runner-locks)"
@@ -445,60 +442,52 @@ shell_get_compose_file() {
445442
shell_generate_compose_file() {
446443
local general_count=$1
447444
# ════════════════════════════════════════════════════════════════
448-
# 第一步:为三种 runner 类型定义资源 ID
445+
# 第一步:为两种板子 runner 类型定义资源 ID
449446
# ════════════════════════════════════════════════════════════════
450447
# 硬件板 phytiumpi - 总是启用文件锁
451448
local res_phytiumpi="${RUNNER_RESOURCE_ID_PHYTIUMPI:-}"
452449
# 硬件板 roc - 总是启用文件锁
453450
local res_roc="${RUNNER_RESOURCE_ID_ROC_RK3568_PC:-}"
454-
# 普通 runners(可选)- 用户可选择启用文件锁,默认不启用(向后兼容)
455-
local res_general="${RUNNER_RESOURCE_ID_GENERAL:-}"
456451

457452
# ════════════════════════════════════════════════════════════════
458-
# 第二步:三种 runner 类型的 entrypoint 配置
453+
# 第二步:两种板子 runner 类型的 entrypoint 配置
459454
# ════════════════════════════════════════════════════════════════
460-
# 设计说明:若设置了资源 ID(RUNNER_RESOURCE_ID_*),所有 runner 类型都改用
461-
# runner-wrapper.sh 来管理文件锁——包括普通 runners
462-
# 默认:所有 runner 类型都使用 /home/runner/run.sh(不经过 runner-wrapper)
455+
# 设计说明:若设置了资源 ID(RUNNER_RESOURCE_ID_*),板子 runner 使用
456+
# runner-wrapper.sh 来管理文件锁
457+
# 普通 runner 始终使用 /home/runner/run.sh(不经过 runner-wrapper)
463458
local runner_entrypoint_phytiumpi="/home/runner/run.sh"
464459
local runner_entrypoint_roc="/home/runner/run.sh"
465-
local runner_entrypoint_general="/home/runner/run.sh"
466-
# 若设置了资源 ID,则改用 runner-wrapper 来处理文件锁(适用于所有 runner 类型)
460+
# 若设置了资源 ID,则改用 runner-wrapper 来处理文件锁
467461
[[ -n "$res_phytiumpi" ]] && runner_entrypoint_phytiumpi="/home/runner/runner-wrapper/runner-wrapper.sh"
468462
[[ -n "$res_roc" ]] && runner_entrypoint_roc="/home/runner/runner-wrapper/runner-wrapper.sh"
469-
[[ -n "$res_general" ]] && runner_entrypoint_general="/home/runner/runner-wrapper/runner-wrapper.sh"
470463

471464
# ════════════════════════════════════════════════════════════════
472-
# 第三步:为三种 runner 类型准备额外的环境变量数组
465+
# 第三步:为两种板子 runner 类型准备额外的环境变量数组
473466
# ════════════════════════════════════════════════════════════════
474-
# 重复模式说明:以下三部分几乎完全相同,都是:
467+
# 重复模式说明:以下两部分几乎完全相同,都是:
475468
# 1. 定义空数组:extra_env_X=()
476469
# 2. 如果有资源 ID,则添加三个环境变量:
477470
# - RUNNER_RESOURCE_ID: 用于锁机制
478471
# - RUNNER_SCRIPT: 给 runner-wrapper 使用的脚本路径
479472
# - RUNNER_LOCK_DIR: 容器内锁文件目录
480-
# 原因:三种 runner 都可能需要文件锁机制,但都是可选的
473+
# 原因:两种板子 runner 都可能需要文件锁机制
481474
local extra_env_phytiumpi=()
482475
local extra_env_roc=()
483-
local extra_env_general=()
484476
# 只有设置了相应的资源 ID,才为该类型 runner 添加锁相关环境变量
485477
[[ -n "$res_phytiumpi" ]] && extra_env_phytiumpi=(" RUNNER_RESOURCE_ID: \"$res_phytiumpi\"" " RUNNER_SCRIPT: \"/home/runner/run.sh\"" " RUNNER_LOCK_DIR: \"${RUNNER_LOCK_DIR:-/tmp/github-runner-locks}\"")
486478
[[ -n "$res_roc" ]] && extra_env_roc=(" RUNNER_RESOURCE_ID: \"$res_roc\"" " RUNNER_SCRIPT: \"/home/runner/run.sh\"" " RUNNER_LOCK_DIR: \"${RUNNER_LOCK_DIR:-/tmp/github-runner-locks}\"")
487-
[[ -n "$res_general" ]] && extra_env_general=(" RUNNER_RESOURCE_ID: \"$res_general\"" " RUNNER_SCRIPT: \"/home/runner/run.sh\"" " RUNNER_LOCK_DIR: \"${RUNNER_LOCK_DIR:-/tmp/github-runner-locks}\"")
488479

489480
# ════════════════════════════════════════════════════════════════
490-
# 第四步:为三种 runner 类型准备卷挂载配置
481+
# 第四步:为两种板子 runner 类型准备卷挂载配置
491482
# ════════════════════════════════════════════════════════════════
492-
# 重复模式说明:以下三部分完全相同(除变量名),都实现:
483+
# 重复模式说明:以下两部分完全相同(除变量名),都实现:
493484
# 如果设置了资源 ID,则挂载主机的锁文件目录到容器内
494485
# 原因:文件锁机制需要在主机和容器间共享锁文件
495486
local extra_vol_phytiumpi=""
496487
local extra_vol_roc=""
497-
local extra_vol_general=""
498488
# 只有设置了相应的资源 ID,才为该类型 runner 挂载锁文件目录
499489
[[ -n "$res_phytiumpi" ]] && extra_vol_phytiumpi=" - ${RUNNER_LOCK_HOST_PATH:-/tmp/github-runner-locks}:${RUNNER_LOCK_DIR:-/tmp/github-runner-locks}"
500490
[[ -n "$res_roc" ]] && extra_vol_roc=" - ${RUNNER_LOCK_HOST_PATH:-/tmp/github-runner-locks}:${RUNNER_LOCK_DIR:-/tmp/github-runner-locks}"
501-
[[ -n "$res_general" ]] && extra_vol_general=" - ${RUNNER_LOCK_HOST_PATH:-/tmp/github-runner-locks}:${RUNNER_LOCK_DIR:-/tmp/github-runner-locks}"
502491

503492
# 使用 printf 输出文件头
504493
printf '%s\n' \
@@ -533,7 +522,7 @@ shell_generate_compose_file() {
533522
" ${RUNNER_NAME_PREFIX}runner-${i}:" \
534523
" <<: *runner_base" \
535524
" container_name: \"${RUNNER_NAME_PREFIX}runner-${i}\"" \
536-
" command: [\"${runner_entrypoint_general}\"]" \
525+
" command: [\"/home/runner/run.sh\"]" \
537526
" devices:" \
538527
" - /dev/loop-control:/dev/loop-control" \
539528
" - /dev/loop0:/dev/loop0" \
@@ -547,11 +536,9 @@ shell_generate_compose_file() {
547536
" <<: *runner_env" \
548537
" RUNNER_NAME: \"${RUNNER_NAME_PREFIX}runner-${i}\"" \
549538
" RUNNER_LABELS: \"${RUNNER_LABELS}\"" \
550-
"${extra_env_general[@]}" \
551539
" volumes:" \
552540
" - ${RUNNER_NAME_PREFIX}runner-${i}-data:/home/runner" \
553541
" - ${RUNNER_NAME_PREFIX}runner-${i}-udev-rules:/etc/udev/rules.d" \
554-
"$extra_vol_general" \
555542
"" >> "${COMPOSE_FILE}"
556543
done
557544

0 commit comments

Comments
 (0)