Files
igny8/scripts/package_app.sh
IGNY8 VPS (Salman) 6997702b12 flower celery
2025-12-10 17:46:37 +00:00

138 lines
5.2 KiB
Bash

#!/bin/bash
################################################################################
# IGNY8 Application Packaging Script
# Creates a portable package containing only source code (no dependencies)
################################################################################
set -e
# Configuration
SOURCE_DIR="/data/app/igny8"
BACKUP_DIR="/data/backups/igny8"
DATE_STAMP=$(date +%Y%m%d_%H%M%S)
PACKAGE_NAME="igny8-app-${DATE_STAMP}.tar.gz"
TEMP_DIR="/tmp/igny8-package-${DATE_STAMP}"
# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN} IGNY8 Application Package Creator${NC}"
echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
echo ""
# Create backup directory if it doesn't exist
mkdir -p "${BACKUP_DIR}"
echo -e "${YELLOW}📁 Backup directory: ${BACKUP_DIR}${NC}"
# Create temporary packaging directory
echo -e "${YELLOW}📦 Creating temporary package directory...${NC}"
mkdir -p "${TEMP_DIR}"
# Copy application files (excluding generated artifacts)
echo -e "${YELLOW}📋 Copying application source files...${NC}"
rsync -av \
--exclude='.git' \
--exclude='__pycache__' \
--exclude='*.pyc' \
--exclude='*.pyo' \
--exclude='.pytest_cache' \
--exclude='backend/.venv' \
--exclude='backend/venv' \
--exclude='backend/*.sql' \
--exclude='backend/*.sqlite3' \
--exclude='backend/celerybeat-schedule' \
--exclude='backend/logs' \
--exclude='backend/staticfiles' \
--exclude='frontend/node_modules' \
--exclude='frontend/dist' \
--exclude='frontend/.vite' \
--exclude='sites/node_modules' \
--exclude='sites/dist' \
--exclude='*.log' \
--exclude='.DS_Store' \
--exclude='Thumbs.db' \
"${SOURCE_DIR}/" "${TEMP_DIR}/"
# Create package info file
echo -e "${YELLOW}📝 Creating package metadata...${NC}"
cat > "${TEMP_DIR}/PACKAGE_INFO.txt" << EOF
IGNY8 Application Package
=========================
Package Date: $(date '+%Y-%m-%d %H:%M:%S')
Package Name: ${PACKAGE_NAME}
Git Commit: $(cd ${SOURCE_DIR} && git rev-parse --short HEAD 2>/dev/null || echo "N/A")
Git Branch: $(cd ${SOURCE_DIR} && git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "N/A")
Contents:
- Backend Django application (igny8_core)
- Frontend React application (src)
- Docker configuration files
- Documentation
NOT Included (will be installed automatically):
- Python virtual environment (.venv)
- Node modules (node_modules)
- Build artifacts (dist)
- Database backups
- Log files
- Static files cache
Installation:
See INSTALLATION.md for complete setup instructions.
EOF
# Calculate package size
echo -e "${YELLOW}📊 Calculating package size...${NC}"
PACKAGE_SIZE=$(du -sh "${TEMP_DIR}" | cut -f1)
echo -e "${GREEN} Package size: ${PACKAGE_SIZE}${NC}"
# Create compressed archive
echo -e "${YELLOW}🗜️ Creating compressed archive...${NC}"
cd "${TEMP_DIR}/.."
tar -czf "${BACKUP_DIR}/${PACKAGE_NAME}" "$(basename ${TEMP_DIR})"
# Cleanup temporary directory
echo -e "${YELLOW}🧹 Cleaning up temporary files...${NC}"
rm -rf "${TEMP_DIR}"
# Get final archive size
ARCHIVE_SIZE=$(du -sh "${BACKUP_DIR}/${PACKAGE_NAME}" | cut -f1)
# Calculate checksum
echo -e "${YELLOW}🔐 Calculating checksum...${NC}"
CHECKSUM=$(sha256sum "${BACKUP_DIR}/${PACKAGE_NAME}" | cut -d' ' -f1)
# Create checksum file
echo "${CHECKSUM} ${PACKAGE_NAME}" > "${BACKUP_DIR}/${PACKAGE_NAME}.sha256"
# Summary
echo ""
echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}✅ Package created successfully!${NC}"
echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}Package: ${BACKUP_DIR}/${PACKAGE_NAME}${NC}"
echo -e "${GREEN}Size: ${ARCHIVE_SIZE}${NC}"
echo -e "${GREEN}SHA256: ${CHECKSUM}${NC}"
echo -e "${GREEN}Checksum file: ${BACKUP_DIR}/${PACKAGE_NAME}.sha256${NC}"
echo ""
# Cleanup old packages (keep last 7 days)
echo -e "${YELLOW}🗑️ Cleaning up packages older than 7 days...${NC}"
find "${BACKUP_DIR}" -name "igny8-app-*.tar.gz" -type f -mtime +7 -delete
find "${BACKUP_DIR}" -name "igny8-app-*.sha256" -type f -mtime +7 -delete
OLD_COUNT=$(find "${BACKUP_DIR}" -name "igny8-app-*.tar.gz" | wc -l)
echo -e "${GREEN} Packages retained: ${OLD_COUNT}${NC}"
echo ""
echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}✨ Backup complete!${NC}"
echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
exit 0