parent
2ee249f6f7
commit
38f64f770d
@ -404,7 +404,25 @@ jobs:
|
||||
docker push ${{ env.DOCKER_REGISTRY }}/ppanel/ppanel-user-web:${{ env.VERSION }}
|
||||
fi
|
||||
|
||||
|
||||
- name: SSH连接预检查
|
||||
if: env.BUILD_TARGET == 'admin' || env.BUILD_TARGET == 'user' || env.BUILD_TARGET == 'both'
|
||||
uses: appleboy/ssh-action@v1.0.3
|
||||
with:
|
||||
host: ${{ secrets.HOST }}
|
||||
username: ${{ secrets.USERNAME }}
|
||||
key: ${{ secrets.KEY }}
|
||||
port: ${{ secrets.PORT }}
|
||||
timeout: 60s
|
||||
command_timeout: 30s
|
||||
debug: true
|
||||
script: |
|
||||
echo "=== SSH连接测试 ==="
|
||||
echo "连接时间: $(date)"
|
||||
echo "服务器主机名: $(hostname)"
|
||||
echo "当前用户: $(whoami)"
|
||||
echo "系统信息: $(uname -a)"
|
||||
echo "Docker版本: $(docker --version 2>/dev/null || echo 'Docker未安装')"
|
||||
echo "✅ SSH连接成功"
|
||||
|
||||
- name: 部署管理面板到服务器
|
||||
if: env.BUILD_TARGET == 'admin' || env.BUILD_TARGET == 'both'
|
||||
@ -416,6 +434,16 @@ jobs:
|
||||
port: ${{ secrets.PORT }}
|
||||
timeout: 300s
|
||||
command_timeout: 600s
|
||||
debug: true
|
||||
use_insecure_cipher: false
|
||||
cipher: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
|
||||
fingerprint: ""
|
||||
proxy_host: ""
|
||||
proxy_port: ""
|
||||
proxy_username: ""
|
||||
proxy_password: ""
|
||||
proxy_timeout: 30s
|
||||
proxy_use_insecure_cipher: false
|
||||
script: |
|
||||
echo "=== SSH变量调试信息 ==="
|
||||
echo "DOCKER_REGISTRY: ${{ env.DOCKER_REGISTRY }}"
|
||||
@ -480,24 +508,53 @@ jobs:
|
||||
|
||||
# 安全停止和移除容器
|
||||
echo "检查现有容器状态..."
|
||||
if docker ps -q -f name=ppanel-admin-web | grep -q .; then
|
||||
CONTAINER_NAME="ppanel-admin-web"
|
||||
|
||||
# 检查容器是否存在
|
||||
if docker ps -aq -f name=$CONTAINER_NAME | grep -q .; then
|
||||
echo "发现现有容器,开始清理..."
|
||||
|
||||
# 检查容器是否正在运行
|
||||
if docker ps -q -f name=$CONTAINER_NAME | grep -q .; then
|
||||
echo "停止运行中的容器..."
|
||||
docker stop ppanel-admin-web --time=10 || true
|
||||
sleep 3
|
||||
docker stop $CONTAINER_NAME --time=15 || true
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
if docker ps -aq -f name=ppanel-admin-web | grep -q .; then
|
||||
echo "移除现有容器..."
|
||||
# 等待容器完全停止
|
||||
for i in {1..10}; do
|
||||
if docker rm ppanel-admin-web 2>/dev/null; then
|
||||
echo "容器移除成功"
|
||||
# 检查容器是否正在被移除
|
||||
echo "检查容器移除状态..."
|
||||
for i in {1..15}; do
|
||||
# 尝试获取容器状态
|
||||
CONTAINER_STATUS=$(docker inspect $CONTAINER_NAME --format='{{.State.Status}}' 2>/dev/null || echo "not_found")
|
||||
|
||||
if [ "$CONTAINER_STATUS" = "not_found" ]; then
|
||||
echo "✅ 容器已不存在"
|
||||
break
|
||||
elif [ "$CONTAINER_STATUS" = "removing" ]; then
|
||||
echo "⏳ 容器正在移除中,等待完成... $i/15"
|
||||
sleep 3
|
||||
else
|
||||
echo "尝试移除容器... $i/15"
|
||||
if docker rm -f $CONTAINER_NAME 2>/dev/null; then
|
||||
echo "✅ 容器移除成功"
|
||||
break
|
||||
else
|
||||
echo "等待容器停止... $i/10"
|
||||
echo "⚠️ 容器移除失败,重试..."
|
||||
sleep 2
|
||||
fi
|
||||
fi
|
||||
|
||||
# 最后一次尝试强制清理
|
||||
if [ $i -eq 15 ]; then
|
||||
echo "🔧 执行强制清理..."
|
||||
docker kill $CONTAINER_NAME 2>/dev/null || true
|
||||
sleep 2
|
||||
docker rm -f $CONTAINER_NAME 2>/dev/null || true
|
||||
sleep 2
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "✅ 未发现现有容器"
|
||||
fi
|
||||
|
||||
echo "启动新容器..."
|
||||
@ -535,6 +592,16 @@ jobs:
|
||||
port: ${{ secrets.PORT }}
|
||||
timeout: 300s
|
||||
command_timeout: 600s
|
||||
debug: true
|
||||
use_insecure_cipher: false
|
||||
cipher: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
|
||||
fingerprint: ""
|
||||
proxy_host: ""
|
||||
proxy_port: ""
|
||||
proxy_username: ""
|
||||
proxy_password: ""
|
||||
proxy_timeout: 30s
|
||||
proxy_use_insecure_cipher: false
|
||||
script: |
|
||||
echo "=== SSH变量调试信息 ==="
|
||||
echo "DOCKER_REGISTRY: ${{ env.DOCKER_REGISTRY }}"
|
||||
@ -599,24 +666,53 @@ jobs:
|
||||
|
||||
# 安全停止和移除容器
|
||||
echo "检查现有容器状态..."
|
||||
if docker ps -q -f name=ppanel-user-web | grep -q .; then
|
||||
CONTAINER_NAME="ppanel-user-web"
|
||||
|
||||
# 检查容器是否存在
|
||||
if docker ps -aq -f name=$CONTAINER_NAME | grep -q .; then
|
||||
echo "发现现有容器,开始清理..."
|
||||
|
||||
# 检查容器是否正在运行
|
||||
if docker ps -q -f name=$CONTAINER_NAME | grep -q .; then
|
||||
echo "停止运行中的容器..."
|
||||
docker stop ppanel-user-web --time=10 || true
|
||||
sleep 3
|
||||
docker stop $CONTAINER_NAME --time=15 || true
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
if docker ps -aq -f name=ppanel-user-web | grep -q .; then
|
||||
echo "移除现有容器..."
|
||||
# 等待容器完全停止
|
||||
for i in {1..10}; do
|
||||
if docker rm ppanel-user-web 2>/dev/null; then
|
||||
echo "容器移除成功"
|
||||
# 检查容器是否正在被移除
|
||||
echo "检查容器移除状态..."
|
||||
for i in {1..15}; do
|
||||
# 尝试获取容器状态
|
||||
CONTAINER_STATUS=$(docker inspect $CONTAINER_NAME --format='{{.State.Status}}' 2>/dev/null || echo "not_found")
|
||||
|
||||
if [ "$CONTAINER_STATUS" = "not_found" ]; then
|
||||
echo "✅ 容器已不存在"
|
||||
break
|
||||
elif [ "$CONTAINER_STATUS" = "removing" ]; then
|
||||
echo "⏳ 容器正在移除中,等待完成... $i/15"
|
||||
sleep 3
|
||||
else
|
||||
echo "尝试移除容器... $i/15"
|
||||
if docker rm -f $CONTAINER_NAME 2>/dev/null; then
|
||||
echo "✅ 容器移除成功"
|
||||
break
|
||||
else
|
||||
echo "等待容器停止... $i/10"
|
||||
echo "⚠️ 容器移除失败,重试..."
|
||||
sleep 2
|
||||
fi
|
||||
fi
|
||||
|
||||
# 最后一次尝试强制清理
|
||||
if [ $i -eq 15 ]; then
|
||||
echo "🔧 执行强制清理..."
|
||||
docker kill $CONTAINER_NAME 2>/dev/null || true
|
||||
sleep 2
|
||||
docker rm -f $CONTAINER_NAME 2>/dev/null || true
|
||||
sleep 2
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "✅ 未发现现有容器"
|
||||
fi
|
||||
|
||||
echo "启动新容器..."
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user