Update main.yml
This commit is contained in:
83
.github/workflows/main.yml
vendored
83
.github/workflows/main.yml
vendored
@@ -5,96 +5,27 @@ on:
|
|||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
reason:
|
||||||
|
description: '手动触发部署的原因'
|
||||||
|
required: false
|
||||||
|
default: '手动部署'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
environment: SSH-KEY
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: 安装依赖工具
|
- name: 安装依赖工具
|
||||||
run: sudo apt-get install -y sshpass expect
|
run: sudo apt-get install -y sshpass expect
|
||||||
|
|
||||||
- name: 创建部署脚本
|
|
||||||
run: |
|
|
||||||
cat > deploy.sh << 'EOF'
|
|
||||||
#!/usr/bin/expect -f
|
|
||||||
set timeout 60
|
|
||||||
|
|
||||||
# 连接服务器
|
|
||||||
spawn ssh -o StrictHostKeyChecking=no -p 42422 $env(SERVER_USER)@$env(SERVER_ADDRESS)
|
|
||||||
|
|
||||||
# 处理普通密码提示
|
|
||||||
expect {
|
|
||||||
"Password:" {
|
|
||||||
send "$env(SERVER_PASSWORD)\r"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# 等待登录成功
|
|
||||||
expect "$ "
|
|
||||||
|
|
||||||
# 关闭服务
|
|
||||||
send "sudo systemctl stop neobot.service\r"
|
|
||||||
expect {
|
|
||||||
"Password:" {
|
|
||||||
send "$env(SERVER_PASSWORD)\r"
|
|
||||||
exp_continue
|
|
||||||
}
|
|
||||||
"$ " {}
|
|
||||||
}
|
|
||||||
|
|
||||||
# 拉取最新代码
|
|
||||||
send "cd /home/luoxiaolei/neobot/NeoBot && git pull origin main\r"
|
|
||||||
expect {
|
|
||||||
"error:" {
|
|
||||||
send_user "代码拉取失败!\n"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
"$ " {}
|
|
||||||
}
|
|
||||||
|
|
||||||
# 重启服务
|
|
||||||
send "sudo systemctl start neobot.service\r"
|
|
||||||
expect {
|
|
||||||
"Password:" {
|
|
||||||
send "$env(SERVER_PASSWORD)\r"
|
|
||||||
exp_continue
|
|
||||||
}
|
|
||||||
"$ " {}
|
|
||||||
}
|
|
||||||
|
|
||||||
# 检查服务状态
|
|
||||||
send "sudo systemctl status neobot.service\r"
|
|
||||||
expect {
|
|
||||||
"active (running)" {
|
|
||||||
send_user "服务重启成功!\n"
|
|
||||||
}
|
|
||||||
"failed" {
|
|
||||||
send_user "服务启动失败!\n"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# 退出
|
|
||||||
send "exit\r"
|
|
||||||
|
|
||||||
expect eof
|
|
||||||
EOF
|
|
||||||
chmod +x deploy.sh
|
|
||||||
|
|
||||||
- name: 执行部署
|
- name: 执行部署
|
||||||
run: |
|
run: |
|
||||||
export SERVER_USER="${{ secrets.SERVER_USER }}"
|
sshpass -p "${{ secrets.SERVER_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p 42422 ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_ADDRESS }} 'sudo systemctl stop neobot.service && cd /home/luoxiaolei/neobot/NeoBot && git pull origin main && sudo systemctl start neobot.service'
|
||||||
export SERVER_ADDRESS="${{ secrets.SERVER_ADDRESS }}"
|
|
||||||
export SERVER_PASSWORD="${{ secrets.SERVER_PASSWORD }}"
|
|
||||||
./deploy.sh
|
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: 清理脚本
|
|
||||||
run: rm deploy.sh
|
|
||||||
|
|
||||||
- name: 检查部署状态
|
- name: 检查部署状态
|
||||||
if: failure()
|
if: failure()
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
Reference in New Issue
Block a user