File tree Expand file tree Collapse file tree 4 files changed +13
-5
lines changed
Expand file tree Collapse file tree 4 files changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -8,9 +8,15 @@ ARG VERSION=dev
88RUN CGO_ENABLED=0 go build -ldflags "-X main.Version=${VERSION}" -o runner-manager .
99
1010FROM ubuntu:24.04
11+ # GitHub Actions Runner 需 .NET Core 6.0 依赖(libicu 等),与 installdependencies.sh 一致
1112RUN apt-get update && apt-get install -y --no-install-recommends \
1213 ca-certificates \
1314 curl \
15+ libicu72 \
16+ libkrb5-3 \
17+ liblttng-ust1 \
18+ libssl3 \
19+ zlib1g \
1420 && rm -rf /var/lib/apt/lists/*
1521
1622# 使用非 root 用户运行,避免 GitHub Actions Runner 报 "Must not run with sudo"
Original file line number Diff line number Diff line change 11# 基于 docs/docker.md 中「方式二:DinD」编排
22# 使用前请确保 config.yaml 中 runners.base_path 为 /app/runners
3- # 镜像以 UID 1001 运行,宿主机上请保证 ./runners 对该用户可写,例如:mkdir -p runners && chown 1001:1001 runners
3+ # 镜像以 UID 1001 运行,宿主机上请保证:
4+ # - ./config.yaml 对 UID 1001 可写(添加/删除/更新 Runner 会写回),例如:chown 1001:1001 config.yaml
5+ # - ./runners 对 UID 1001 可写,例如:mkdir -p runners && chown 1001:1001 runners
46
57services :
68 runner-dind :
Original file line number Diff line number Diff line change 11# Docker 部署
22
3- - ** 基础镜像** :运行时使用 ** Ubuntu** (非 Alpine),避免 GitHub Runner 在 Alpine 下运行异常。
3+ - ** 基础镜像** :运行时使用 ** Ubuntu** (非 Alpine),避免 GitHub Runner 在 Alpine 下运行异常。镜像内已预装 .NET Core 6.0 所需依赖(libicu72、libkrb5-3、liblttng-ust1、libssl3、zlib1g),避免注册/运行 Runner 时报「Libicu's dependencies is missing for Dotnet Core 6.0」。
44- ** 非 root 运行** :镜像内以 UID 1001(用户 ` app ` )运行,避免 GitHub Actions Runner 报错「Must not run with sudo」。挂载 ` runners ` 目录时,请确保宿主机上该目录对 UID 1001 可写(常见做法:` mkdir runners && chown 1001:1001 runners ` );若你自定义为 root 运行容器,需设置环境变量 ` RUNNER_ALLOW_RUNASROOT=1 ` 。
55- ** 自动拉起 Runner** :服务启动约 15 秒后会自动启动所有「已注册但未在运行」的 Runner;定时任务每 5 分钟也会再次检查并拉起未运行的已注册 Runner,便于 DinD 或管理器重启后恢复。
66
@@ -28,7 +28,7 @@ docker run -d --name runner-manager \
2828```
2929
3030- ** ` -p 8080:8080 ` ** :宿主机端口映射,保证能从本机访问管理界面。
31- - ** ` -v $(pwd)/config.yaml:/app/config.yaml ` ** :挂载配置文件,修改后重启容器即可生效;不挂载则使用镜像内默认配置,无法持久化。
31+ - ** ` -v $(pwd)/config.yaml:/app/config.yaml ` ** :挂载配置文件,修改后重启容器即可生效;不挂载则使用镜像内默认配置,无法持久化。镜像以 UID 1001 运行, ** 添加/删除/更新 Runner 时会写回该文件 ** ,宿主机上请保证该文件对 UID 1001 可写(例如 ` chown 1001:1001 config.yaml ` ),否则会报 500「保存配置失败」。
3232- ** ` -v $(pwd)/runners:/app/runners ` ** :挂载 Runner 安装目录,Runner 二进制与注册信息都保存在此;不挂载则容器删除后所有 Runner 丢失。镜像以 UID 1001 运行,宿主机上请保证该目录对 UID 1001 可写(例如 ` chown 1001:1001 runners ` )。若需界面「GitHub 显示」状态检查,请在各自 runner 子目录(如 ` runners/xxx/ ` )下放置 ` .github_check_token ` 文件。
3333- 镜像内工作目录为 ` /app ` ,` -config ` 默认为 ` /app/config.yaml ` 。` config.yaml ` 中 ` runners.base_path ` 需为 ` /app/runners ` (或与挂载路径一致)。
3434
Original file line number Diff line number Diff line change @@ -416,7 +416,7 @@ func UpdateRunner(c echo.Context) error {
416416 if he , ok := err .(* echo.HTTPError ); ok {
417417 return he
418418 }
419- return echo .NewHTTPError (http .StatusInternalServerError , "保存配置失败" )
419+ return echo .NewHTTPError (http .StatusInternalServerError , "保存配置失败: " + err . Error () )
420420 }
421421 cfg , err := getConfig (c )
422422 if err != nil {
@@ -457,7 +457,7 @@ func RemoveRunnerByName(c echo.Context) error {
457457 if he , ok := err .(* echo.HTTPError ); ok {
458458 return he
459459 }
460- return echo .NewHTTPError (http .StatusInternalServerError , "保存配置失败" )
460+ return echo .NewHTTPError (http .StatusInternalServerError , "保存配置失败: " + err . Error () )
461461 }
462462 return c .JSON (http .StatusOK , map [string ]any {"message" : "已从配置中移除" })
463463}
You can’t perform that action at this time.
0 commit comments