ci: use ssh key for main deploy
Build docker and publish / build (20.15.1) (push) Failing after 8m20s

This commit is contained in:
2026-05-13 11:43:01 -07:00
parent 2bdce44e12
commit 4581a6fc17
+34 -33
View File
@@ -5,23 +5,22 @@ on:
push: push:
branches: branches:
- main - main
- internal
pull_request: pull_request:
branches: branches:
- main - main
- internal
env: env:
# Docker镜像仓库 # Docker镜像仓库
REPO: ${{ vars.REPO || 'registry.kxsw.us/vpn-server' }} REPO: ${{ vars.REPO || 'registry.kxsw.us/vpn-server' }}
# SSH连接信息 (根据分支自动选择) # SSH连接信息 (根据分支自动选择服务器和用户)
SSH_HOST: ${{ github.ref_name == 'main' && vars.SSH_HOST || vars.DEV_SSH_HOST }} SSH_HOST: ${{ github.ref_name == 'main' && vars.SSH_HOST || vars.DEV_SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }} SSH_PORT: ${{ vars.SSH_PORT }}
SSH_USER: ${{ vars.SSH_USER }} SSH_USER: ${{ github.ref_name == 'main' && 'ubuntu' || 'root' }}
SSH_PASSWORD: ${{ github.ref_name == 'main' && vars.SSH_PASSWORD || vars.DEV_SSH_PASSWORD }} # SSH私钥(Gitea Secret 名称:AWS
SSH_KEY: ${{ secrets.AWS }}
# TG通知 # TG通知
TG_BOT_TOKEN: 8114337882:AAHkEx03HSu7RxN4IHBJJEnsK9aPPzNLIk0 TG_BOT_TOKEN: 8114337882:AAHkEx03HSu7RxN4IHBJJEnsK9aPPzNLIk0
TG_CHAT_ID: "-4940243803" TG_CHAT_ID: "-49402438031"
# Go构建变量 # Go构建变量
SERVICE: vpn SERVICE: vpn
SERVICE_STYLE: vpn SERVICE_STYLE: vpn
@@ -49,7 +48,7 @@ jobs:
if [ "${{ github.ref_name }}" = "main" ]; then if [ "${{ github.ref_name }}" = "main" ]; then
echo "DOCKER_TAG_SUFFIX=latest" >> $GITHUB_ENV echo "DOCKER_TAG_SUFFIX=latest" >> $GITHUB_ENV
echo "CONTAINER_NAME=ppanel-server" >> $GITHUB_ENV echo "CONTAINER_NAME=ppanel-server" >> $GITHUB_ENV
echo "DEPLOY_PATH=/root/hifast" >> $GITHUB_ENV echo "DEPLOY_PATH=/opt/ppanel" >> $GITHUB_ENV
echo "为 main 分支设置生产环境变量" echo "为 main 分支设置生产环境变量"
elif [ "${{ github.ref_name }}" = "internal" ]; then elif [ "${{ github.ref_name }}" = "internal" ]; then
echo "DOCKER_TAG_SUFFIX=internal" >> $GITHUB_ENV echo "DOCKER_TAG_SUFFIX=internal" >> $GITHUB_ENV
@@ -137,17 +136,15 @@ jobs:
echo "镜像推送完成" echo "镜像推送完成"
# 调试: 打印 SSH 连接信息 # 调试: 打印部署目标(不输出敏感信息
- name: 🔍 调试 - 打印 SSH 连接信息 - name: 🔍 调试 - 打印部署目标
run: | run: |
echo "========== SSH 连接信息调试 ==========" echo "========== 部署目标调试 =========="
echo "当前分支: ${{ github.ref_name }}" echo "当前分支: ${{ github.ref_name }}"
echo "SSH_HOST: ${{ env.SSH_HOST }}" echo "SSH_HOST: ${{ env.SSH_HOST }}"
echo "SSH_PORT: ${{ env.SSH_PORT }}" echo "SSH_PORT: ${{ env.SSH_PORT }}"
echo "SSH_USER: ${{ env.SSH_USER }}" echo "SSH_USER: ${{ env.SSH_USER }}"
echo "SSH_PASSWORD 长度: ${#SSH_PASSWORD}" echo "SSH认证方式: 私钥 (AWS)"
echo "SSH_PASSWORD 前3位: $(echo "$SSH_PASSWORD" | cut -c1-3)***"
echo "SSH_PASSWORD 完整值: ${{ env.SSH_PASSWORD }}"
echo "DEPLOY_PATH: ${{ env.DEPLOY_PATH }}" echo "DEPLOY_PATH: ${{ env.DEPLOY_PATH }}"
echo "=====================================" echo "====================================="
@@ -157,10 +154,10 @@ jobs:
with: with:
host: ${{ env.SSH_HOST }} host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USER }} username: ${{ env.SSH_USER }}
password: ${{ env.SSH_PASSWORD }} key: ${{ env.SSH_KEY }}
port: ${{ env.SSH_PORT }} port: ${{ env.SSH_PORT }}
source: "docker-compose.cloud.yml" source: "docker-compose.cloud.yml"
target: "${{ env.DEPLOY_PATH }}/" target: "/tmp/ppanel-deploy/"
# 步骤6: 连接服务器更新并启动 # 步骤6: 连接服务器更新并启动
- name: 🚀 连接服务器更新并启动 - name: 🚀 连接服务器更新并启动
@@ -168,7 +165,7 @@ jobs:
with: with:
host: ${{ env.SSH_HOST }} host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USER }} username: ${{ env.SSH_USER }}
password: ${{ env.SSH_PASSWORD }} key: ${{ env.SSH_KEY }}
port: ${{ env.SSH_PORT }} port: ${{ env.SSH_PORT }}
timeout: 300s timeout: 300s
command_timeout: 600s command_timeout: 600s
@@ -176,23 +173,27 @@ jobs:
echo "连接服务器成功,开始部署..." echo "连接服务器成功,开始部署..."
echo "部署目录: ${{ env.DEPLOY_PATH }}" echo "部署目录: ${{ env.DEPLOY_PATH }}"
echo "部署标签: ${{ env.DOCKER_TAG_SUFFIX }}" echo "部署标签: ${{ env.DOCKER_TAG_SUFFIX }}"
echo "登录用户: ${{ env.SSH_USER }}"
# 进入部署目录 if [ "${{ github.ref_name }}" = "main" ]; then
cd ${{ env.DEPLOY_PATH }} sudo mkdir -p ${{ env.DEPLOY_PATH }}
sudo cp /tmp/ppanel-deploy/docker-compose.cloud.yml ${{ env.DEPLOY_PATH }}/docker-compose.cloud.yml
# 创建/更新环境变量文件 cd ${{ env.DEPLOY_PATH }}
# echo "PPANEL_SERVER_TAG=${{ env.DOCKER_TAG_SUFFIX }}" > .env echo "📥 拉取镜像..."
sudo docker-compose -f docker-compose.cloud.yml pull ppanel-server
# 拉取最新镜像 echo "🚀 启动服务..."
echo "📥 拉取镜像..." sudo docker-compose -f docker-compose.cloud.yml up -d ppanel-server
docker-compose -f docker-compose.cloud.yml pull ppanel-server sudo docker image prune -f || true
else
# 启动服务 mkdir -p ${{ env.DEPLOY_PATH }}
echo "🚀 启动服务..." cp /tmp/ppanel-deploy/docker-compose.cloud.yml ${{ env.DEPLOY_PATH }}/docker-compose.cloud.yml
docker-compose -f docker-compose.cloud.yml up -d ppanel-server cd ${{ env.DEPLOY_PATH }}
echo "📥 拉取镜像..."
# 清理未使用的镜像 docker-compose -f docker-compose.cloud.yml pull ppanel-server
docker image prune -f || true echo "🚀 启动服务..."
docker-compose -f docker-compose.cloud.yml up -d ppanel-server
docker image prune -f || true
fi
echo "✅ 部署命令执行完成" echo "✅ 部署命令执行完成"
@@ -233,4 +234,4 @@ jobs:
⚠️ 请检查构建日志获取详细信息 ⚠️ 请检查构建日志获取详细信息
parse_mode: Markdown parse_mode: Markdown