edit function build_image
This commit is contained in:
@@ -615,62 +615,82 @@ build_image() {
|
||||
local config_file="$PROJECT_CONFIG_DIR/$project/config-file"
|
||||
load_project_config "$config_file"
|
||||
|
||||
#ensure_logs_dir
|
||||
# Logs-Verzeichnis
|
||||
mkdir -p "$LOGS_DIR"
|
||||
local timestamp
|
||||
timestamp=$(date +"%Y%m%d_%H%M%S")
|
||||
local logfile="$LOGS_DIR/${project}_${timestamp}.log"
|
||||
|
||||
{
|
||||
echo "==== Build gestartet: $(date) ===="
|
||||
echo "Projekt: $project"
|
||||
echo "Registry: $registry"
|
||||
echo "Image: $image_name"
|
||||
echo "Architekturen: $architectures"
|
||||
echo "Push: $push"
|
||||
echo "Version: $version"
|
||||
echo "Latest-Tag: $latest"
|
||||
echo "===================================="
|
||||
} | tee "$logfile"
|
||||
echo "==== Build gestartet: $(date) ====" | tee -a "$logfile"
|
||||
echo "Projekt: $project" | tee -a "$logfile"
|
||||
echo "Registries: $registry" | tee -a "$logfile"
|
||||
echo "Image: $image_name" | tee -a "$logfile"
|
||||
echo "Architekturen: $architectures" | tee -a "$logfile"
|
||||
echo "Push: $push" | tee -a "$logfile"
|
||||
echo "Version: $version" | tee -a "$logfile"
|
||||
echo "Latest: $latest" | tee -a "$logfile"
|
||||
echo "====================================" | tee -a "$logfile"
|
||||
|
||||
# Architekturen in Buildx-Format umwandeln (linux/arch, getrennt durch Komma)
|
||||
# Plattformen für Buildx
|
||||
local platforms
|
||||
platforms=$(echo "$architectures" | xargs -n1 | sed 's|^|linux/|' | paste -sd, -)
|
||||
IFS=' ' read -ra archs <<< "$architectures"
|
||||
platforms=$(printf "linux/%s," "${archs[@]}")
|
||||
platforms="${platforms%,}" # letztes Komma entfernen
|
||||
|
||||
# Tags aufbauen
|
||||
# Tags vorbereiten
|
||||
local tags=()
|
||||
IFS=',' read -ra regs <<< "$registry"
|
||||
for reg in "${regs[@]}"; do
|
||||
tags+=("-t" "${reg}/${image_name}:${version}")
|
||||
if [[ "$latest" == "yes" ]]; then
|
||||
tags+=("-t" "${reg}/${image_name}:latest")
|
||||
fi
|
||||
local url
|
||||
url=$(jq -r '.url' "$CONFIG_DIR/registries/$reg/config-file")
|
||||
tags+=("-t" "${url}/${image_name}:${version}")
|
||||
[[ "$latest" == "yes" ]] && tags+=("-t" "${url}/${image_name}:latest")
|
||||
done
|
||||
|
||||
# Push-Flag
|
||||
local push_flag=""
|
||||
[[ "$push" == "yes" ]] && push_flag="--push"
|
||||
|
||||
{
|
||||
docker buildx build \
|
||||
--platform "$platforms" \
|
||||
"${tags[@]}" \
|
||||
"$PROJECTS_DIR/$project" \
|
||||
$push_flag
|
||||
} 2>&1 | tee -a "$logfile"
|
||||
|
||||
echo "==== Build beendet: $(date) ====" | tee -a "$logfile"
|
||||
|
||||
# Auto-Subversion
|
||||
if [[ "$auto_subversion" == "yes" ]]; then
|
||||
local major minor
|
||||
major=$(echo "$version" | cut -d. -f1)
|
||||
minor=$(echo "$version" | cut -d. -f2)
|
||||
minor=$((minor + 1))
|
||||
sed -i "s/^version=.*/version=${major}.${minor}/" "$config_file"
|
||||
echo "Subversion automatisch auf ${major}.${minor} erhöht." | tee -a "$logfile"
|
||||
# Login zu allen Registries falls push=yes
|
||||
if [[ "$push" == "yes" ]]; then
|
||||
for reg in "${regs[@]}"; do
|
||||
local url username password
|
||||
url=$(jq -r '.url' "$CONFIG_DIR/registries/$reg/config-file")
|
||||
username=$(jq -r '.username // ""' "$CONFIG_DIR/registries/$reg/config-file")
|
||||
password=$(jq -r '.password // ""' "$CONFIG_DIR/registries/$reg/config-file")
|
||||
if [[ -n "$username" && -n "$password" ]]; then
|
||||
docker login "$url" -u "$username" -p "$password" &>> "$logfile"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Build-Befehl
|
||||
local build_cmd
|
||||
build_cmd="docker buildx build --platform $platforms ${tags[*]} ./projects/$project"
|
||||
if [[ "$push" == "yes" ]]; then
|
||||
build_cmd+=" --push"
|
||||
else
|
||||
# nur erste Plattform lokal laden
|
||||
build_cmd+=" --load --platform linux/${archs[0]}"
|
||||
fi
|
||||
|
||||
# Build ausführen
|
||||
if $build_cmd 2>&1 | tee -a "$logfile"; then
|
||||
echo "==== Build beendet: $(date) ====" | tee -a "$logfile"
|
||||
# Subversion erhöhen, falls auto_subversion=yes
|
||||
if [[ "$auto_subversion" == "yes" ]]; then
|
||||
local major minor
|
||||
major=${version%%.*}
|
||||
minor=${version##*.}
|
||||
minor=$((minor + 1))
|
||||
new_version="$major.$minor"
|
||||
sed -i "s|^version=.*|version=$new_version|" "$config_file"
|
||||
echo "Subversion automatisch auf $new_version erhöht." | tee -a "$logfile"
|
||||
fi
|
||||
else
|
||||
echo "==== Build fehlgeschlagen: $(date) ====" | tee -a "$logfile"
|
||||
fi
|
||||
|
||||
whiptail --msgbox "Build abgeschlossen. Log-Datei: $logfile" 10 60
|
||||
}
|
||||
|
||||
|
||||
# Logs ansehen (optional gefiltert nach Projekt)
|
||||
view_logs() {
|
||||
#ensure_logs_dir
|
||||
|
||||
Reference in New Issue
Block a user