fix: pull registry-aware image name on local miss

When `image-repo` is overridden, the registry plugin pushes under that name and
the bare local `dokku/<app>:N` tag is never created. `fn-verify-app-image` now
queries the `deployed-app-image-repo` trigger and pulls `${REMOTE_REPO}${DEPLOYED_REPO}:${TAG}`,
retagging it as the local bare reference so subsequent inspects resolve. Also
aligns the `storage:ensure-directory` deprecation test assertion with the
standardized `Deprecated:` prefix.
This commit is contained in:
Jose Diaz-Gonzalez
2026-05-25 04:30:48 -04:00
parent 9517353df4
commit 79921d75d6
3 changed files with 14 additions and 4 deletions

View File

@@ -311,16 +311,18 @@ fn-verify-app-image() {
DOCKER_CONFIG="$(fn-registry-docker-config-dir "$APP")"
[[ -n "$DOCKER_CONFIG" ]] && export DOCKER_CONFIG
local REMOTE_REPO
local REMOTE_REPO DEPLOYED_REPO TAG
REMOTE_REPO="$(plugn trigger deployed-app-repository "$APP")"
DEPLOYED_REPO="$(plugn trigger deployed-app-image-repo "$APP")"
TAG="${IMAGE##*:}"
dokku_log_info1 "Image $IMAGE not found locally, pulling from registry" 1>&2
if [[ "$IMAGE" == "${REMOTE_REPO}"* ]]; then
if [[ -n "$DEPLOYED_REPO" ]] && [[ "$IMAGE" == "${REMOTE_REPO}${DEPLOYED_REPO}:"* ]]; then
"$DOCKER_BIN" image pull "$IMAGE" 1>&2 && return 0
return 1
fi
local REMOTE_IMAGE="${REMOTE_REPO}${IMAGE}"
local REMOTE_IMAGE="${REMOTE_REPO}${DEPLOYED_REPO:-${IMAGE%:*}}:${TAG}"
if "$DOCKER_BIN" image pull "$REMOTE_IMAGE" 1>&2; then
"$DOCKER_BIN" image tag "$REMOTE_IMAGE" "$IMAGE" 1>&2 && return 0
fi

View File

@@ -105,8 +105,16 @@ setup_push_on_release_app() {
run /bin/bash -c "dokku config:set $TEST_APP RECOVERY_KEY=value"
echo "output: $output"
echo "status: $status"
assert_success
# triggerRestart forwards the deployed numeric tag (not "latest") to
# release-and-deploy, so the wrapper attempts recovery against ":1" rather
# than skipping recovery for ":latest" which is never pushed.
assert_output_contains "dokku/$TEST_APP:1 not found locally, pulling from registry"
# The wrapper retags the registry image back to the bare local name so
# subsequent get_app_image_name inspects resolve.
run /bin/bash -c "docker image inspect dokku/$TEST_APP:1"
echo "output: $output"
echo "status: $status"
assert_success
}

View File

@@ -443,7 +443,7 @@ teardown() {
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "deprecated"
assert_output_contains "Deprecated:"
}
@test "(storage:migrate) leaves legacy-mounts-migrated unset for apps with no legacy -v lines" {