diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 08c15ff..8951a32 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -12,10 +12,20 @@ on: jobs: build-and-test: runs-on: CDCD - container: dockerreg.eazygame.cn/node:22-bookworm + container: + image: dockerreg.eazygame.cn/node:22-bookworm + # 使用 host 网络模式,让容器共享宿主机的网络栈 + # 这样容器就能解析宿主机的 hosts,也能访问 localhost:3000 (Gitea) 和 localhost:7890 (Clash) + # 同时强制将 Gitea 域名解析到 localhost (宿主机),确保能连上 + options: --network host --add-host gittea.eazygame.cn:127.0.0.1 env: SKIP_ENV_VALIDATION: "1" NEXT_TELEMETRY_DISABLED: "1" + # 使用 host 模式后,容器内的 localhost 就是宿主机本身 + http_proxy: "http://127.0.0.1:7890" + https_proxy: "http://127.0.0.1:7890" + HTTP_PROXY: "http://127.0.0.1:7890" + HTTPS_PROXY: "http://127.0.0.1:7890" steps: - name: Checkout @@ -33,31 +43,11 @@ jobs: - name: Configure npm proxy run: | - # 自动获取容器的默认网关 IP(即宿主机 IP) - # ip route show default | awk '{print $3}' - # 或者如果没有 ip 命令,尝试解析 host.docker.internal (如果 runner 支持) - # 这里假设容器内有 iproute2 工具 + # 容器现在是 Host 模式,直接使用 localhost 即可 + npm config set proxy "$HTTP_PROXY" + npm config set https-proxy "$HTTPS_PROXY" - GATEWAY_IP=$(ip route show | grep default | awk '{print $3}') - echo "Detected Docker Gateway: $GATEWAY_IP" - - if [ -z "$GATEWAY_IP" ]; then - echo "Warning: Could not detect gateway IP, falling back to 172.17.0.1" - GATEWAY_IP="172.17.0.1" - fi - - PROXY_URL="http://$GATEWAY_IP:7890" - echo "Using Proxy: $PROXY_URL" - - # 设置 npm 代理 - npm config set proxy "$PROXY_URL" - npm config set https-proxy "$PROXY_URL" - - # 设置环境变量供后续步骤使用 (例如 cypress, next build 等) - echo "http_proxy=$PROXY_URL" >> $GITHUB_ENV - echo "https_proxy=$PROXY_URL" >> $GITHUB_ENV - echo "HTTP_PROXY=$PROXY_URL" >> $GITHUB_ENV - echo "HTTPS_PROXY=$PROXY_URL" >> $GITHUB_ENV + echo "Using Proxy: $HTTP_PROXY" - name: Show proxy status run: |