Skip to content

Commit a2f46db

Browse files
committed
fix: github runner require libicu
1 parent 99eadb3 commit a2f46db

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ ARG VERSION=dev
88
RUN CGO_ENABLED=0 go build -ldflags "-X main.Version=${VERSION}" -o runner-manager .
99

1010
FROM ubuntu:24.04
11+
# GitHub Actions Runner 需 .NET Core 6.0 依赖(libicu 等),与 installdependencies.sh 一致
1112
RUN 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"

docker-compose.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
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

57
services:
68
runner-dind:

docs/docker.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
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

internal/handler/handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)