Agregar archivos de configuración y script para la creación de imágenes Docker
This commit is contained in:
@@ -0,0 +1,251 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPOSITORY_URL="ssh://git@git.hdrdevs.com.ar:2222/horacio/turnosxpress.git"
|
||||
DEFAULT_BRANCH="main"
|
||||
DEFAULT_TARGET_DIR="$HOME/PRODUCCION/turnosxpress"
|
||||
|
||||
if [[ -t 1 ]]; then
|
||||
BLUE="\033[0;34m"
|
||||
GREEN="\033[0;32m"
|
||||
YELLOW="\033[1;33m"
|
||||
CYAN="\033[0;36m"
|
||||
RED="\033[0;31m"
|
||||
RESET="\033[0m"
|
||||
else
|
||||
BLUE=""
|
||||
GREEN=""
|
||||
YELLOW=""
|
||||
CYAN=""
|
||||
RED=""
|
||||
RESET=""
|
||||
fi
|
||||
|
||||
step() {
|
||||
echo -e "${BLUE}▶ $1${RESET}"
|
||||
}
|
||||
|
||||
success() {
|
||||
echo -e "${GREEN}✅ $1${RESET}"
|
||||
}
|
||||
|
||||
skip() {
|
||||
echo -e "${YELLOW}⏭️ $1${RESET}"
|
||||
}
|
||||
|
||||
info() {
|
||||
echo -e "${CYAN}ℹ️ $1${RESET}"
|
||||
}
|
||||
|
||||
warn() {
|
||||
echo -e "${RED}⚠️ $1${RESET}"
|
||||
}
|
||||
|
||||
DIRECTORIES_TO_REMOVE=(
|
||||
".atl"
|
||||
".codegraph"
|
||||
".opencode"
|
||||
"backupper"
|
||||
"bot-admin-api"
|
||||
"com.hdrdevs.turnosxpress"
|
||||
"file-manager"
|
||||
"mongo-db"
|
||||
"notification-sender"
|
||||
"openspec"
|
||||
"sysadmin"
|
||||
"sysadmin-cli"
|
||||
"txadmin"
|
||||
"txbot"
|
||||
"working-web"
|
||||
)
|
||||
|
||||
FILES_TO_REMOVE=(
|
||||
".dockerignore"
|
||||
".gitignore"
|
||||
"Dockerfile.alpine"
|
||||
"Dockerfile.debian"
|
||||
)
|
||||
|
||||
SERVER_DIRECTORIES_TO_REMOVE=(
|
||||
"node_modules"
|
||||
)
|
||||
|
||||
SERVER_FILES_TO_REMOVE=(
|
||||
".env"
|
||||
".env.android"
|
||||
".env.dev"
|
||||
".env.omv"
|
||||
".env.txlocal"
|
||||
)
|
||||
|
||||
TXCLIENT_DIRECTORIES_TO_REMOVE=(
|
||||
".next"
|
||||
"node_modules"
|
||||
)
|
||||
|
||||
TXCLIENT_FILES_TO_REMOVE=(
|
||||
".env"
|
||||
".env.android"
|
||||
".env.dev"
|
||||
".env.omv"
|
||||
".env.txlocal"
|
||||
)
|
||||
|
||||
branch="${1:-$DEFAULT_BRANCH}"
|
||||
target_dir="${2:-$DEFAULT_TARGET_DIR}"
|
||||
timestamp="$(date +%Y%m%d-%H%M)"
|
||||
image_archive="turnosxpress-${timestamp}.tar"
|
||||
|
||||
if [[ "$branch" == "-h" || "$branch" == "--help" ]]; then
|
||||
cat <<USAGE
|
||||
Usage: $0 [branch] [target-directory]
|
||||
|
||||
Clones the TurnosXpress repository and updates the selected branch.
|
||||
After the repository is ready, it removes development and deployment folders/files
|
||||
that are not needed by this workspace.
|
||||
|
||||
Arguments:
|
||||
branch Branch to clone/update. Defaults to: ${DEFAULT_BRANCH}
|
||||
target-directory Directory where the repository is cloned. Defaults to: ${DEFAULT_TARGET_DIR}
|
||||
|
||||
Examples:
|
||||
$0
|
||||
$0 develop
|
||||
$0 feature/new-flow ../turnosxpress-feature
|
||||
USAGE
|
||||
exit 0
|
||||
fi
|
||||
|
||||
step "Cleaning target directory '$target_dir'"
|
||||
rm -rf -- "$target_dir"
|
||||
mkdir -p -- "$(dirname -- "$target_dir")"
|
||||
success "Target directory is clean"
|
||||
|
||||
step "Cloning branch '$branch' into '$target_dir'"
|
||||
git clone --branch "$branch" --single-branch "$REPOSITORY_URL" "$target_dir"
|
||||
success "Repository cloned"
|
||||
|
||||
step "Removing excluded root directories and files"
|
||||
|
||||
for directory in "${DIRECTORIES_TO_REMOVE[@]}"; do
|
||||
path="$target_dir/$directory"
|
||||
|
||||
if [[ -d "$path" ]]; then
|
||||
rm -rf -- "$path"
|
||||
success "Removed directory: $directory"
|
||||
else
|
||||
skip "Directory not found: $directory"
|
||||
fi
|
||||
done
|
||||
|
||||
for file in "${FILES_TO_REMOVE[@]}"; do
|
||||
path="$target_dir/$file"
|
||||
|
||||
if [[ -f "$path" ]]; then
|
||||
rm -f -- "$path"
|
||||
success "Removed file: $file"
|
||||
else
|
||||
skip "File not found: $file"
|
||||
fi
|
||||
done
|
||||
|
||||
server_dir="$target_dir/server"
|
||||
|
||||
if [[ -d "$server_dir" ]]; then
|
||||
step "Removing excluded server directories and files"
|
||||
|
||||
for directory in "${SERVER_DIRECTORIES_TO_REMOVE[@]}"; do
|
||||
path="$server_dir/$directory"
|
||||
|
||||
if [[ -d "$path" ]]; then
|
||||
rm -rf -- "$path"
|
||||
success "Removed server directory: $directory"
|
||||
else
|
||||
skip "Server directory not found: $directory"
|
||||
fi
|
||||
done
|
||||
|
||||
for file in "${SERVER_FILES_TO_REMOVE[@]}"; do
|
||||
path="$server_dir/$file"
|
||||
|
||||
if [[ -f "$path" ]]; then
|
||||
rm -f -- "$path"
|
||||
success "Removed server file: $file"
|
||||
else
|
||||
skip "Server file not found: $file"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -f "$server_dir/.env.prod" ]]; then
|
||||
mv -- "$server_dir/.env.prod" "$server_dir/.env"
|
||||
success "Renamed server file: .env.prod -> .env"
|
||||
else
|
||||
skip "Server file not found: .env.prod"
|
||||
fi
|
||||
else
|
||||
warn "Server directory not found. Skipping server cleanup"
|
||||
fi
|
||||
|
||||
txclient_dir="$target_dir/txclient"
|
||||
|
||||
if [[ -d "$txclient_dir" ]]; then
|
||||
step "Removing excluded txclient directories and files"
|
||||
|
||||
for directory in "${TXCLIENT_DIRECTORIES_TO_REMOVE[@]}"; do
|
||||
path="$txclient_dir/$directory"
|
||||
|
||||
if [[ -d "$path" ]]; then
|
||||
rm -rf -- "$path"
|
||||
success "Removed txclient directory: $directory"
|
||||
else
|
||||
skip "Txclient directory not found: $directory"
|
||||
fi
|
||||
done
|
||||
|
||||
for file in "${TXCLIENT_FILES_TO_REMOVE[@]}"; do
|
||||
path="$txclient_dir/$file"
|
||||
|
||||
if [[ -f "$path" ]]; then
|
||||
rm -f -- "$path"
|
||||
success "Removed txclient file: $file"
|
||||
else
|
||||
skip "Txclient file not found: $file"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -f "$txclient_dir/.env.prod" ]]; then
|
||||
mv -- "$txclient_dir/.env.prod" "$txclient_dir/.env"
|
||||
success "Renamed txclient file: .env.prod -> .env"
|
||||
else
|
||||
skip "Txclient file not found: .env.prod"
|
||||
fi
|
||||
else
|
||||
warn "Txclient directory not found. Skipping txclient cleanup"
|
||||
fi
|
||||
|
||||
step "Building Docker image"
|
||||
(
|
||||
cd "$target_dir"
|
||||
info "Stopping container: turnosxpress"
|
||||
docker stop turnosxpress || true
|
||||
info "Removing container: turnosxpress"
|
||||
docker rm turnosxpress || true
|
||||
info "Removing image: turnosxpress:latest"
|
||||
docker rmi turnosxpress:latest || true
|
||||
info "Building image: turnosxpress:latest"
|
||||
docker build -t turnosxpress .
|
||||
)
|
||||
success "Docker image built"
|
||||
|
||||
step "Exporting Docker image"
|
||||
(
|
||||
cd "$HOME/PRODUCCION"
|
||||
info "Saving image to: $image_archive"
|
||||
docker save turnosxpress:latest -o "$image_archive"
|
||||
info "Compressing image: ${image_archive}.gz"
|
||||
gzip -f "$image_archive"
|
||||
)
|
||||
success "Docker image exported to '$HOME/PRODUCCION/${image_archive}.gz'"
|
||||
|
||||
success "Done. Repository is ready at '$target_dir' on branch '$branch'"
|
||||
Reference in New Issue
Block a user