fix-ci-dynamic-ip
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user