From 0d246b1c111143351fd264a0918f0d04b91008fd Mon Sep 17 00:00:00 2001
From: Thomas Woerner <twoerner@redhat.com>
Date: Wed, 31 Jul 2024 15:33:19 +0200
Subject: [PATCH] infra/image/build.sh: Fail if deployment failed or podman is
 missing

If the deployment was enabled and failed, the script still continued
without failing. If podman was missing it failed without a proper error.

The script now fails and does not enable the services and also does not
commit after the failed deployment. Also is fails if podman is missing.
---
 infra/image/build.sh | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/infra/image/build.sh b/infra/image/build.sh
index 4f77b84..b160217 100755
--- a/infra/image/build.sh
+++ b/infra/image/build.sh
@@ -56,6 +56,8 @@ distro=${1:-}
 [ -f "${BASEDIR}/dockerfile/${distro}" ] \
   || die "${distro} is not a valid distro target.\nUse one of: $(valid_distro)"
 
+[ -n "$(command -v "podman")" ] || die "podman is required."
+
 if [ "${deploy_server}" == "Y" ]
 then
     [ -n "$(command -v "ansible-playbook")" ] || die "ansible-playbook is required to install FreeIPA."
@@ -109,23 +111,32 @@ echo
 
 if [ "${deploy_server}" == "Y" ]
 then
+    deployed=false
+
     log info "= Starting ${name} ="
     [ "${container_state}" == "running" ] || podman start "${name}"
     echo
 
     log info "= Deploying IPA ="
-    ansible-playbook -i "${inventory_file}" "${deploy_playbook}"
+    if ansible-playbook -i "${inventory_file}" "${deploy_playbook}"
+    then
+        deployed=true
+    fi
     echo
 
-    log info "= Enabling additional services ="
-    podman exec "${name}" systemctl enable fixnet
-    podman exec "${name}" systemctl enable fixipaip
-    echo
+    if $deployed; then
+        log info "= Enabling additional services ="
+        podman exec "${name}" systemctl enable fixnet
+        podman exec "${name}" systemctl enable fixipaip
+        echo
+    fi
     
     log info "= Stopping container ${name} ="
     podman stop "${name}"
     echo
 
+    $deployed || die "Deployment failed"
+
     log info "= Committing \"${quayname}:${server_tag}\" ="
     podman commit "${name}" "${quayname}:${server_tag}"
     echo
-- 
GitLab