♻️ 迁移 docker compose 并修复 runner 升级版本识别
Ubuntu System Information / show-system-info (push) Successful in 1s Details

This commit is contained in:
csh 2026-05-07 15:02:38 +08:00
parent 9d4c4a1f73
commit 34480c16e2
7 changed files with 75 additions and 63 deletions

View File

@ -119,14 +119,14 @@ cd docker-runner/presets/standard-ubuntu-22/
#### 3. 构建并启动容器 #### 3. 构建并启动容器
```bash ```bash
docker-compose build docker compose build
docker-compose up -d docker compose up -d
``` ```
#### 4. 安装 Runner #### 4. 安装 Runner
```bash ```bash
docker-compose exec gitea-runner /data/setup.sh docker compose exec gitea-runner /data/setup.sh
``` ```
脚本会自动探测最新 `act_runner` 版本作为默认值,然后提示你确认架构。 脚本会自动探测最新 `act_runner` 版本作为默认值,然后提示你确认架构。
@ -134,7 +134,7 @@ docker-compose exec gitea-runner /data/setup.sh
#### 5. 注册 Runner #### 5. 注册 Runner
```bash ```bash
docker-compose exec gitea-runner /data/register.sh docker compose exec gitea-runner /data/register.sh
``` ```
输入你的 Gitea 实例 URL 和注册令牌。 输入你的 Gitea 实例 URL 和注册令牌。
@ -145,10 +145,10 @@ Runner 注册后会自动启动,无需重启容器。
```bash ```bash
# 查看容器日志 # 查看容器日志
docker-compose logs -f docker compose logs -f
# 查看 runner 状态 # 查看 runner 状态
docker-compose exec gitea-runner /data/manage.sh status docker compose exec gitea-runner /data/manage.sh status
``` ```
--- ---
@ -178,8 +178,8 @@ environment:
#### 3. 构建并启动 #### 3. 构建并启动
```bash ```bash
docker-compose build docker compose build
docker-compose up -d docker compose up -d
``` ```
#### 4. 验证 Buildx 初始化 #### 4. 验证 Buildx 初始化
@ -190,18 +190,18 @@ docker-compose up -d
# ✓ arm64 support verified # ✓ arm64 support verified
# ✓ amd64 support verified # ✓ amd64 support verified
# ✓ Buildx configured successfully! # ✓ Buildx configured successfully!
docker-compose logs -f docker compose logs -f
# 进入容器验证 # 进入容器验证
docker-compose exec gitea-runner docker buildx ls docker compose exec gitea-runner docker buildx ls
# 应该看到 gitea-multiarch builder # 应该看到 gitea-multiarch builder
``` ```
#### 5. 安装和注册 #### 5. 安装和注册
```bash ```bash
docker-compose exec gitea-runner /data/setup.sh docker compose exec gitea-runner /data/setup.sh
docker-compose exec gitea-runner /data/register.sh docker compose exec gitea-runner /data/register.sh
``` ```
Runner 注册后会自动启动。 Runner 注册后会自动启动。
@ -216,52 +216,52 @@ Runner 注册后会自动启动。
```bash ```bash
# 列出所有 runners # 列出所有 runners
docker-compose exec gitea-runner /data/manage.sh list docker compose exec gitea-runner /data/manage.sh list
# 查看所有 runners 状态 # 查看所有 runners 状态
docker-compose exec gitea-runner /data/manage.sh status docker compose exec gitea-runner /data/manage.sh status
``` ```
### 日志管理 ### 日志管理
```bash ```bash
# 查看日志(最后 50 行) # 查看日志(最后 50 行)
docker-compose exec gitea-runner /data/manage.sh logs <runner-name> docker compose exec gitea-runner /data/manage.sh logs <runner-name>
# 指定行数 # 指定行数
docker-compose exec gitea-runner /data/manage.sh logs <runner-name> 100 docker compose exec gitea-runner /data/manage.sh logs <runner-name> 100
# 实时跟踪日志 # 实时跟踪日志
docker-compose exec gitea-runner /data/manage.sh follow <runner-name> docker compose exec gitea-runner /data/manage.sh follow <runner-name>
``` ```
### Runner 控制 ### Runner 控制
```bash ```bash
# 启动 runner # 启动 runner
docker-compose exec gitea-runner /data/manage.sh start <runner-name> docker compose exec gitea-runner /data/manage.sh start <runner-name>
# 停止 runner # 停止 runner
docker-compose exec gitea-runner /data/manage.sh stop <runner-name> docker compose exec gitea-runner /data/manage.sh stop <runner-name>
# 重启 runner # 重启 runner
docker-compose exec gitea-runner /data/manage.sh restart <runner-name> docker compose exec gitea-runner /data/manage.sh restart <runner-name>
# 删除 runner # 删除 runner
docker-compose exec gitea-runner /data/manage.sh delete <runner-name> docker compose exec gitea-runner /data/manage.sh delete <runner-name>
``` ```
### 升级 act_runner ### 升级 act_runner
```bash ```bash
# 自动检查最新稳定版本,下载后重启所有已注册 runners # 自动检查最新稳定版本,下载后重启所有已注册 runners
docker-compose exec gitea-runner /data/upgrade.sh docker compose exec gitea-runner /data/upgrade.sh
# 指定版本 # 指定版本
docker-compose exec gitea-runner /data/upgrade.sh --version 0.6.1 docker compose exec gitea-runner /data/upgrade.sh --version 0.6.1
# 仅重启指定 runner # 仅重启指定 runner
docker-compose exec gitea-runner /data/upgrade.sh --runner <runner-name> docker compose exec gitea-runner /data/upgrade.sh --runner <runner-name>
``` ```
`upgrade.sh` 只替换 `/data/bin/act_runner` 并重启 runner 进程,不会重新注册,也不需要重新输入 token。 `upgrade.sh` 只替换 `/data/bin/act_runner` 并重启 runner 进程,不会重新注册,也不需要重新输入 token。
@ -270,14 +270,14 @@ docker-compose exec gitea-runner /data/upgrade.sh --runner <runner-name>
```bash ```bash
# 注册新的 runner(使用不同名称) # 注册新的 runner(使用不同名称)
docker-compose exec gitea-runner /data/register.sh docker compose exec gitea-runner /data/register.sh
``` ```
### 交互式管理 ### 交互式管理
```bash ```bash
# 运行交互式菜单 # 运行交互式菜单
docker-compose exec gitea-runner /data/manage.sh docker compose exec gitea-runner /data/manage.sh
``` ```
--- ---
@ -405,24 +405,24 @@ CMD ["/app"]
### Q1: 如何更新 Runner 版本? ### Q1: 如何更新 Runner 版本?
```bash ```bash
docker-compose exec gitea-runner /data/upgrade.sh docker compose exec gitea-runner /data/upgrade.sh
# 脚本会自动从官方目录页检测最新 act_runner 版本 # 脚本会自动从官方目录页检测最新 act_runner 版本
``` ```
如需固定版本: 如需固定版本:
```bash ```bash
docker-compose exec gitea-runner /data/upgrade.sh --version 0.6.1 docker compose exec gitea-runner /data/upgrade.sh --version 0.6.1
``` ```
### Q2: 如何添加多个 Runners? ### Q2: 如何添加多个 Runners?
```bash ```bash
# 多次运行注册脚本,每次使用不同名称 # 多次运行注册脚本,每次使用不同名称
docker-compose exec gitea-runner /data/register.sh docker compose exec gitea-runner /data/register.sh
# 查看所有 runners # 查看所有 runners
docker-compose exec gitea-runner /data/manage.sh list docker compose exec gitea-runner /data/manage.sh list
``` ```
### Q3: 容器启动失败 "exec format error" ### Q3: 容器启动失败 "exec format error"
@ -440,36 +440,36 @@ cd docker-runner/presets/<your-preset>/
sed -i 's/\r$//' ../../common/*.sh sed -i 's/\r$//' ../../common/*.sh
# 重新构建 # 重新构建
docker-compose down docker compose down
docker-compose build --no-cache docker compose build --no-cache
docker-compose up -d docker compose up -d
``` ```
### Q4: 如何完全重置? ### Q4: 如何完全重置?
```bash ```bash
# 停止并删除容器和卷 # 停止并删除容器和卷
docker-compose down -v docker compose down -v
# 删除数据目录 # 删除数据目录
rm -rf runner-data rm -rf runner-data
# 重新构建 # 重新构建
docker-compose build --no-cache docker compose build --no-cache
docker-compose up -d docker compose up -d
``` ```
### Q5: 如何查看日志? ### Q5: 如何查看日志?
```bash ```bash
# 容器日志 # 容器日志
docker-compose logs -f docker compose logs -f
# Runner 日志 # Runner 日志
docker-compose exec gitea-runner /data/manage.sh logs <runner-name> docker compose exec gitea-runner /data/manage.sh logs <runner-name>
# 实时跟踪日志 # 实时跟踪日志
docker-compose exec gitea-runner /data/manage.sh follow <runner-name> docker compose exec gitea-runner /data/manage.sh follow <runner-name>
``` ```
### Q6: Buildx 版 - 构建速度慢? ### Q6: Buildx 版 - 构建速度慢?
@ -508,7 +508,7 @@ platforms: ${{ github.ref == 'refs/heads/main' && 'linux/amd64,linux/arm64' || '
```bash ```bash
# 进入容器 # 进入容器
docker-compose exec gitea-runner bash docker compose exec gitea-runner bash
# 检查 builder # 检查 builder
docker buildx ls docker buildx ls
@ -536,7 +536,7 @@ docker system df
```bash ```bash
# 进入容器 # 进入容器
docker-compose exec gitea-runner bash docker compose exec gitea-runner bash
# 清理构建缓存(保留 builder) # 清理构建缓存(保留 builder)
docker buildx prune docker buildx prune
@ -552,10 +552,10 @@ docker buildx rm gitea-multiarch
```bash ```bash
# 1. 停止所有容器 # 1. 停止所有容器
docker-compose down docker compose down
# 2. 清理 Buildx(如果使用 Buildx 版) # 2. 清理 Buildx(如果使用 Buildx 版)
docker-compose exec gitea-runner docker buildx rm gitea-multiarch docker compose exec gitea-runner docker buildx rm gitea-multiarch
# 3. 清理未使用的镜像 # 3. 清理未使用的镜像
docker image prune -a docker image prune -a
@ -593,7 +593,7 @@ runner-data/
```bash ```bash
# 1. 停止当前容器 # 1. 停止当前容器
cd docker-runner/presets/<current-preset>/ cd docker-runner/presets/<current-preset>/
docker-compose down docker compose down
# 2. 切换到新预设 # 2. 切换到新预设
cd ../buildx-ubuntu-22/ cd ../buildx-ubuntu-22/
@ -602,8 +602,8 @@ cd ../buildx-ubuntu-22/
cp -r ../standard-ubuntu-22/runner-data . cp -r ../standard-ubuntu-22/runner-data .
# 4. 启动新预设 # 4. 启动新预设
docker-compose build docker compose build
docker-compose up -d docker compose up -d
``` ```
--- ---

View File

@ -90,9 +90,9 @@ if [ $FIXED_COUNT -gt 0 ]; then
echo -e "${GREEN}✓ 所有问题已自动修复!${NC}" echo -e "${GREEN}✓ 所有问题已自动修复!${NC}"
echo "" echo ""
echo "建议执行以下命令重启容器:" echo "建议执行以下命令重启容器:"
echo " docker-compose down" echo " docker compose down"
echo " docker-compose build --no-cache" echo " docker compose build --no-cache"
echo " docker-compose up -d" echo " docker compose up -d"
echo "" echo ""
# 询问是否立即重启 # 询问是否立即重启
@ -100,13 +100,13 @@ if [ $FIXED_COUNT -gt 0 ]; then
echo "" echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "正在重启容器..." echo "正在重启容器..."
docker-compose down docker compose down
docker-compose build --no-cache docker compose build --no-cache
docker-compose up -d docker compose up -d
sleep 3 sleep 3
echo "" echo ""
echo "容器状态:" echo "容器状态:"
docker-compose ps docker compose ps
echo "" echo ""
echo "查看日志:" echo "查看日志:"
docker logs gitea-runner --tail=30 docker logs gitea-runner --tail=30

View File

@ -185,7 +185,7 @@ else
echo "⚠ act_runner not installed yet!" echo "⚠ act_runner not installed yet!"
echo "" echo ""
echo "Please run the setup script first:" echo "Please run the setup script first:"
echo " docker-compose exec gitea-runner /data/setup.sh" echo " docker compose exec gitea-runner /data/setup.sh"
echo "" echo ""
echo "Container is waiting..." echo "Container is waiting..."
@ -243,7 +243,7 @@ if [ $RUNNER_COUNT -eq 0 ]; then
echo "⚠ No runners registered yet!" echo "⚠ No runners registered yet!"
echo "" echo ""
echo "Please run the register script to add a runner:" echo "Please run the register script to add a runner:"
echo " docker-compose exec gitea-runner /data/register.sh" echo " docker compose exec gitea-runner /data/register.sh"
echo "" echo ""
fi fi

View File

@ -11,7 +11,7 @@ if ! command -v act_runner &> /dev/null; then
echo "✗ act_runner is not installed!" echo "✗ act_runner is not installed!"
echo "" echo ""
echo "Please run the setup script first:" echo "Please run the setup script first:"
echo " docker-compose exec gitea-runner /data/setup.sh" echo " docker compose exec gitea-runner /data/setup.sh"
exit 1 exit 1
fi fi
@ -301,10 +301,10 @@ echo " .runner: $(ls -lh .runner 2>/dev/null | awk '{print $5}' || echo 'N
echo " config.yaml: $(ls -lh config.yaml 2>/dev/null | awk '{print $5}' || echo 'N/A')" echo " config.yaml: $(ls -lh config.yaml 2>/dev/null | awk '{print $5}' || echo 'N/A')"
echo "" echo ""
echo "Useful commands:" echo "Useful commands:"
echo " View logs: docker-compose exec gitea-runner /data/manage.sh logs ${RUNNER_NAME}" echo " View logs: docker compose exec gitea-runner /data/manage.sh logs ${RUNNER_NAME}"
echo " Follow logs: docker-compose exec gitea-runner /data/manage.sh follow ${RUNNER_NAME}" echo " Follow logs: docker compose exec gitea-runner /data/manage.sh follow ${RUNNER_NAME}"
echo " Check status: docker-compose exec gitea-runner /data/manage.sh status" echo " Check status: docker compose exec gitea-runner /data/manage.sh status"
echo " Restart: docker-compose exec gitea-runner /data/manage.sh restart ${RUNNER_NAME}" echo " Restart: docker compose exec gitea-runner /data/manage.sh restart ${RUNNER_NAME}"
echo "" echo ""
# 显示最近的日志 # 显示最近的日志
@ -327,6 +327,6 @@ if [ -f "/var/log/supervisor/runner-${RUNNER_NAME}.err.log" ]; then
echo "$ERR_CONTENT" echo "$ERR_CONTENT"
echo "" echo ""
echo "Check full error log with:" echo "Check full error log with:"
echo " docker-compose exec gitea-runner cat /var/log/supervisor/runner-${RUNNER_NAME}.err.log" echo " docker compose exec gitea-runner cat /var/log/supervisor/runner-${RUNNER_NAME}.err.log"
fi fi
fi fi

View File

@ -134,7 +134,7 @@ if curl -L "$DOWNLOAD_URL" -o "$INSTALL_PATH"; then
echo "" echo ""
echo "Next steps:" echo "Next steps:"
echo "1. Register the runner:" echo "1. Register the runner:"
echo " docker-compose exec gitea-runner /data/register.sh" echo " docker compose exec gitea-runner /data/register.sh"
echo "" echo ""
echo "2. Start using the runner after registration." echo "2. Start using the runner after registration."
echo "" echo ""

View File

@ -29,7 +29,7 @@ fail() {
} }
extract_version_number() { extract_version_number() {
sed -nE 's/.*version[[:space:]]+([0-9]+\.[0-9]+\.[0-9]+).*/\1/p' | head -n 1 sed -nE 's/.*version[[:space:]]+v?([0-9]+\.[0-9]+\.[0-9]+).*/\1/p' | head -n 1
} }
extract_versions_from_listing() { extract_versions_from_listing() {

View File

@ -55,6 +55,17 @@ EOF
"pick_latest_version should return the highest semantic version" "pick_latest_version should return the highest semantic version"
} }
test_extract_version_number_accepts_v_prefix() {
local actual
actual=$(extract_version_number <<'EOF'
act_runner version v0.6.1
EOF
)
assert_eq "0.6.1" "${actual}" \
"extract_version_number should accept version output with a leading v"
}
fake_latest_version() { fake_latest_version() {
echo "0.6.2" echo "0.6.2"
} }
@ -81,6 +92,7 @@ test_resolve_latest_version_or_fallback_uses_fallback() {
test_extract_versions_from_listing test_extract_versions_from_listing
test_pick_latest_version test_pick_latest_version
test_extract_version_number_accepts_v_prefix
test_resolve_latest_version_or_fallback_prefers_latest test_resolve_latest_version_or_fallback_prefers_latest
test_resolve_latest_version_or_fallback_uses_fallback test_resolve_latest_version_or_fallback_uses_fallback