allineamento
This commit is contained in:
55
pipeline/_customize.sh
Normal file
55
pipeline/_customize.sh
Normal 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"
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
41
pipeline/build_imagelist.sh
Normal file
41
pipeline/build_imagelist.sh
Normal 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
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user