Merge pull request #8268 from dokku/5324-login-to-registry-per-app

Add the ability to log into a registry on a per-app basis
This commit is contained in:
Jose Diaz-Gonzalez
2026-01-10 08:48:16 -05:00
committed by GitHub
25 changed files with 419 additions and 34 deletions

View File

@@ -27,7 +27,7 @@ teardown() {
assert_output "$help_output"
}
@test "(registry) registry:login" {
@test "(registry:login) global login with deprecated warning" {
if [[ -z "$DOCKERHUB_USERNAME" ]] || [[ -z "$DOCKERHUB_TOKEN" ]]; then
skip "skipping due to missing docker.io credentials DOCKERHUB_USERNAME:DOCKERHUB_TOKEN"
fi
@@ -37,6 +37,7 @@ teardown() {
echo "status: $status"
assert_success
assert_output_contains "Login Succeeded"
assert_output_contains "Deprecated: please use --global flag"
run /bin/bash -c "echo $DOCKERHUB_TOKEN | dokku registry:login docker.io --password-stdin $DOCKERHUB_USERNAME"
echo "output: $output"
@@ -45,6 +46,93 @@ teardown() {
assert_output_contains "Login Succeeded"
}
@test "(registry:login) global login with --global flag" {
if [[ -z "$DOCKERHUB_USERNAME" ]] || [[ -z "$DOCKERHUB_TOKEN" ]]; then
skip "skipping due to missing docker.io credentials DOCKERHUB_USERNAME:DOCKERHUB_TOKEN"
fi
run /bin/bash -c "dokku registry:login --global docker.io $DOCKERHUB_USERNAME $DOCKERHUB_TOKEN"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Login Succeeded"
assert_output_not_contains "Deprecated"
}
@test "(registry:login) per-app login" {
if [[ -z "$DOCKERHUB_USERNAME" ]] || [[ -z "$DOCKERHUB_TOKEN" ]]; then
skip "skipping due to missing docker.io credentials DOCKERHUB_USERNAME:DOCKERHUB_TOKEN"
fi
run /bin/bash -c "dokku registry:login $TEST_APP docker.io $DOCKERHUB_USERNAME $DOCKERHUB_TOKEN"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Login Succeeded"
run /bin/bash -c "test -f /var/lib/dokku/config/registry/$TEST_APP/config.json"
echo "output: $output"
echo "status: $status"
assert_success
}
@test "(registry:logout) per-app logout" {
if [[ -z "$DOCKERHUB_USERNAME" ]] || [[ -z "$DOCKERHUB_TOKEN" ]]; then
skip "skipping due to missing docker.io credentials DOCKERHUB_USERNAME:DOCKERHUB_TOKEN"
fi
run /bin/bash -c "dokku registry:login $TEST_APP docker.io $DOCKERHUB_USERNAME $DOCKERHUB_TOKEN"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku registry:logout $TEST_APP docker.io"
echo "output: $output"
echo "status: $status"
assert_success
}
@test "(registry:logout) global logout" {
if [[ -z "$DOCKERHUB_USERNAME" ]] || [[ -z "$DOCKERHUB_TOKEN" ]]; then
skip "skipping due to missing docker.io credentials DOCKERHUB_USERNAME:DOCKERHUB_TOKEN"
fi
run /bin/bash -c "dokku registry:login --global docker.io $DOCKERHUB_USERNAME $DOCKERHUB_TOKEN"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku registry:logout --global docker.io"
echo "output: $output"
echo "status: $status"
assert_success
}
@test "(registry) per-app credentials deleted on app destroy" {
if [[ -z "$DOCKERHUB_USERNAME" ]] || [[ -z "$DOCKERHUB_TOKEN" ]]; then
skip "skipping due to missing docker.io credentials DOCKERHUB_USERNAME:DOCKERHUB_TOKEN"
fi
run /bin/bash -c "dokku registry:login $TEST_APP docker.io $DOCKERHUB_USERNAME $DOCKERHUB_TOKEN"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -d /var/lib/dokku/config/registry/$TEST_APP"
echo "output: $output"
echo "status: $status"
assert_success
destroy_app
run /bin/bash -c "test -d /var/lib/dokku/config/registry/$TEST_APP"
echo "output: $output"
echo "status: $status"
assert_failure
create_app
}
@test "(registry) registry:set server" {
run /bin/bash -c "dokku registry:set --global server ghcr.io"
echo "output: $output"