odoov18-compta/3.build.odoo.sh

91 lines
3.5 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
source ./0.variables.env
# ── Extraction des métadonnées depuis le Dockerfile ──────────────────────────
DOCKERFILE=./config-odoo/"${1:-Dockerfile}"
# ── Extraction des metadonnees depuis le Dockerfile ──────────────────────────
# Fonction robuste. gere les directives ENV et ARG, les formes "X=Y" et "X Y",
# et les valeurs entourees de guillemets. Retourne le premier token de la valeur.
extract_dockerfile_var() {
local key="$1"
local file="$2"
[[ -f "$file" ]] || { echo "[extract] Fichier introuvable. $file" >&2; return 2; }
awk -v k="$key" '
$0 ~ "^[[:space:]]*(ENV|ARG)[[:space:]]+" k "[[:space:]=]" {
sub("^[[:space:]]*(ENV|ARG)[[:space:]]+" k "[[:space:]=]+", "")
gsub(/"/, "")
print $1
exit
}
' "$file"
}
DOCKERFILE="./config-odoo/${1:-Dockerfile}"
[[ -f "$DOCKERFILE" ]] || {
echo "ERREUR. Dockerfile introuvable. $DOCKERFILE" >&2
exit 1
}
ODOO_VERSION=$(extract_dockerfile_var "ODOO_VERSION" "$DOCKERFILE")
ODOO_RELEASE=$(extract_dockerfile_var "ODOO_RELEASE" "$DOCKERFILE")
ODOO_SHA=$(extract_dockerfile_var "ODOO_SHA" "$DOCKERFILE")
: "${ODOO_VERSION:?ODOO_VERSION non extrait depuis $DOCKERFILE}"
: "${ODOO_RELEASE:?ODOO_RELEASE non extrait depuis $DOCKERFILE}"
: "${ODOO_SHA:?ODOO_SHA non extrait depuis $DOCKERFILE}"
echo "Metadonnees extraites depuis $DOCKERFILE."
echo " ODOO_VERSION = $ODOO_VERSION"
echo " ODOO_RELEASE = $ODOO_RELEASE"
echo " ODOO_SHA = $ODOO_SHA"
if [[ -z "$ODOO_VERSION" || -z "$ODOO_RELEASE" ]]; then
echo "ERREUR : impossible d'extraire ODOO_VERSION ou ODOO_RELEASE depuis $DOCKERFILE" >&2
exit 1
fi
IMAGE_NAME="odoo-${ODOO_VERSION}.${ODOO_RELEASE}-image"
echo "────────────────────────────────────────────"
echo " Dockerfile : $DOCKERFILE"
echo " Odoo version : $ODOO_VERSION"
echo " Build release: $ODOO_RELEASE"
echo " Image cible : $IMAGE_NAME"
echo "────────────────────────────────────────────"
# ── Build ─────────────────────────────────────────────────────────────────────
#echo "──commande cp───────────────────────────────"
#cp ./odoo.conf ./config-odoo/
cp ./requirements.txt ./config-odoo/
#echo "──commande cd ──────────────────────────────"
cd config-odoo
#echo "───commande build ──────────────────────────"
docker build \
--build-arg ODOO_RELEASE="$ODOO_RELEASE" \
--tag "$IMAGE_NAME" \
.
#echo "─commande cd ..─────────────────────────────"
cd ..
#echo "──────alimentation de .env pour le docker-compose.yml──────────────"
echo "" > ./.env
echo "ODOO_IMAGE=${IMAGE_NAME}" >> ./.env
echo "" >> ./0.variables.env
echo "export ODOO_IMAGE=${IMAGE_NAME}" >> ./0.variables.env
#echo "──────fin───────────────────────────────────"
echo ""
echo "✓ Image construite : $IMAGE_NAME"