telegram deploy
This commit is contained in:
parent
3ec677a55d
commit
76fadd931e
1 changed files with 140 additions and 0 deletions
140
.forgejo/workflows/deploy_bot.yaml
Normal file
140
.forgejo/workflows/deploy_bot.yaml
Normal file
|
|
@ -0,0 +1,140 @@
|
||||||
|
name: Deploy Telegram Bot
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- 'mnemo_cards_telegram_bot/**'
|
||||||
|
- 'mnemo_cards_common/**'
|
||||||
|
- 'mnemo_cards_common_backend/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy-bot:
|
||||||
|
name: Deploy Telegram Bot
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
apt-get update && apt-get install -y rsync openssh-client
|
||||||
|
|
||||||
|
- name: Setup SSH
|
||||||
|
run: |
|
||||||
|
echo "🔍 Debugging SSH connection..."
|
||||||
|
echo "Target host: ${{ secrets.SSH_HOST }}"
|
||||||
|
ping -c 3 ${{ secrets.SSH_HOST }} || echo "⚠️ Ping failed"
|
||||||
|
nslookup ${{ secrets.SSH_HOST }} || echo "⚠️ DNS lookup failed"
|
||||||
|
nc -zv ${{ secrets.SSH_HOST }} 22 || echo "⚠️ Port 22 not reachable"
|
||||||
|
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
|
||||||
|
chmod 600 ~/.ssh/id_rsa
|
||||||
|
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts 2>/dev/null || echo "⚠️ SSH keyscan failed"
|
||||||
|
|
||||||
|
- name: Sync Source Code
|
||||||
|
run: |
|
||||||
|
# Sync common packages
|
||||||
|
rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'doc' \
|
||||||
|
mnemo_cards_common \
|
||||||
|
mnemo_cards_common_backend \
|
||||||
|
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:~/
|
||||||
|
|
||||||
|
# Sync telegram bot project
|
||||||
|
rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'bot.exe' --exclude 'bot_build.exe' \
|
||||||
|
mnemo_cards_telegram_bot \
|
||||||
|
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:~/
|
||||||
|
|
||||||
|
- name: Get Dependencies
|
||||||
|
run: |
|
||||||
|
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ConnectTimeout=30 -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
|
||||||
|
set -e
|
||||||
|
cd ~/mnemo_cards_common
|
||||||
|
echo "📦 Getting common dependencies..."
|
||||||
|
dart pub get
|
||||||
|
|
||||||
|
cd ~/mnemo_cards_common_backend
|
||||||
|
echo "📦 Getting common backend dependencies..."
|
||||||
|
dart pub get
|
||||||
|
|
||||||
|
cd ~/mnemo_cards_telegram_bot
|
||||||
|
echo "📦 Getting telegram bot dependencies..."
|
||||||
|
dart pub get
|
||||||
|
ENDSSH
|
||||||
|
|
||||||
|
- name: Compile Bot
|
||||||
|
run: |
|
||||||
|
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ConnectTimeout=30 -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
|
||||||
|
set -e
|
||||||
|
cd ~/mnemo_cards_telegram_bot
|
||||||
|
echo "🔨 Compiling telegram bot..."
|
||||||
|
dart compile exe --verbose bin/main.dart -o bot_build.exe
|
||||||
|
ENDSSH
|
||||||
|
|
||||||
|
- name: Stop Service
|
||||||
|
run: |
|
||||||
|
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ConnectTimeout=30 -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
|
||||||
|
set -e
|
||||||
|
echo "🛑 Stopping telegram bot service..."
|
||||||
|
sudo systemctl stop mnemo_cards_telegram_bot || true
|
||||||
|
echo "✅ Telegram bot service stopped"
|
||||||
|
ENDSSH
|
||||||
|
|
||||||
|
- name: Update Service Configuration
|
||||||
|
run: |
|
||||||
|
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ConnectTimeout=30 -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
|
||||||
|
set -e
|
||||||
|
cd ~/mnemo_cards_telegram_bot
|
||||||
|
echo "⚙️ Updating service configuration..."
|
||||||
|
sudo chmod 777 mnemo_cards_telegram_bot.service
|
||||||
|
sudo cp mnemo_cards_telegram_bot.service /etc/systemd/system/
|
||||||
|
ENDSSH
|
||||||
|
|
||||||
|
- name: Update Executable
|
||||||
|
run: |
|
||||||
|
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ConnectTimeout=30 -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
|
||||||
|
set -e
|
||||||
|
cd ~/mnemo_cards_telegram_bot
|
||||||
|
echo "🔄 Replacing executable..."
|
||||||
|
sudo cp bot_build.exe bot.exe
|
||||||
|
rm bot_build.exe
|
||||||
|
ENDSSH
|
||||||
|
|
||||||
|
- name: Restart Service
|
||||||
|
run: |
|
||||||
|
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ConnectTimeout=30 -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
|
||||||
|
set -e
|
||||||
|
echo "🚀 Restarting telegram bot service..."
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl start mnemo_cards_telegram_bot
|
||||||
|
sleep 2
|
||||||
|
sudo systemctl status mnemo_cards_telegram_bot --no-pager --lines=5 || echo "Could not get status"
|
||||||
|
ENDSSH
|
||||||
|
|
||||||
|
- name: Final Verification
|
||||||
|
run: |
|
||||||
|
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ConnectTimeout=30 -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
|
||||||
|
set -e
|
||||||
|
echo "🔍 Final verification..."
|
||||||
|
|
||||||
|
# Check telegram bot service status
|
||||||
|
if sudo systemctl is-active --quiet mnemo_cards_telegram_bot; then
|
||||||
|
echo "✅ Telegram bot service is running"
|
||||||
|
echo "📋 Recent logs:"
|
||||||
|
journalctl -u mnemo_cards_telegram_bot --since "2min ago" --no-pager -n 10 || true
|
||||||
|
else
|
||||||
|
echo "❌ Telegram bot service is not running!"
|
||||||
|
sudo systemctl status mnemo_cards_telegram_bot --no-pager || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Telegram bot deployment completed successfully!"
|
||||||
|
ENDSSH
|
||||||
Loading…
Reference in a new issue