fix-ci-dynamic-ip
This commit is contained in:
@@ -14,23 +14,38 @@ jobs:
|
||||
runs-on: CDCD
|
||||
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
|
||||
# 不再硬编码 options,改用动态脚本配置
|
||||
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"
|
||||
|
||||
# 【关键修正】添加 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"
|
||||
# 代理设置将在步骤中动态生成,这里先留空或仅保留默认值
|
||||
# http_proxy: ... (removed)
|
||||
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
|
||||
uses: actions/checkout@v3
|
||||
@@ -55,11 +70,11 @@ jobs:
|
||||
|
||||
- name: Debug Network
|
||||
run: |
|
||||
echo "Testing connection to proxy..."
|
||||
curl -v http://127.0.0.1:7890 || echo "Failed to connect to 127.0.0.1:7890"
|
||||
echo "Testing connection to 172.28.0.1 proxy..."
|
||||
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..."
|
||||
curl -I -x http://127.0.0.1:7890 https://www.google.com || echo "Failed to curl google"
|
||||
echo "Testing google via proxy (172.28.0.1)..."
|
||||
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:"
|
||||
ip addr || true
|
||||
@@ -150,6 +165,25 @@ jobs:
|
||||
container:
|
||||
image: dockerreg.eazygame.cn/node-with-docker:22
|
||||
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
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
|
||||
Reference in New Issue
Block a user