From 157297ab87feca60e9acfcfdb56e0e74b96c9d46 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 12 Mar 2022 06:25:12 -0500 Subject: [PATCH] feat: ensure the image tag is correct if a build fails Either retag the original image or remove the tag completely. --- plugins/common/functions | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/common/functions b/plugins/common/functions index 8617e8c79..34829c81b 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -624,7 +624,21 @@ dokku_build() { declare desc="build phase" declare APP="$1" IMAGE_SOURCE_TYPE="$2" SOURCECODE_WORK_DIR="$3" - plugn trigger builder-build "$IMAGE_SOURCE_TYPE" "$APP" "$SOURCECODE_WORK_DIR" + local IMAGE=$(get_app_image_name "$APP") + local RELEASED_IMAGE_ID="$(docker image ls --filter "label=com.dokku.image-stage=release" --filter "label=com.dokku.app-name=$APP" --format "{{.ID}}")" + if plugn trigger builder-build "$IMAGE_SOURCE_TYPE" "$APP" "$SOURCECODE_WORK_DIR"; then + return + fi + + if [[ -n "$RELEASED_IMAGE_ID" ]]; then + dokku_log_warn "Retagging old image $RELEASED_IMAGE_ID as $IMAGE" + "$DOCKER_BIN" image tag "$RELEASED_IMAGE_ID" "$IMAGE" 2> /dev/null || true + else + dokku_log_warn "Removing invalid image tag $IMAGE" + "$DOCKER_BIN" image remove --force --no-prune "$IMAGE" &>/dev/null || true + fi + + dokku_log_fail "App build failed" } dokku_release() {