4NK_vault/templates/dev/generate_variables.sh
4NK Dev 3f84bd4820 ci: docker_tag=dev-test
Séparation de la génération du docker-compose et empêcher la copie dans storage/

- Créé generate_docker_compose.sh pour générer uniquement docker-compose.yml.auto
- Refactorisé generate_variables.sh pour générer uniquement .env.auto
- Mis à jour replace_variables_and_copy.sh pour ne pas copier docker-compose.yml.auto dans storage/
- Mis à jour generate.sh pour orchestrer 7 étapes au lieu de 6
- Mis à jour la documentation README.md pour refléter les changements
- docker-compose.yml.auto et .env.auto restent dans templates/dev/ pour le traitement mais ne sont plus déployés dans storage/
2025-10-06 11:38:07 +00:00

147 lines
4.4 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Script de génération des variables d'environnement
# Génère uniquement .env.auto
set -euo pipefail
# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonctions de couleur
print_error() { echo -e "${RED}❌ ERREUR${NC}: $1" >&2; }
print_success() { echo -e "${GREEN}✅ SUCCÈS${NC}: $1"; }
print_warning() { echo -e "${YELLOW}⚠️ ATTENTION${NC}: $1"; }
print_info() { echo -e "${BLUE} INFO${NC}: $1"; }
# Fonction pour charger les variables d'environnement
load_env_files() {
local env_files=(".env.secrets" ".env" ".env.post")
for env_file in "${env_files[@]}"; do
if [ -f "$env_file" ]; then
print_info "Chargement de $env_file..."
# shellcheck source=/dev/null
source "$env_file"
else
print_warning "Fichier $env_file non trouvé"
fi
done
}
# Fonction pour générer les variables pour une composante
generate_variables() {
local VARIABLE="$1"
echo "# ====== INTERNAL $VARIABLE ====="
echo "${VARIABLE}_DOCKER_NAME=${VARIABLE,,}"
echo "${VARIABLE}_DOCKER_IMAGE=${VARIABLE,,}"
echo "${VARIABLE}_DOCKER_TAG=latest"
echo "${VARIABLE}_PORT=\$${VARIABLE}_PORT"
echo "${VARIABLE}_LOGS_DIR=\$LOGS_DIR/\$${VARIABLE}_DOCKER_NAME"
echo "${VARIABLE}_CONFS_DIR=\$CONFS_DIR/\$${VARIABLE}_DOCKER_NAME"
echo "${VARIABLE}_RUNS_DIR=\$RUNS_DIR/\$${VARIABLE}_DOCKER_NAME"
echo "${VARIABLE}_DATAS_DIR=\$DATAS_DIR/\$${VARIABLE}_DOCKER_NAME"
echo "${VARIABLE}_BACKUPS_DIR=\$BACKUPS_DIR/\$${VARIABLE}_DOCKER_NAME"
echo "${VARIABLE}_DOCKER_CONFS_DIR=/\$${VARIABLE}_DOCKER_NAME/confs"
echo "${VARIABLE}_DOCKER_LOGS_DIR=/\$${VARIABLE}_DOCKER_NAME/logs"
echo "${VARIABLE}_DOCKER_RUNS_DIR=/\$${VARIABLE}_DOCKER_NAME/runs"
echo "${VARIABLE}_DOCKER_DATAS_DIR=/\$${VARIABLE}_DOCKER_NAME/datas"
echo "${VARIABLE}_DOCKER_BACKUPS_DIR=/\$${VARIABLE}_DOCKER_NAME/backups"
echo "${VARIABLE}_RESTART=unless-stopped"
echo "${VARIABLE}_ENV="
echo "${VARIABLE}_COMMAND="
echo "${VARIABLE}_DEPENDS_ON="
echo ""
}
# Fonction pour générer les variables externes
generate_variables_external() {
local VARIABLE="$1"
echo "# ====== EXTERNAL $VARIABLE ====="
echo "${VARIABLE}_HOST=\$HOST"
echo "${VARIABLE}_EXTERNAL_PORT=\$${VARIABLE}_EXTERNAL_PORT"
echo "${VARIABLE}_URL_ROUTE=/\$${VARIABLE}"
echo "${VARIABLE}_URL_EXTERNAL=https://\$${VARIABLE}_HOST:\$${VARIABLE}_EXTERNAL_PORT\$${VARIABLE}_URL_ROUTE"
echo "${VARIABLE}_URL_WS_EXTERNAL=wss://\$${VARIABLE}_HOST:\$${VARIABLE}_EXTERNAL_PORT/ws"
echo ""
}
# Générer la variable HOST si elle n'est pas définie
if [ -z "$HOST" ]; then
HOST="dev4.${DOMAIN}"
fi
# Supprimer les fichiers de sortie existants (remplacer complètement)
rm -f .env.auto
# Générer les variables de base
echo "# ====== BASE VARIABLES =====" >> .env.auto
echo "HOST=$HOST" >> .env.auto
echo "" >> .env.auto
# Liste des variables/composantes
SERVICES=(
"REDIS"
"POSTGRESQL"
"LOKI"
"PROMTAIL"
"GRAFANA"
"NGINX"
"TOR"
"_4NK_VAULT"
"BITCOIN"
"BLINDBIT_ORACLE"
"SDK_RELAY"
"SDK_STORAGE"
"IHM_CLIENT"
"_4NK_CERTIFICATOR"
"_4NK_MINER"
"LECOFFRE_FRONT"
"_4NK_WEB_STATUS"
)
# Générer les variables pour chaque service
for VARIABLE in "${SERVICES[@]}"; do
generate_variables "$VARIABLE" >> .env.auto
done
# Services externes
SERVICES_EXTERNAL=(
"REDIS"
"POSTGRESQL"
"LOKI"
"PROMTAIL"
"GRAFANA"
"NGINX"
"TOR"
"_4NK_VAULT"
"BITCOIN"
"BLINDBIT_ORACLE"
"SDK_RELAY"
"SDK_STORAGE"
"IHM_CLIENT"
"_4NK_CERTIFICATOR"
"_4NK_MINER"
"LECOFFRE_FRONT"
"_4NK_WEB_STATUS"
)
# Générer les variables externes
for VARIABLE in "${SERVICES_EXTERNAL[@]}"; do
generate_variables_external "$VARIABLE" >> .env.auto
done
# Générer les variables pour BOOTSTRAP (correction de l'incohérence BOOSTRAP/BOOTSTRAP)
echo "# ====== EXTERNAL BOOTSTRAP (correction) =====" >> .env.auto
echo "BOOTSTRAP_URL_ROUTE=/\$BOOTSTRAP" >> .env.auto
echo "BOOTSTRAP_URL_EXTERNAL=https://\$BOOTSTRAP_HOST:\$BOOTSTRAP_EXTERNAL_PORT\$BOOTSTRAP_URL_ROUTE" >> .env.auto
echo "BOOTSTRAP_URL_WS_EXTERNAL=wss://\$BOOTSTRAP_HOST:\$BOOTSTRAP_EXTERNAL_PORT/ws" >> .env.auto
echo "" >> .env.auto
echo "✅ Variables d'environnement générées dans .env.auto"