bmc_hub/scripts/deploy_production.sh
2025-12-17 16:47:35 +01:00

129 lines
3.7 KiB
Bash

#!/bin/bash
# BMC Hub - Production Deployment Script
# Dette script automatiserer download af nødvendige filer fra Gitea
set -e # Exit on error
# Farver til output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Check om .env eksisterer
if [ ! -f .env ]; then
echo -e "${RED}❌ Fejl: .env fil ikke fundet${NC}"
echo "Kopier .env.example til .env og udfyld med dine værdier:"
echo " cp .env.example .env"
echo " nano .env"
exit 1
fi
# Load environment variables
source .env
# Verificer påkrævede variables
if [ -z "$GITHUB_TOKEN" ] || [ "$GITHUB_TOKEN" == "your_gitea_token_here" ]; then
echo -e "${RED}❌ Fejl: GITHUB_TOKEN ikke sat i .env${NC}"
echo "Opret en Personal Access Token på:"
echo " https://g.bmcnetworks.dk/user/settings/applications"
exit 1
fi
if [ -z "$RELEASE_VERSION" ]; then
echo -e "${RED}❌ Fejl: RELEASE_VERSION ikke sat i .env${NC}"
exit 1
fi
GITEA_BASE="https://g.bmcnetworks.dk"
REPO="${GITHUB_REPO:-ct/bmc_hub}"
VERSION="${RELEASE_VERSION}"
echo -e "${GREEN}🚀 BMC Hub Production Deployment${NC}"
echo -e "Repository: ${REPO}"
echo -e "Version: ${VERSION}"
echo ""
# Download function
download_file() {
local file=$1
local output=${2:-$file}
echo -e "${YELLOW}⬇️ Downloader: ${file}${NC}"
if curl -f -H "Authorization: token ${GITHUB_TOKEN}" \
"${GITEA_BASE}/api/v1/repos/${REPO}/raw/${file}?ref=${VERSION}" \
-o "${output}" 2>/dev/null; then
echo -e "${GREEN}✅ Success: ${output}${NC}"
return 0
else
echo -e "${RED}❌ Fejl ved download af ${file}${NC}"
return 1
fi
}
# Opret directories
echo -e "${YELLOW}📁 Opretter directories...${NC}"
mkdir -p migrations logs uploads data/invoice_templates
# Download core files
echo -e "\n${YELLOW}📥 Downloader core filer...${NC}"
download_file "docker-compose.prod.yml" "docker-compose.yml"
download_file "Dockerfile"
download_file "requirements.txt"
# Download migrations
echo -e "\n${YELLOW}📥 Downloader migrations...${NC}"
# Liste over alle migrations (i rækkefølge)
MIGRATIONS=(
"init.sql"
"002_auth_system.sql"
"003_extend_customers.sql"
"004_contacts_relationships.sql"
"005_vendors.sql"
"006_settings.sql"
"007_dev_portal.sql"
"008_credit_notes.sql"
"008_supplier_invoices.sql"
"009_document_extraction.sql"
"010_supplier_invoice_templates.sql"
"011_extraction_lines_context.sql"
"011_quick_analysis.sql"
"012_own_invoice_filter.sql"
"012_template_default_category.sql"
"013_email_system.sql"
"013_timetracking_module.sql"
"014_add_contact_user_company.sql"
"014_economic_customer_number.sql"
"014_email_workflows.sql"
"015_bmc_office_subscriptions.sql"
"023_subscriptions_lock.sql"
"024_backup_system.sql"
"025_ticket_module.sql"
"026_ticket_enhancements.sql"
"026_ticket_permissions.sql"
"027_customer_notes.sql"
"027_tag_system.sql"
"028_auto_link_tmodule_customers.sql"
"029_ticket_contacts.sql"
"030_ticket_contacts_flexible_roles.sql"
"050_email_activity_log.sql"
)
for migration in "${MIGRATIONS[@]}"; do
download_file "migrations/${migration}" "migrations/${migration}" || echo -e "${YELLOW}⚠️ Kunne ikke downloade ${migration} (måske findes den ikke i denne version)${NC}"
done
echo -e "\n${GREEN}✅ Download komplet!${NC}"
echo ""
echo -e "${YELLOW}Næste trin:${NC}"
echo "1. Verificer .env filen er korrekt udfyldt"
echo "2. Start services:"
echo -e " ${GREEN}podman-compose up -d --build${NC}"
echo "3. Check logs:"
echo -e " ${GREEN}podman-compose logs -f${NC}"
echo "4. Test health endpoint:"
echo -e " ${GREEN}curl http://localhost:8000/health${NC}"
echo ""