Every Go-implemented plugin's `:report --format json` now emits keys without the redundant `<plugin>-` head segment, matching the shape bash plugins have always emitted. The CLI flag names and `:set` semantics are unchanged. For backwards compatibility during the 0.38.x patch series, the legacy `<plugin>-<property>` keys are emitted side-by-side with the new keys, and a future major release will drop the legacy keys. `common.ReportSingleApp` is refactored to accept a `ReportSingleAppInput` struct with a `Validate()` method so the input is checked before any work runs, which also catches the latent `"docker options"` reportType bug at the API boundary.
746 lines
23 KiB
Bash
746 lines
23 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load test_helper
|
|
|
|
setup() {
|
|
global_setup
|
|
create_app
|
|
dokku checks:set $TEST_APP wait-to-retire 30
|
|
}
|
|
|
|
teardown() {
|
|
destroy_app
|
|
global_teardown
|
|
}
|
|
|
|
@test "(registry) registry:help" {
|
|
run /bin/bash -c "dokku registry"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_contains "Manage registry settings for an app"
|
|
help_output="$output"
|
|
|
|
run /bin/bash -c "dokku registry:help"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_output_contains "Manage registry settings for an app"
|
|
assert_output "$help_output"
|
|
}
|
|
|
|
@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
|
|
|
|
run /bin/bash -c "dokku registry:login docker.io $DOCKERHUB_USERNAME $DOCKERHUB_TOKEN"
|
|
echo "output: $output"
|
|
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"
|
|
echo "status: $status"
|
|
assert_success
|
|
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:report) image-repo raw vs computed vs global" {
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
# When neither per-app image-repo nor a global image-repo-template are set,
|
|
# reportComputedImageRepo falls back to common.GetAppImageRepo which returns
|
|
# the default dokku/<app> image name.
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
|
|
assert_success
|
|
assert_output "dokku/$TEST_APP"
|
|
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template 'dokku/{{ APP }}'"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'dokku/{{ APP }}'
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
|
|
assert_success
|
|
assert_output "dokku/$TEST_APP"
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP image-repo my/$TEST_APP"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo\"'"
|
|
assert_success
|
|
assert_output "my/$TEST_APP"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
|
|
assert_success
|
|
assert_output "my/$TEST_APP"
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP image-repo"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template"
|
|
assert_success
|
|
}
|
|
|
|
@test "(registry:report) image-repo-template raw vs computed vs global" {
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template 'global-prefix/{{ .AppName }}'"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'global-prefix/{{ .AppName }}'
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'global-prefix/{{ .AppName }}'
|
|
|
|
# The global template renders into the computed image-repo.
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
|
|
assert_success
|
|
assert_output "global-prefix/$TEST_APP"
|
|
|
|
# Per-app template overrides the global template.
|
|
run /bin/bash -c "dokku registry:set $TEST_APP image-repo-template 'app-prefix/{{ .AppName }}-prod'"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'app-prefix/{{ .AppName }}-prod'
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'global-prefix/{{ .AppName }}'
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'app-prefix/{{ .AppName }}-prod'
|
|
|
|
# The per-app template flows through to the computed image-repo.
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
|
|
assert_success
|
|
assert_output "app-prefix/$TEST_APP-prod"
|
|
|
|
# Unsetting the per-app template restores the global template behavior.
|
|
run /bin/bash -c "dokku registry:set $TEST_APP image-repo-template"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'global-prefix/{{ .AppName }}'
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
|
|
assert_success
|
|
assert_output "global-prefix/$TEST_APP"
|
|
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template"
|
|
assert_success
|
|
}
|
|
|
|
@test "(registry:report) push-on-release raw vs computed vs global" {
|
|
run /bin/bash -c "dokku registry:set --global push-on-release"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-push-on-release\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-push-on-release\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-on-release\"'"
|
|
assert_success
|
|
assert_output "false"
|
|
|
|
run /bin/bash -c "dokku registry:set --global push-on-release true"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-push-on-release\"'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-on-release\"'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP push-on-release false"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-push-on-release\"'"
|
|
assert_success
|
|
assert_output "false"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-on-release\"'"
|
|
assert_success
|
|
assert_output "false"
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP push-on-release"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:set --global push-on-release"
|
|
assert_success
|
|
}
|
|
|
|
@test "(registry:report --global) computed and global keys" {
|
|
run /bin/bash -c "dokku registry:set --global push-on-release"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global server"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global push-extra-tags"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-push-on-release\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-push-on-release\"'"
|
|
assert_success
|
|
assert_output "false"
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-server\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-server\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-image-repo-template\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:set --global push-on-release true"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global server ghcr.io"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template 'dokku/{{ APP }}'"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global push-extra-tags latest,stable"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-push-on-release\"'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-push-on-release\"'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-server\"'"
|
|
assert_success
|
|
assert_output "ghcr.io"
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-server\"'"
|
|
assert_success
|
|
assert_output "ghcr.io/"
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'dokku/{{ APP }}'
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-image-repo-template\"'"
|
|
assert_success
|
|
assert_output 'dokku/{{ APP }}'
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output "latest,stable"
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output "latest,stable"
|
|
|
|
run /bin/bash -c "dokku registry:set --global push-on-release"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global server"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global image-repo-template"
|
|
assert_success
|
|
run /bin/bash -c "dokku registry:set --global push-extra-tags"
|
|
assert_success
|
|
}
|
|
|
|
@test "(registry:report) push-extra-tags raw vs computed vs global" {
|
|
run /bin/bash -c "dokku registry:set --global push-extra-tags"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output ""
|
|
|
|
run /bin/bash -c "dokku registry:set --global push-extra-tags global-tag"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-global-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output "global-tag"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output "global-tag"
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP push-extra-tags release,stable"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output "release,stable"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-extra-tags\"'"
|
|
assert_success
|
|
assert_output "release,stable"
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP push-extra-tags"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:set --global push-extra-tags"
|
|
assert_success
|
|
}
|
|
|
|
@test "(registry) registry:set server" {
|
|
run /bin/bash -c "dokku registry:set --global server ghcr.io"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-global-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "ghcr.io"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-computed-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "ghcr.io/"
|
|
|
|
run /bin/bash -c "dokku registry:set --global server docker.io"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-global-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "docker.io"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-computed-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP server docker.io"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-computed-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_not_exists
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-global-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "docker.io"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "docker.io"
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP server ghcr.io"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-computed-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "ghcr.io/"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-global-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "docker.io"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --registry-server"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output "ghcr.io"
|
|
}
|
|
|
|
@test "(registry) registry:set image-repo" {
|
|
run /bin/bash -c "docker images"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP image-repo heroku/$TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run deploy_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker inspect heroku/$TEST_APP:latest"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker images"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
}
|
|
|
|
@test "(registry) registry:set push-on-release" {
|
|
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:set $TEST_APP push-on-release true"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP image-repo dokku/test-app"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run deploy_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
sleep 60
|
|
|
|
run /bin/bash -c "dokku ps:retire"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker container ls -a"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker image ls"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ps:rebuild $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
sleep 60
|
|
|
|
run /bin/bash -c "dokku ps:retire"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker container ls -a"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker image ls"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku config:set $TEST_APP key=VALUE"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
sleep 60
|
|
|
|
run /bin/bash -c "dokku ps:retire"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker container ls -a"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker image ls"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ps:rebuild $TEST_APP"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
sleep 60
|
|
|
|
run /bin/bash -c "dokku ps:retire"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku ps:retire"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker container ls -a"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker image ls"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "docker image inspect dokku/test-app:1"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "docker image inspect dokku/test-app:2"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "docker image inspect dokku/test-app:3"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_failure
|
|
|
|
run /bin/bash -c "docker image inspect dokku/test-app:4"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
}
|
|
|
|
@test "(registry) registry:set push-extra-tags" {
|
|
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:set $TEST_APP push-on-release true"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP image-repo dokku/test-app"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run /bin/bash -c "dokku registry:set $TEST_APP push-extra-tags foo"
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
|
|
run deploy_app
|
|
echo "output: $output"
|
|
echo "status: $status"
|
|
assert_success
|
|
assert_output_contains "dokku/test-app:foo"
|
|
}
|
|
|
|
@test "(registry:report) emits new stripped JSON keys alongside legacy" {
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r 'has(\"image-repo\") and has(\"registry-image-repo\")'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r 'has(\"computed-image-repo\") and has(\"registry-computed-image-repo\")'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r 'has(\"push-on-release\") and has(\"registry-push-on-release\")'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r 'has(\"global-push-on-release\") and has(\"registry-global-push-on-release\")'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r 'has(\"computed-server\") and has(\"registry-computed-server\")'"
|
|
assert_success
|
|
assert_output "true"
|
|
|
|
run /bin/bash -c "dokku registry:report --global --format json | jq -r 'has(\"global-image-repo-template\") and has(\"registry-global-image-repo-template\")'"
|
|
assert_success
|
|
assert_output "true"
|
|
}
|