73 lines
2.9 KiB
YAML
73 lines
2.9 KiB
YAML
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
|