Files
marzban_tg_bot/.gitea/workflows/deploy.yaml
hoshimach1 b3a847ca95
Some checks failed
Deploy to Server / Check Project (push) Failing after 12m33s
Deploy to Server / Deploy to Server (push) Has been cancelled
пиплайн
2026-01-21 15:24:47 +03:00

86 lines
2.7 KiB
YAML

name: Deploy to Server
on:
push:
branches:
- main
- master
jobs:
check:
name: Check Project
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Check syntax errors
run: |
python -m py_compile main.py
python -m py_compile config.py
python -m py_compile database.py
python -m py_compile marzban.py
python -m py_compile server.py
python -m py_compile keyboards.py
python -m py_compile states.py
# Опционально: запуск линтера
# - name: Run linter
# run: |
# pip install flake8
# flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
deploy:
name: Deploy to Server
runs-on: ubuntu-latest
needs: check # Деплой только после успешной проверки
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd ${{ secrets.DEPLOY_PATH }}
git pull origin main
# Перезапуск через Docker Compose (если используется)
# docker compose down
# docker compose up -d --build
# Или перезапуск systemd сервиса
# sudo systemctl restart marzban-bot
# Или перезапуск через Docker
# docker stop marzban-bot || true
# docker build -t marzban-bot ./docker
# docker run -d --rm --name marzban-bot --env-file .env marzban-bot
# Альтернативный вариант: копирование файлов через rsync
# - name: Deploy files via rsync
# uses: burnett01/rsync-deployments@6.0.0
# with:
# switches: -avzr --delete --exclude='.git' --exclude='.env' --exclude='bot.db'
# path: ./
# remote_path: ${{ secrets.DEPLOY_PATH }}
# remote_host: ${{ secrets.SSH_HOST }}
# remote_user: ${{ secrets.SSH_USERNAME }}
# remote_key: ${{ secrets.SSH_PRIVATE_KEY }}
# remote_port: ${{ secrets.SSH_PORT }}