allineamento

This commit is contained in:
alessandro barucci
2026-07-17 10:00:09 +02:00
parent 20d506407a
commit 6ffb202579
24 changed files with 714 additions and 30 deletions

55
pipeline/_customize.sh Normal file
View File

@@ -0,0 +1,55 @@
#!/bin/bash
# Usage: ./customize.sh dev|qa|prod
echo "tetst" $IMAGE_TAG_backend
ENV=$1
VALUES_DIR="env/$ENV"
PROPERTIES_FILE="properties.env"
YAML_DIR="kubernetes"
# Estrai l'hash completo del commit e crea una variabile temporanea per la sostituzione
TAG=$(git rev-parse HEAD)
TMP_TAG_FILE=$(mktemp)
TMP_VALUES_FILE=$(mktemp)
echo "TAG=$TAG" > "$TMP_TAG_FILE"
cat ./imglist >> "$TMP_TAG_FILE"
if [ ! -d "$VALUES_DIR" ] || ! ls "$VALUES_DIR"/*.env &>/dev/null; then
echo "Nessun file .env trovato in $VALUES_DIR"
exit 1
fi
if [ ! -f "$PROPERTIES_FILE" ]; then
echo "File $PROPERTIES_FILE non trovato."
exit 1
fi
# Crea una lista key=value temporanea partendo da tutti i file *.env in env/$ENV e aggiunge env dinamico
> "$TMP_VALUES_FILE"
for env_file in "$VALUES_DIR"/*.env; do
cat "$env_file" >> "$TMP_VALUES_FILE"
printf '\n' >> "$TMP_VALUES_FILE"
done
printf '\nenv=%s\n' "$ENV" >> "$TMP_VALUES_FILE"
# Trova tutti i file .yaml nella directory kubernetes e sottodirectory
find "$YAML_DIR" -type f -name "*.yaml" | while read YAML_FILE; do
while IFS='=' read -r key value; do
sed -i "s|<$key>|$value|g" "$YAML_FILE"
done < "$TMP_VALUES_FILE"
while IFS='=' read -r key value; do
sed -i "s|<$key>|$value|g" "$YAML_FILE"
done < "$PROPERTIES_FILE"
# Sostituzione dinamica della chiave TAG
while IFS='=' read -r key value; do
sed -i "s|<$key>|$value|g" "$YAML_FILE"
done < "$TMP_TAG_FILE"
echo "Sostituzione completata per file $YAML_FILE ambiente $ENV."
cat $YAML_FILE
done
rm -f "$TMP_TAG_FILE" "$TMP_VALUES_FILE"

View File

@@ -12,6 +12,11 @@ set -euo pipefail
GATEWAY_NAME="main-gateway"
GATEWAY_NS="nginx-gateway"
DNS_API_BASE="http://10.20.1.10:5380/api/zones/records/add"
DNS_API_TOKEN="fb85a1eaa5216eeefda11c0e500cfeb8cfaa1ddda9eaae0781e656eaf52852a6"
DNS_ZONE="italiadatacenter.com"
DNS_IP="10.20.1.100"
DNS_TTL="3600"
HOSTNAME_VAL="${1:-}"
NAME_VAL="${2:-}"
@@ -79,3 +84,14 @@ echo "Listener aggiunto alla risorsa ${GATEWAY_NS}/${GATEWAY_NAME}:"
echo " hostname : ${HOSTNAME_VAL}"
echo " name : ${NAME_VAL}"
echo " secret : ${SECRET_NAME}"
# Se l'hostname e' del tipo <server>.italiadatacenter.com, registra/aggiorna il record A via API DNS.
if [[ "$HOSTNAME_VAL" =~ ^[a-zA-Z0-9-]+\.italiadatacenter\.com$ ]]; then
echo "Hostname conforme al dominio ${DNS_ZONE}. Aggiorno il record DNS..."
curl --fail --silent --show-error \
-H "Authorization: Bearer ${DNS_API_TOKEN}" \
-X GET "${DNS_API_BASE}?domain=${HOSTNAME_VAL}&zone=${DNS_ZONE}&type=A&ipAddress=${DNS_IP}&ttl=${DNS_TTL}&overwrite=true"
echo "Record DNS creato/aggiornato: ${HOSTNAME_VAL} -> ${DNS_IP}"
else
echo "Hostname fuori formato <server>.${DNS_ZONE}: salto creazione record DNS"
fi

View File

@@ -1,8 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail
# Usa properties.env nella directory corrente, oppure un path passato come primo argomento.
PROPERTIES_FILE="${1:-properties.env}"
# Uso: ./addlistener.sh [env] [properties_file]
# env e' ignorato: endpoint viene sempre letto dalla chiave "endpoint".
ENVIRONMENT="${1:-dev}"
PROPERTIES_FILE="${2:-env/${ENVIRONMENT}/values.env}"
if [[ -n "$ENVIRONMENT" ]]; then
echo "Ambiente richiesto: $ENVIRONMENT (chiave usata: endpoint)"
fi
if [[ ! -f "$PROPERTIES_FILE" ]]; then
echo "Warning: file non trovato: $PROPERTIES_FILE" >&2

View File

@@ -7,9 +7,26 @@ REPO_NAME=$1
COMMIT_SHA=$(git rev-parse HEAD)
REGISTRY_URL=$2
# Esegui build_src.sh se presente prima della build container
if [ -f "./build_src.sh" ]; then
echo "build_src.sh trovato, lo rendo eseguibile e lo eseguo"
chmod +x ./build_src.sh
./build_src.sh
fi
# Controlla se la directory containers esiste
if [ ! -d "containers" ]; then
echo "⚠️ Directory 'containers' non trovata, niente da fare"
exit 0
fi
for dir in containers/*/; do
CONTAINER_NAME=$(basename "$dir")
cp -R src/${CONTAINER_NAME}/. containers/${CONTAINER_NAME}/.
if [ -d "src/${CONTAINER_NAME}" ]; then
cp -R "src/${CONTAINER_NAME}/." "containers/${CONTAINER_NAME}/."
else
echo "Directory src/${CONTAINER_NAME} non trovata, skip copia sorgenti"
fi
ls -la $dir
# Cerca sia dockerfile che Dockerfile
@@ -41,17 +58,23 @@ for dir in containers/*/; do
if [ -f "$DOCKERFILE" ]; then
if [ -n "$BUILD_PLATFORM" ]; then
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --driver docker-container --use
docker buildx inspect --bootstrap
docker buildx build --platform "$BUILD_PLATFORM" -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir" --push
else
docker build -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir"
docker push "$IMAGE_TAG"
docker push "$IMAGE_TAG_LATEST"
docker buildx build \
--cache-from=type=registry,ref="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:cache" \
--cache-to=type=registry,ref="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:cache",mode=max \
-t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" \
-f "$DOCKERFILE" "$dir" --push
fi
echo "Build e push completate: $IMAGE_TAG"
# Cleanup immagini locali dopo il push (buildx --push potrebbe non averle in locale)
docker image rm -f "$IMAGE_TAG" "$IMAGE_TAG_LATEST" >/dev/null 2>&1 || true
echo "Cleanup immagini locali completato: $IMAGE_TAG, $IMAGE_TAG_LATEST"
# Cleanup globale ad ogni ciclo: immagini inutilizzate e cache builder
docker image prune -af
docker builder prune -af
else
echo "Dockerfile non trovato in $dir"
fi

View File

@@ -0,0 +1,41 @@
#!/bin/bash
set -e
set -o pipefail
echo "progetto" $1
REPO_NAME=$1
COMMIT_SHA=$(git rev-parse HEAD)
REGISTRY_URL=$2
# Controlla se la directory containers esiste
if [ ! -d "containers" ]; then
echo "⚠️ Directory 'containers' non trovata, niente da fare"
exit 0
fi
for dir in containers/*/; do
CONTAINER_NAME=$(basename "$dir")
if [ -d "src/${CONTAINER_NAME}" ]; then
cp -R "src/${CONTAINER_NAME}/." "containers/${CONTAINER_NAME}/."
else
echo "Directory src/${CONTAINER_NAME} non trovata, skip copia sorgenti"
fi
ls -la $dir
# Cerca sia dockerfile che Dockerfile
if [ -f "$dir/dockerfile" ]; then
DOCKERFILE="$dir/dockerfile"
elif [ -f "$dir/Dockerfile" ]; then
DOCKERFILE="$dir/Dockerfile"
else
echo "Dockerfile non trovato in $dir"
continue
fi
IMAGE_TAG="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:${COMMIT_SHA}"
IMAGE_TAG_LATEST="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:latest"
echo "IMAGE_TAG_${CONTAINER_NAME}=$IMAGE_TAG" >> ./imglist
done

View File

@@ -3,6 +3,8 @@ set -euo pipefail
# Esegue kubectl apply per ogni sottodirectory di kubernetes separatamente
ENVIRONMENT="${1:-dev}"
YAML_DIR="kubernetes"
# ---------------------------------------------------------------------------
@@ -57,4 +59,4 @@ done
echo "Deploy completato di tutte le directory YAML."
echo "Eseguo check su endpoint da pubblicare"
/root/work/pipeline/addlistener.sh
/root/work/pipeline/addlistener.sh "$ENVIRONMENT"