flower celery
This commit is contained in:
137
scripts/package_app.sh
Normal file
137
scripts/package_app.sh
Normal file
@@ -0,0 +1,137 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user