edit function build_image

This commit is contained in:
2025-09-27 22:40:45 +02:00
parent 6fd21304cb
commit fe797377bd

View File

@@ -615,25 +615,16 @@ build_image() {
local config_file="$PROJECT_CONFIG_DIR/$project/config-file" local config_file="$PROJECT_CONFIG_DIR/$project/config-file"
load_project_config "$config_file" load_project_config "$config_file"
# Build-Parameter aus Config # Logs-Verzeichnis anlegen
local regs=() mkdir -p "$LOGS_DIR"
IFS=',' read -r -a regs <<< "$registry" # Registries als Array
local tags=()
for r in "${regs[@]}"; do
[[ -n "$r" ]] && tags+=("-t $r/$image_name:$version")
done
local archs local timestamp
archs=$(echo "$architectures" | sed 's/ /,/g') timestamp=$(date +"%Y%m%d_%H%M%S")
local logfile="$LOGS_DIR/${project}_${timestamp}.log"
local push_flag="" echo "==== Build gestartet: $(date) ====" >> "$logfile"
[[ "$push" == "yes" ]] && push_flag="--push"
local logfile="$LOGS_DIR/${project}_$(date +"%Y%m%d_%H%M%S").log"
echo "==== Build gestartet: $(date) ====" > "$logfile"
echo "Projekt: $project" >> "$logfile" echo "Projekt: $project" >> "$logfile"
echo "Registries: ${registry}" >> "$logfile" echo "Registries: $registry" >> "$logfile"
echo "Image: $image_name" >> "$logfile" echo "Image: $image_name" >> "$logfile"
echo "Architekturen: $architectures" >> "$logfile" echo "Architekturen: $architectures" >> "$logfile"
echo "Push: $push" >> "$logfile" echo "Push: $push" >> "$logfile"
@@ -641,39 +632,56 @@ build_image() {
echo "Latest: $latest" >> "$logfile" echo "Latest: $latest" >> "$logfile"
echo "====================================" >> "$logfile" echo "====================================" >> "$logfile"
# Build starten # Registry-URL Funktion
local build_cmd get_registry_url() {
build_cmd="docker buildx build --platform linux/$archs ${tags[*]} ./projects/$project $push_flag" local reg_name=$1
echo "$build_cmd" >> "$logfile" local reg_file="$REGISTRY_CONFIG_DIR/$reg_name/config-file"
if [[ -f "$reg_file" ]]; then
if $build_cmd >> "$logfile" 2>&1; then jq -r '.url' "$reg_file"
echo "==== Build beendet: $(date) ====" >> "$logfile" else
echo "$reg_name"
# Latest-Tag setzen
if [[ "$latest" == "yes" ]]; then
for r in "${regs[@]}"; do
[[ -n "$r" ]] && docker tag "$r/$image_name:$version" "$r/$image_name:latest" >> "$logfile" 2>&1
done
fi fi
}
# Subversion erhöhen # Tags erstellen
if grep -q "^auto_subversion=yes" "$config_file"; then tags=()
local main_ver sub_ver IFS=',' read -r -a regs <<< "$registry"
main_ver=$(echo "$version" | cut -d. -f1) for r in "${regs[@]}"; do
sub_ver=$(echo "$version" | cut -d. -f2) [[ -n "$r" ]] && tags+=("-t $(get_registry_url "$r")/$image_name:$version")
sub_ver=$((sub_ver+1)) if [[ "$latest" == "yes" ]]; then
version="$main_ver.$sub_ver" tags+=("-t $(get_registry_url "$r")/$image_name:latest")
sed -i "s|^version=.*|version=$version|" "$config_file" fi
echo "Subversion automatisch auf $version erhöht." >> "$logfile" done
# Architekturen korrekt formatieren
IFS=' ' read -r -a archs_arr <<< "$architectures"
platforms=$(printf ",linux/%s" "${archs_arr[@]}")
platforms=${platforms:1} # führendes Komma entfernen
# Build-Befehl als Array
build_cmd=(docker buildx build --platform "$platforms" "${tags[@]}" "./projects/$project")
[[ "$push" == "yes" ]] && build_cmd+=(--push) || build_cmd+=(--load)
# Build ausführen
if "${build_cmd[@]}" >> "$logfile" 2>&1; then
echo "==== Build beendet: $(date) ====" >> "$logfile"
whiptail --msgbox "Build erfolgreich abgeschlossen.\nLog: $logfile" 12 70
# Subversion automatisch erhöhen, falls aktiviert
if [[ "${auto_subversion:-no}" == "yes" ]]; then
IFS='.' read -r main sub <<< "$version"
sub=$((sub + 1))
new_version="$main.$sub"
sed -i "s|^version=.*|version=$new_version|" "$config_file"
whiptail --msgbox "Subversion automatisch auf $new_version erhöht." 10 60
fi fi
else else
echo "==== Build fehlgeschlagen: $(date) ====" >> "$logfile" echo "==== Build fehlgeschlagen: $(date) ====" >> "$logfile"
whiptail --msgbox "Build fehlgeschlagen.\nLog: $logfile" 12 70
fi fi
whiptail --msgbox "Build beendet. Log-Datei: $logfile" 15 70
} }
# Logs ansehen (optional gefiltert nach Projekt) # Logs ansehen (optional gefiltert nach Projekt)
view_logs() { view_logs() {
#ensure_logs_dir #ensure_logs_dir