v2: fix download with gzip check + multi-source retry
This commit is contained in:
@@ -21,61 +21,77 @@ jobs:
|
||||
KEYEOF
|
||||
chmod 600 /tmp/new_server_key
|
||||
|
||||
SSH_CMD="ssh -i /tmp/new_server_key -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ServerAliveInterval=60 root@172.30.18.199"
|
||||
S="ssh -i /tmp/new_server_key -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ServerAliveInterval=60 root@172.30.18.199"
|
||||
|
||||
echo "=== 步骤0: 检查当前Python版本 ==="
|
||||
$SSH_CMD 'export PATH=/usr/local/bin:$PATH; python3 --version 2>&1; pip3 --version 2>&1 || true'
|
||||
$S 'export PATH=/usr/local/bin:$PATH; python3 --version 2>&1; pip3 --version 2>&1 || true'
|
||||
|
||||
# 检查是否已安装Python 3.10
|
||||
if $SSH_CMD 'export PATH=/usr/local/bin:$PATH; python3 --version 2>&1 | grep -q 3.10' 2>/dev/null; then
|
||||
if $S 'export PATH=/usr/local/bin:$PATH; python3 --version 2>&1 | grep -q 3.10' 2>/dev/null; then
|
||||
echo "Python 3.10 已安装,跳过编译"
|
||||
SKIP_BUILD=1
|
||||
else
|
||||
SKIP_BUILD=0
|
||||
fi
|
||||
|
||||
if [ "$SKIP_BUILD" = "0" ]; then
|
||||
echo ""
|
||||
echo "=== 步骤1: 安装编译依赖 ==="
|
||||
$SSH_CMD 'yum install -y gcc gcc-c++ make openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel wget git 2>&1 | tail -5'
|
||||
$S 'yum install -y gcc gcc-c++ make openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel wget git 2>&1 | tail -3'
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤2: 下载Python 3.10.14源码 ==="
|
||||
$SSH_CMD 'cd /tmp && (wget -q --timeout=60 --tries=3 https://mirrors.huaweicloud.com/python/3.10.14/Python-3.10.14.tgz && echo download_ok || wget -q --timeout=60 --tries=3 https://npmmirror.com/mirrors/python/3.10.14/Python-3.10.14.tgz && echo download_ok)'
|
||||
echo "=== 步骤2: 下载Python 3.10.14源码(多源重试+校验) ==="
|
||||
$S 'cd /tmp && rm -f Python-3.10.14.tgz && \
|
||||
for url in \
|
||||
"https://mirrors.huaweicloud.com/python/3.10.14/Python-3.10.14.tgz" \
|
||||
"https://npmmirror.com/mirrors/python/3.10.14/Python-3.10.14.tgz" \
|
||||
"https://registry.npmmirror.com/-/binary/python/3.10.14/Python-3.10.14.tgz" \
|
||||
"https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz"; do \
|
||||
echo "Trying: $url"; \
|
||||
wget -q --timeout=30 --tries=2 -O Python-3.10.14.tgz "$url" && \
|
||||
gzip -t Python-3.10.14.tgz 2>/dev/null && \
|
||||
SIZE=$(stat -c%s Python-3.10.14.tgz 2>/dev/null || stat -f%z Python-3.10.14.tgz 2>/dev/null) && \
|
||||
if [ "$SIZE" -gt 20000000 ]; then echo "download_ok: $SIZE bytes"; break; else echo "too small: $SIZE, retrying..."; fi; \
|
||||
done'
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤3: 解压并编译安装 ==="
|
||||
$SSH_CMD 'cd /tmp && rm -rf Python-3.10.14 && tar xzf Python-3.10.14.tgz && echo extract_ok'
|
||||
$SSH_CMD 'cd /tmp/Python-3.10.14 && ./configure --prefix=/usr/local --with-ensurepip=install 2>&1 | tail -3'
|
||||
$S 'cd /tmp && rm -rf Python-3.10.14 && tar xzf Python-3.10.14.tgz && echo extract_ok'
|
||||
$S 'cd /tmp/Python-3.10.14 && ./configure --prefix=/usr/local --with-ensurepip=install 2>&1 | tail -3'
|
||||
echo "开始编译(约5-10分钟)..."
|
||||
$SSH_CMD 'cd /tmp/Python-3.10.14 && make -j$(nproc) 2>&1 | tail -5'
|
||||
$SSH_CMD 'cd /tmp/Python-3.10.14 && make altinstall 2>&1 | tail -5'
|
||||
$S 'cd /tmp/Python-3.10.14 && make -j$(nproc) > /tmp/python_make.log 2>&1 && echo make_ok || (tail -20 /tmp/python_make.log; echo make_failed; exit 1)'
|
||||
$S 'cd /tmp/Python-3.10.14 && make altinstall 2>&1 | tail -5'
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤4: 设置为默认python3和pip3 ==="
|
||||
$SSH_CMD 'ln -sf /usr/local/bin/python3.10 /usr/local/bin/python3 && ln -sf /usr/local/bin/pip3.10 /usr/local/bin/pip3 && echo link_ok'
|
||||
$S 'ln -sf /usr/local/bin/python3.10 /usr/local/bin/python3 && ln -sf /usr/local/bin/pip3.10 /usr/local/bin/pip3 && echo link_ok'
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤5: 验证Python 3.10 ==="
|
||||
$SSH_CMD 'export PATH=/usr/local/bin:$PATH; python3 --version; pip3 --version; pip3 install --help 2>&1 | grep -q break-system-packages && echo "pip3 supports --break-system-packages"'
|
||||
$S 'export PATH=/usr/local/bin:$PATH; python3 --version; pip3 --version; pip3 install --help 2>&1 | grep -q break-system-packages && echo "pip3 supports --break-system-packages" || echo "WARNING: no --break-system-packages"'
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤6: 安装git ==="
|
||||
$SSH_CMD 'which git 2>/dev/null || yum install -y git 2>&1 | tail -3'
|
||||
$SSH_CMD 'git --version'
|
||||
$S 'which git 2>/dev/null || (yum install -y git 2>&1 | tail -3)'
|
||||
$S 'git --version 2>&1'
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤7: 修复CMD Agent端口 5000->5927 ==="
|
||||
$SSH_CMD 'cd /opt/cmd-agent && sed -i "s/port=5000/port=5927/g; s/port = 5000/port = 5927/g; s/\"5000\"/\"5927\"/g" server.py 2>&1; echo sed_done'
|
||||
$SSH_CMD 'systemctl daemon-reload; systemctl restart cmd-agent 2>&1; sleep 2; systemctl is-active cmd-agent'
|
||||
$SSH_CMD 'ss -tlnp 2>/dev/null | grep 5927 || netstat -tlnp 2>/dev/null | grep 5927 || echo "checking port..."'
|
||||
$S 'cd /opt/cmd-agent && sed -i "s/port=5000/port=5927/g; s/port = 5000/port = 5927/g; s/\"5000\"/\"5927\"/g" server.py 2>&1; echo sed_done'
|
||||
$S 'systemctl daemon-reload; systemctl restart cmd-agent 2>&1; sleep 2; systemctl is-active cmd-agent'
|
||||
$S '(ss -tlnp 2>/dev/null | grep 5927) || (netstat -tlnp 2>/dev/null | grep 5927) || echo "port 5927 not found, checking 5000..."; (ss -tlnp 2>/dev/null | grep 5000) || (netstat -tlnp 2>/dev/null | grep 5000) || echo "no cmd-agent port listening"'
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤8: 重启6个Runner ==="
|
||||
$SSH_CMD 'for i in 1 2 3 4 5 6; do systemctl restart act-runner-$i.service 2>/dev/null && echo "runner-$i restarted" || systemctl restart gitea-runner-$i.service 2>/dev/null && echo "runner-$i restarted(old)" || echo "runner-$i not found"; done'
|
||||
$S 'for i in 1 2 3 4 5 6; do systemctl restart act-runner-$i.service 2>/dev/null && echo "runner-$i restarted" || systemctl restart gitea-runner-$i.service 2>/dev/null && echo "runner-$i restarted(old)" || echo "runner-$i not found"; done'
|
||||
|
||||
echo ""
|
||||
echo "=== 步骤9: 最终验证 ==="
|
||||
$SSH_CMD 'echo "--- Python ---"; export PATH=/usr/local/bin:$PATH; python3 --version; pip3 --version'
|
||||
$SSH_CMD 'echo "--- Git ---"; git --version'
|
||||
$SSH_CMD 'echo "--- CMD Agent ---"; systemctl is-active cmd-agent'
|
||||
$SSH_CMD 'echo "--- Port 5927 ---"; (ss -tlnp 2>/dev/null | grep 5927 || netstat -tlnp 2>/dev/null | grep 5927 || echo "port not found")'
|
||||
$S 'echo "--- Python ---"; export PATH=/usr/local/bin:$PATH; python3 --version; pip3 --version'
|
||||
$S 'echo "--- Git ---"; git --version 2>&1'
|
||||
$S 'echo "--- CMD Agent ---"; systemctl is-active cmd-agent'
|
||||
$S 'echo "--- Runners ---"; systemctl list-units "act-runner-*.service" --no-legend 2>/dev/null | head -6 || systemctl list-units "gitea-runner-*.service" --no-legend 2>/dev/null | head -6'
|
||||
|
||||
echo ""
|
||||
echo "=== 全部完成 ==="
|
||||
|
||||
Reference in New Issue
Block a user