From 4ce793ef9bfb3bb45db7acb7858b0d319c0ea3b0 Mon Sep 17 00:00:00 2001 From: hotwa Date: Tue, 30 Sep 2025 21:32:31 +0800 Subject: [PATCH] test --- .gitea/workflows/build-and-push.yml | 32 +++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/build-and-push.yml b/.gitea/workflows/build-and-push.yml index ce931f7..bb25d94 100644 --- a/.gitea/workflows/build-and-push.yml +++ b/.gitea/workflows/build-and-push.yml @@ -43,32 +43,42 @@ jobs: docker logout "$ACR_REGISTRY" || true echo "$ACR_PASSWORD" | docker login "$ACR_REGISTRY" --username "$ACR_USERNAME" --password-stdin - - name: Start v2ray-client (write config + run + verify) + - name: Start v2ray-client (write + run + verify + logs) env: V2RAY_JSON: ${{ secrets.V2RAY_JSON }} run: | set -euo pipefail - # 1) 写配置到工作区(确保同一台 runner 的同一路径) + # 1) 写入配置 mkdir -p "${GITHUB_WORKSPACE}/v2ray" printf '%s' "$V2RAY_JSON" > "${GITHUB_WORKSPACE}/v2ray/config.json" - # 可选校验 jq . "${GITHUB_WORKSPACE}/v2ray/config.json" >/dev/null - # 2) 清理旧容器 - docker rm -f v2ray-client >/dev/null 2>&1 || true + # 2) 先用一次性容器验证“容器里是否能读到文件” + docker run --rm \ + --network host \ + --mount type=bind,src=${GITHUB_WORKSPACE}/v2ray,dst=/etc/v2ray,ro \ + v2fly/v2fly-core:latest \ + sh -lc 'ls -l /etc/v2ray && head -n2 /etc/v2ray/config.json || true' - # 3) 运行:使用 --mount 语法(可读性更好,SELinux 时也可加 ,z 或 ,Z) + # 3) 真正启动 + docker rm -f v2ray-client >/dev/null 2>&1 || true docker run -d --name v2ray-client \ --network host \ --mount type=bind,src=${GITHUB_WORKSPACE}/v2ray,dst=/etc/v2ray,ro \ v2fly/v2fly-core:latest \ - run -c /etc/v2ray/config.json + run -c /etc/v2ray/config.json -format jsonv5 - # 4) 立刻验证挂载和文件存在 - echo "== Mounts ==" && docker inspect -f '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}' v2ray-client - echo "== Container /etc/v2ray listing ==" && docker exec v2ray-client sh -lc 'ls -l /etc /etc/v2ray || true' - echo "== Head of config ==" && docker exec v2ray-client sh -lc 'head -n1 /etc/v2ray/config.json || echo "no config.json"' + # 4) 等 1 秒看状态,失败就打日志 + sleep 1 + if [ "$(docker inspect -f '{{.State.Running}}' v2ray-client 2>/dev/null)" != "true" ]; then + echo "== v2ray-client exited; logs ==" + docker logs v2ray-client || true + exit 1 + fi + + # 5)(可选)打印挂载确认 + docker inspect -f '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}' v2ray-client - name: Build Docker Image (host network; no Dockerfile change)