pre-deploy commit
This commit is contained in:
54
bin/backup_db.sh
Normal file
54
bin/backup_db.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
# backup_db.sh - Script for backing up the PostgreSQL database
|
||||
|
||||
echo "📦 Backing up PostgreSQL database..."
|
||||
|
||||
# Default backup directory
|
||||
BACKUP_DIR="${BACKUP_DIR:-/var/backups/tg_tinder_bot}"
|
||||
BACKUP_FILENAME="tg_tinder_bot_$(date +%Y%m%d_%H%M%S).sql"
|
||||
BACKUP_PATH="$BACKUP_DIR/$BACKUP_FILENAME"
|
||||
|
||||
# Create backup directory if it doesn't exist
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# Check if running in docker-compose environment
|
||||
if [ -f /.dockerenv ] || [ -f /proc/self/cgroup ] && grep -q docker /proc/self/cgroup; then
|
||||
echo "🐳 Running in Docker environment, using docker-compose exec..."
|
||||
docker-compose exec -T db pg_dump -U postgres telegram_tinder_bot > "$BACKUP_PATH"
|
||||
else
|
||||
# Check if PGPASSWORD is set in environment
|
||||
if [ -z "$PGPASSWORD" ]; then
|
||||
# If .env file exists, try to get password from there
|
||||
if [ -f .env ]; then
|
||||
DB_PASSWORD=$(grep DB_PASSWORD .env | cut -d '=' -f2)
|
||||
export PGPASSWORD="$DB_PASSWORD"
|
||||
else
|
||||
echo "⚠️ No DB_PASSWORD found in environment or .env file."
|
||||
echo "Please enter PostgreSQL password:"
|
||||
read -s PGPASSWORD
|
||||
export PGPASSWORD
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "💾 Backing up database to $BACKUP_PATH..."
|
||||
pg_dump -h localhost -U postgres -d telegram_tinder_bot > "$BACKUP_PATH"
|
||||
fi
|
||||
|
||||
# Check if backup was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Backup completed successfully: $BACKUP_PATH"
|
||||
echo "📊 Backup size: $(du -h $BACKUP_PATH | cut -f1)"
|
||||
|
||||
# Compress the backup
|
||||
gzip -f "$BACKUP_PATH"
|
||||
echo "🗜️ Compressed backup: $BACKUP_PATH.gz"
|
||||
|
||||
# Keep only the last 7 backups
|
||||
echo "🧹 Cleaning up old backups..."
|
||||
find "$BACKUP_DIR" -name "tg_tinder_bot_*.sql.gz" -type f -mtime +7 -delete
|
||||
|
||||
echo "🎉 Backup process completed!"
|
||||
else
|
||||
echo "❌ Backup failed!"
|
||||
exit 1
|
||||
fi
|
||||
72
bin/create_release.sh
Normal file
72
bin/create_release.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
# Скрипт для создания релиза Telegram Tinder Bot
|
||||
|
||||
# Получение версии из package.json
|
||||
VERSION=$(grep -m1 "version" package.json | cut -d'"' -f4)
|
||||
RELEASE_NAME="tg-tinder-bot-v$VERSION"
|
||||
RELEASE_DIR="bin/releases/$RELEASE_NAME"
|
||||
|
||||
echo "🚀 Создание релиза $RELEASE_NAME"
|
||||
|
||||
# Создание директории релиза
|
||||
mkdir -p "$RELEASE_DIR"
|
||||
|
||||
# Очистка временных файлов
|
||||
echo "🧹 Очистка временных файлов..."
|
||||
rm -rf dist node_modules
|
||||
|
||||
# Установка зависимостей
|
||||
echo "📦 Установка зависимостей production..."
|
||||
npm ci --only=production
|
||||
|
||||
# Сборка проекта
|
||||
echo "🔧 Сборка проекта..."
|
||||
npm run build
|
||||
|
||||
# Копирование файлов релиза
|
||||
echo "📋 Копирование файлов..."
|
||||
cp -r dist "$RELEASE_DIR/"
|
||||
cp -r src/locales "$RELEASE_DIR/dist/"
|
||||
cp package.json package-lock.json .env.example "$RELEASE_DIR/"
|
||||
cp -r bin/start_bot.* bin/install_ubuntu.sh "$RELEASE_DIR/"
|
||||
cp README.md LICENSE "$RELEASE_DIR/" 2>/dev/null || echo "Файлы документации не найдены"
|
||||
cp sql/consolidated.sql "$RELEASE_DIR/"
|
||||
cp docker-compose.yml Dockerfile "$RELEASE_DIR/"
|
||||
cp deploy.sh "$RELEASE_DIR/" && chmod +x "$RELEASE_DIR/deploy.sh"
|
||||
|
||||
# Создание README для релиза
|
||||
cat > "$RELEASE_DIR/RELEASE.md" << EOL
|
||||
# Telegram Tinder Bot v$VERSION
|
||||
|
||||
Эта папка содержит релиз Telegram Tinder Bot версии $VERSION.
|
||||
|
||||
## Содержимое
|
||||
|
||||
- \`dist/\` - Скомпилированный код
|
||||
- \`package.json\` - Зависимости и скрипты
|
||||
- \`.env.example\` - Пример конфигурации
|
||||
- \`docker-compose.yml\` и \`Dockerfile\` - Для запуска через Docker
|
||||
- \`consolidated.sql\` - SQL-скрипт для инициализации базы данных
|
||||
- \`deploy.sh\` - Скрипт для простого деплоя
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
1. Создайте файл \`.env\` на основе \`.env.example\`
|
||||
2. Запустите бота одним из способов:
|
||||
- Через Docker: \`./deploy.sh\`
|
||||
- Через Node.js: \`node dist/bot.js\`
|
||||
|
||||
## Дата релиза
|
||||
|
||||
$(date "+%d.%m.%Y %H:%M")
|
||||
EOL
|
||||
|
||||
# Архивирование релиза
|
||||
echo "📦 Создание архива..."
|
||||
cd bin/releases
|
||||
zip -r "$RELEASE_NAME.zip" "$RELEASE_NAME"
|
||||
cd ../..
|
||||
|
||||
echo "✅ Релиз создан успешно!"
|
||||
echo "📂 Релиз доступен в: bin/releases/$RELEASE_NAME"
|
||||
echo "📦 Архив релиза: bin/releases/$RELEASE_NAME.zip"
|
||||
58
bin/install_docker.sh
Normal file
58
bin/install_docker.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
# install_docker.sh - Script for installing Docker and Docker Compose
|
||||
|
||||
echo "🚀 Installing Docker and Docker Compose..."
|
||||
|
||||
# Check if script is run as root
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "❌ This script must be run as root. Please run with sudo."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Update package lists
|
||||
echo "📦 Updating package lists..."
|
||||
apt update
|
||||
|
||||
# Install required packages
|
||||
echo "📦 Installing required packages..."
|
||||
apt install -y apt-transport-https ca-certificates curl software-properties-common
|
||||
|
||||
# Add Docker GPG key
|
||||
echo "🔑 Adding Docker GPG key..."
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
|
||||
|
||||
# Add Docker repository
|
||||
echo "📁 Adding Docker repository..."
|
||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
||||
|
||||
# Update package lists again
|
||||
apt update
|
||||
|
||||
# Install Docker
|
||||
echo "🐳 Installing Docker..."
|
||||
apt install -y docker-ce docker-ce-cli containerd.io
|
||||
|
||||
# Enable and start Docker service
|
||||
systemctl enable docker
|
||||
systemctl start docker
|
||||
|
||||
# Install Docker Compose
|
||||
echo "🐳 Installing Docker Compose..."
|
||||
curl -L "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
chmod +x /usr/local/bin/docker-compose
|
||||
|
||||
# Check versions
|
||||
echo "✅ Installation complete!"
|
||||
echo "Docker version:"
|
||||
docker --version
|
||||
echo "Docker Compose version:"
|
||||
docker-compose --version
|
||||
|
||||
# Add current user to docker group if not root
|
||||
if [ -n "$SUDO_USER" ]; then
|
||||
echo "👤 Adding user $SUDO_USER to docker group..."
|
||||
usermod -aG docker $SUDO_USER
|
||||
echo "⚠️ Please log out and log back in for group changes to take effect."
|
||||
fi
|
||||
|
||||
echo "🎉 Docker installation completed successfully!"
|
||||
Reference in New Issue
Block a user