fix-ci-dynamic-ip
Some checks failed
CI / build-and-test (push) Failing after 17s
CI / deploy (push) Has been skipped

This commit is contained in:
SpecialX
2026-02-25 17:49:11 +08:00
parent 76176d6da8
commit af9df01046

View File

@@ -14,23 +14,38 @@ jobs:
runs-on: CDCD runs-on: CDCD
container: container:
image: dockerreg.eazygame.cn/node:22-bookworm image: dockerreg.eazygame.cn/node:22-bookworm
# 使用 host 网络模式,让容器共享宿主机的网络栈 # 不再硬编码 options改用动态脚本配置
# 这样容器就能解析宿主机的 hosts也能访问 localhost:3000 (Gitea) 和 localhost:7890 (Clash)
# 同时强制将 Gitea 域名解析到 localhost (宿主机),确保能连上
options: --network host --add-host gittea.eazygame.cn:127.0.0.1
env: env:
SKIP_ENV_VALIDATION: "1" SKIP_ENV_VALIDATION: "1"
NEXT_TELEMETRY_DISABLED: "1" NEXT_TELEMETRY_DISABLED: "1"
# 使用 host 模式后,容器内的 localhost 就是宿主机本身 # 代理设置将在步骤中动态生成,这里先留空或仅保留默认值
http_proxy: "http://127.0.0.1:7890" # http_proxy: ... (removed)
https_proxy: "http://127.0.0.1:7890"
HTTP_PROXY: "http://127.0.0.1:7890"
HTTPS_PROXY: "http://127.0.0.1:7890"
# 【关键修正】添加 NO_PROXY让内网 IP 不走代理
NO_PROXY: "localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,gittea.eazygame.cn,.eazygame.cn"
no_proxy: "localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,gittea.eazygame.cn,.eazygame.cn"
steps: steps:
- name: 🌐 Setup Network & Proxy (Dynamic)
run: |
# 1. 动态获取 Docker 网关 IP (即宿主机 IP)
GATEWAY_IP=$(ip route show | grep default | awk '{print $3}')
echo "Detected Docker Gateway IP: $GATEWAY_IP"
# 2. 配置 Host 解析 (解决 gittea.eazygame.cn 无法访问的问题)
# 注意:需要容器内有 root 权限 (node 镜像默认是 root)
echo "$GATEWAY_IP gittea.eazygame.cn" >> /etc/hosts
cat /etc/hosts
# 3. 动态设置代理环境变量
PROXY_URL="http://$GATEWAY_IP:7890"
echo "Setting Proxy to: $PROXY_URL"
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
# 4. 设置 NO_PROXY (内网不走代理)
# 包含 localhost, 127.0.0.1, 网关IP, 以及 Gitea 域名
NO_PROXY_VAL="localhost,127.0.0.1,$GATEWAY_IP,gittea.eazygame.cn,.eazygame.cn,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12"
echo "NO_PROXY=$NO_PROXY_VAL" >> $GITHUB_ENV
echo "no_proxy=$NO_PROXY_VAL" >> $GITHUB_ENV
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
@@ -55,11 +70,11 @@ jobs:
- name: Debug Network - name: Debug Network
run: | run: |
echo "Testing connection to proxy..." echo "Testing connection to 172.28.0.1 proxy..."
curl -v http://127.0.0.1:7890 || echo "Failed to connect to 127.0.0.1:7890" curl -v --connect-timeout 2 http://172.28.0.1:7890 || echo "Failed to connect to 172.28.0.1:7890"
echo "Testing google via proxy..." echo "Testing google via proxy (172.28.0.1)..."
curl -I -x http://127.0.0.1:7890 https://www.google.com || echo "Failed to curl google" curl -I -x http://172.28.0.1:7890 https://www.google.com || echo "Failed to curl google via 172.28.0.1"
echo "Current IP info:" echo "Current IP info:"
ip addr || true ip addr || true
@@ -150,6 +165,25 @@ jobs:
container: container:
image: dockerreg.eazygame.cn/node-with-docker:22 image: dockerreg.eazygame.cn/node-with-docker:22
steps: steps:
- name: 🌐 Setup Network (Dynamic) for Deploy
run: |
# 1. 动态获取 Docker 网关 IP (即宿主机 IP)
# 注意:如果在宿主机直接运行 (没有 container),这个逻辑可能不需要,或者 IP 就是 127.0.0.1
# 但为了保险起见,我们还是探测一下
GATEWAY_IP=$(ip route show | grep default | awk '{print $3}') || echo "127.0.0.1"
echo "Detected Gateway IP: $GATEWAY_IP"
# 2. 配置 Host 解析 (如果是在容器内运行)
if [ -f /etc/hosts ] && [ "$(id -u)" -eq 0 ]; then
echo "$GATEWAY_IP gittea.eazygame.cn" >> /etc/hosts || true
cat /etc/hosts
fi
# 3. 设置 NO_PROXY 环境变量供后续步骤使用
NO_PROXY_VAL="localhost,127.0.0.1,$GATEWAY_IP,gittea.eazygame.cn,.eazygame.cn,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12"
echo "NO_PROXY=$NO_PROXY_VAL" >> $GITHUB_ENV
echo "no_proxy=$NO_PROXY_VAL" >> $GITHUB_ENV
- name: Download artifacts - name: Download artifacts
uses: actions/download-artifact@v3 uses: actions/download-artifact@v3
with: with: