#!/bin/bash # Script pour construire un projet spécifique avec synchronisation des configs # Usage: ./scripts/build-project.sh [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 [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"