Files
NeoBot/.github/workflows/main.yml
2026-01-23 00:57:59 +08:00

73 lines
2.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: 部署到生产环境
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
inputs:
reason:
description: '手动触发部署的原因'
required: false
default: '手动部署'
jobs:
deploy:
runs-on: ubuntu-latest
environment: SSH-KEY
steps:
- uses: actions/checkout@v4
- name: 安装依赖工具
run: sudo apt-get install -y sshpass expect
- name: 执行部署
run: |
sshpass -p "${{ secrets.SERVER_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p 42422 ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_ADDRESS }} '
set -ex
echo "=== 部署调试信息开始 ==="
echo "测试sudo权限..."
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S whoami
echo "停止服务..."
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S systemctl stop neobot.service
echo "修复文件权限..."
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S chown -R ${{ secrets.SERVER_USER }}:${{ secrets.SERVER_USER }} /home/luoxiaolei/neobot/NeoBot
cd /home/luoxiaolei/neobot/NeoBot
echo "配置Git安全目录..."
git config --global --add safe.directory /home/luoxiaolei/neobot/NeoBot
echo "检查Git配置..."
git config --global --list | grep -i "safe.directory"
echo "检查Git远程仓库..."
git remote -v
echo "检查SSH配置..."
echo "当前用户: $(whoami)"
echo "家目录: $HOME"
echo "检查SSH密钥..."
ls -la ~/.ssh/ 2>/dev/null || echo "没有SSH目录"
echo "检查SSH代理..."
ssh-add -l 2>/dev/null || echo "SSH代理没有密钥"
echo "测试GitHub SSH连接..."
ssh -T git@github.com 2>&1 || echo "SSH连接测试失败"
echo "拉取最新代码..."
# 设置Git超时时间并禁用主机密钥检查
GIT_SSH_COMMAND="ssh -o ConnectTimeout=30 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o GlobalKnownHostsFile=/dev/null"
export GIT_SSH_COMMAND
echo "环境变量 GIT_SSH_COMMAND: $GIT_SSH_COMMAND"
echo "尝试拉取代码(详细模式)..."
GIT_TRACE=1 GIT_SSH_COMMAND="ssh -o ConnectTimeout=30 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o GlobalKnownHostsFile=/dev/null" git pull origin main 2>&1
echo "启动服务..."
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S systemctl start neobot.service
echo "检查服务状态..."
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S systemctl status neobot.service --no-pager
echo "部署完成!"
echo "=== 部署调试信息结束 ==="
'
continue-on-error: true
- name: 检查部署状态
if: failure()
run: |
echo "部署失败!请检查服务器日志。"
exit 1