From 6ab144aae405db6d3ab672c58b7675b49b86d009 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rados=C5=82aw=20Piliszek?= <radoslaw.piliszek@gmail.com>
Date: Thu, 14 Nov 2019 11:37:22 +0100
Subject: [PATCH] CI/Debian: Push images after building

This fixes Debian job failures during image building.

See https://github.com/docker/for-linux/issues/711
for upstream details.

Change-Id: Icf3ffb261605ffe5d8f2618c2ed4cb97db97dd49
---
 tools/setup_gate.sh | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/tools/setup_gate.sh b/tools/setup_gate.sh
index 9e5a8a1dde..2a90c3225c 100755
--- a/tools/setup_gate.sh
+++ b/tools/setup_gate.sh
@@ -58,6 +58,12 @@ function setup_config {
         GATE_IMAGES="cron,haproxy,keepalived,kolla-toolbox,mariadb"
     fi
 
+    # NOTE(yoctozepto): we cannot build and push at the same time on debian
+    # buster see https://github.com/docker/for-linux/issues/711.
+    PUSH="true"
+    if [[ "debian" == $BASE_DISTRO ]]; then
+        PUSH="false"
+    fi
     cat <<EOF | sudo tee /etc/kolla/kolla-build.conf
 [DEFAULT]
 namespace = lokolla
@@ -66,7 +72,7 @@ install_type = ${INSTALL_TYPE}
 tag = ${TAG}
 profile = gate
 registry = 127.0.0.1:4000
-push = true
+push = ${PUSH}
 logs_dir = /tmp/logs/build
 template_override = /etc/kolla/template_overrides.j2
 
@@ -109,6 +115,13 @@ function prepare_images {
     sudo docker run -d -p 4000:5000 --restart=always -v /opt/kolla_registry/:/var/lib/registry --name registry registry:2
     pushd "${KOLLA_SRC_DIR}"
     sudo tox -e "build-${BASE_DISTRO}-${INSTALL_TYPE}"
+    # NOTE(yoctozepto): due to debian buster we push after images are built
+    # see https://github.com/docker/for-linux/issues/711
+    if [[ "debian" == $BASE_DISTRO ]]; then
+        for img in $(sudo docker image ls --format '{{ .Repository }}:{{ .Tag }}' | grep lokolla/); do
+            sudo docker push $img;
+        done
+    fi
     popd
 }