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() {