4NK_env/scripts/lecoffre_node/build-project.sh
LeCoffre Deployment 43a05a2742 clean
2025-09-25 12:19:35 +00:00

111 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Script pour construire un projet spécifique avec synchronisation des configs
# Usage: ./scripts/build-project.sh <project_name> [docker_tag]
#
# Projets supportés:
# - bitcoin: Bitcoin Signet
# - blindbit: BlindBit Oracle
# - sdk_relay: SDK Relay
# - sdk_storage: SDK Storage
# - lecoffre-front: LeCoffre Frontend
# - ihm_client: IHM Client
set -euo pipefail
# Couleurs pour les logs
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonction de logging
log() {
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
}
log_success() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] ✓${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] ⚠${NC} $1"
}
log_error() {
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ✗${NC} $1"
}
# Vérifier les arguments
if [[ $# -lt 1 ]]; then
log_error "Usage: $0 <project_name> [docker_tag]"
echo ""
echo "Projets disponibles:"
echo " - ihm_client"
echo " - lecoffre-front"
echo " - sdk_relay"
echo " - sdk_storage"
echo ""
echo "Exemples:"
echo " $0 ihm_client"
echo " $0 ihm_client ext"
exit 1
fi
PROJECT_NAME="$1"
DOCKER_TAG="${2:-ext}"
PROJECT_ROOT="/home/debian/lecoffre_node"
PROJECT_PATH="/home/debian/$PROJECT_NAME"
# Changer vers le répertoire du projet
cd "$PROJECT_ROOT"
log "Construction du projet: $PROJECT_NAME (tag: $DOCKER_TAG)"
# 1. Synchroniser les configurations pour ce projet
log "Synchronisation des configurations pour $PROJECT_NAME..."
if ./scripts/sync-configs.sh "$PROJECT_NAME"; then
log_success "Configurations synchronisées"
else
log_warning "Aucune configuration à synchroniser pour $PROJECT_NAME"
fi
# 2. Changer vers le répertoire du projet
if [[ ! -d "$PROJECT_PATH" ]]; then
log_error "Projet non trouvé: $PROJECT_PATH"
exit 1
fi
cd "$PROJECT_PATH"
# 3. Vérifier qu'un Dockerfile existe
if [[ ! -f "Dockerfile" ]]; then
log_error "Dockerfile non trouvé dans $PROJECT_PATH"
exit 1
fi
# 4. Construire l'image Docker
log "Construction de l'image Docker..."
IMAGE_NAME="git.4nkweb.com/4nk/$PROJECT_NAME:$DOCKER_TAG"
if docker build -t "$IMAGE_NAME" .; then
log_success "Image construite: $IMAGE_NAME"
else
log_error "Échec de la construction de l'image"
exit 1
fi
# 5. Optionnel: pousser l'image
if [[ "${PUSH_IMAGE:-false}" == "true" ]]; then
log "Poussée de l'image vers le registry..."
if docker push "$IMAGE_NAME"; then
log_success "Image poussée: $IMAGE_NAME"
else
log_error "Échec de la poussée de l'image"
exit 1
fi
fi
log_success "Construction terminée pour $PROJECT_NAME"