Compare commits

...

11 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
f3ba0d51f6 Release 1.4.10 2018-12-02 16:17:52 -05:00
Jose Diaz-Gonzalez
39a7864022 fix: correct issues where docker ps is truncated
This should actually be refactored to avoid the grep call completely, but the current fix will correct the issue for now.

Refs dokku/dokku-postgres#131
2018-12-02 14:29:24 -05:00
Jose Diaz-Gonzalez
8061f0c50a fix: correct issues where docker ps is truncated
This should actually be refactored to avoid the grep call completely, but the current fix will correct the issue for now.

Refs dokku/dokku-postgres#131
2018-12-02 05:21:10 -05:00
Jose Diaz-Gonzalez
aa1a23d5a1 fix: ensure any backup cron files are deleted when the service is destroyed
Closes dokku/dokku-redis#118
2018-12-02 05:10:06 -05:00
Jose Diaz-Gonzalez
5e5ad6d472 fix: clean up backup containers after use
Closes dokku/dokku#104
2018-12-02 04:46:52 -05:00
Jose Diaz-Gonzalez
733e14ee73 fix: correct documentation around the passphrase parameter
Closes dokku/dokku-mysql#101
2018-12-02 04:33:58 -05:00
Jose Diaz-Gonzalez
fc018c65f1 Release 1.4.9 2018-10-11 14:53:12 -04:00
Jose Diaz-Gonzalez
598ea1f526 fix: correct issue where help output isnt colorized by default 2018-10-11 14:20:03 -04:00
Jose Diaz-Gonzalez
b7724b826c fix: correct issues in upgrade and fix tests 2018-10-11 14:16:47 -04:00
Jose Diaz-Gonzalez
0cee8bd31a Release 1.4.8 2018-10-11 00:05:24 -04:00
Jose Diaz-Gonzalez
765f44dcfe feat: skip upgrade if service is already up to date 2018-10-11 00:04:52 -04:00
10 changed files with 25 additions and 18 deletions

View File

@@ -23,7 +23,7 @@ mysql:backup-auth <name> <aws_access_key_id> <aws_secret_access_key> (<aws_defau
mysql:backup-deauth <name> Removes backup authentication for the mysql service mysql:backup-deauth <name> Removes backup authentication for the mysql service
mysql:backup-schedule <name> <schedule> <bucket> Schedules a backup of the mysql service mysql:backup-schedule <name> <schedule> <bucket> Schedules a backup of the mysql service
mysql:backup-schedule-cat <name> Cat the contents of the configured backup cronfile for the service mysql:backup-schedule-cat <name> Cat the contents of the configured backup cronfile for the service
mysql:backup-set-encryption <name> <encryption_key> Sets up GPG encryption for future backups of the mysql service mysql:backup-set-encryption <name> <passphrase> Set a GPG passphrase for backups
mysql:backup-unschedule <name> Unschedules the backup of the mysql service mysql:backup-unschedule <name> Unschedules the backup of the mysql service
mysql:backup-unset-encryption <name> Removes backup encryption for future backups of the mysql service mysql:backup-unset-encryption <name> Removes backup encryption for future backups of the mysql service
mysql:clone <name> <new-name> Create container <new-name> then copy data from <name> into <new-name> mysql:clone <name> <new-name> Create container <new-name> then copy data from <name> into <new-name>

View File

@@ -183,7 +183,7 @@ service_backup() {
fi fi
# shellcheck disable=SC2086 # shellcheck disable=SC2086
docker run $BACKUP_PARAMETERS dokkupaas/s3backup:0.8.0 docker run --rm $BACKUP_PARAMETERS dokkupaas/s3backup:0.8.0
} }
service_backup_auth() { service_backup_auth() {
@@ -283,6 +283,7 @@ service_container_rm() {
[[ -z "$ID" ]] && return 0 [[ -z "$ID" ]] && return 0
dokku_log_verbose_quiet "Removing container" dokku_log_verbose_quiet "Removing container"
docker update --restart=no "$SERVICE_NAME" > /dev/null 2>&1
if ! docker rm "$SERVICE_NAME" > /dev/null 2>&1; then if ! docker rm "$SERVICE_NAME" > /dev/null 2>&1; then
dokku_log_fail "Unable to remove container for service $SERVICE" dokku_log_fail "Unable to remove container for service $SERVICE"
fi fi
@@ -666,7 +667,7 @@ service_stop() {
declare SERVICE="$1" declare SERVICE="$1"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"; local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE";
local SERVICE_NAME="$(get_service_name "$SERVICE")" local SERVICE_NAME="$(get_service_name "$SERVICE")"
local ID=$(docker ps -f status=running | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true local ID=$(docker ps -f status=running --no-trunc | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true
[[ -z $ID ]] && dokku_log_warn "Service is already stopped" && return 0 [[ -z $ID ]] && dokku_log_warn "Service is already stopped" && return 0
if [[ -n $ID ]]; then if [[ -n $ID ]]; then

View File

@@ -119,14 +119,14 @@ service_start() {
local QUIET="$2" local QUIET="$2"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local SERVICE_NAME="$(get_service_name "$SERVICE")" local SERVICE_NAME="$(get_service_name "$SERVICE")"
local ID=$(docker ps -f status=running | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true local ID=$(docker ps -f status=running --no-trunc | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true
if [[ -n $ID ]]; then if [[ -n $ID ]]; then
[[ -z $QUIET ]] && dokku_log_warn "Service is already started" [[ -z $QUIET ]] && dokku_log_warn "Service is already started"
return 0 return 0
fi fi
dokku_log_info2_quiet "Starting container" dokku_log_info2_quiet "Starting container"
local PREVIOUS_ID=$(docker ps -f status=exited | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true local PREVIOUS_ID=$(docker ps -f status=exited --no-trunc | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true
local ROOTPASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")" local ROOTPASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")"
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")" local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"

View File

@@ -142,7 +142,7 @@ fn-help-contents-subcommand() {
fn-help-fancy-tput() { fn-help-fancy-tput() {
declare desc="A wrapper around tput" declare desc="A wrapper around tput"
if [[ -z "$DOKKU_NO_COLOR" ]] || [[ "$TERM" = "unknown" ]] || [[ "$TERM" == "dumb" ]]; then if [[ -n "$DOKKU_NO_COLOR" ]] || [[ "$TERM" = "unknown" ]] || [[ "$TERM" == "dumb" ]]; then
return return
fi fi
@@ -152,7 +152,7 @@ fn-help-fancy-tput() {
fn-help-fancy-color() { fn-help-fancy-color() {
declare desc="A wrapper around colors" declare desc="A wrapper around colors"
if [[ -z "$DOKKU_NO_COLOR" ]] || [[ "$TERM" = "unknown" ]] || [[ "$TERM" == "dumb" ]]; then if [[ -n "$DOKKU_NO_COLOR" ]] || [[ "$TERM" = "unknown" ]] || [[ "$TERM" == "dumb" ]]; then
return return
fi fi

View File

@@ -1,4 +1,4 @@
[plugin] [plugin]
description = "dokku mysql service plugin" description = "dokku mysql service plugin"
version = "1.4.7" version = "1.4.10"
[plugin.config] [plugin.config]

View File

@@ -5,19 +5,19 @@ source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions" source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-backup-set-encryption-cmd() { service-backup-set-encryption-cmd() {
#E set a GPG encryption key for backups #E set a GPG passphrase for backups
#E dokku $PLUGIN_COMMAND_PREFIX:backup-set-encryption lolipop #E dokku $PLUGIN_COMMAND_PREFIX:backup-set-encryption lolipop
#A service, service to run command against #A service, service to run command against
#A encryption-key, a GPG encryption key #A passphrase, a GPG-compatible passphrase
declare desc="sets encryption for all future backups of $PLUGIN_SERVICE service" declare desc="sets encryption for all future backups of $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-set-encryption" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1 local cmd="$PLUGIN_COMMAND_PREFIX:backup-set-encryption" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" ENCRYPTION_KEY="$2" declare SERVICE="$1" PASSPHRASE="$2"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented" is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service" [[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service"
[[ -z "$ENCRYPTION_KEY" ]] && dokku_log_fail "Please specify a GPG encryption key" [[ -z "$PASSPHRASE" ]] && dokku_log_fail "Please specify a GPG backup passphrase"
verify_service_name "$SERVICE" verify_service_name "$SERVICE"
service_backup_set_encryption "$SERVICE" "$ENCRYPTION_KEY" service_backup_set_encryption "$SERVICE" "$PASSPHRASE"
} }
service-backup-set-encryption-cmd "$@" service-backup-set-encryption-cmd "$@"

View File

@@ -38,6 +38,7 @@ service-destroy-cmd() {
fi fi
dokku_log_info2_quiet "Deleting $SERVICE" dokku_log_info2_quiet "Deleting $SERVICE"
service_backup_unschedule "$SERVICE"
if [[ -n $(docker ps -aq -f name="$SERVICE_NAME") ]]; then if [[ -n $(docker ps -aq -f name="$SERVICE_NAME") ]]; then
dokku_log_verbose_quiet "Deleting container data" dokku_log_verbose_quiet "Deleting container data"
service_stop "$SERVICE" service_stop "$SERVICE"

View File

@@ -21,8 +21,6 @@ service-upgrade-cmd() {
verify_service_name "$SERVICE" verify_service_name "$SERVICE"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local ID="$(cat "$SERVICE_ROOT/ID")"
is_container_status "$ID" "Running" || dokku_log_fail "Service ${SERVICE} container is not running"
service_parse_args "${@:2}" service_parse_args "${@:2}"
@@ -30,10 +28,17 @@ service-upgrade-cmd() {
dokku_log_fail "Unable to proceed with upgrade, image ${PLUGIN_IMAGE}:${PLUGIN_IMAGE_VERSION} does not exist" dokku_log_fail "Unable to proceed with upgrade, image ${PLUGIN_IMAGE}:${PLUGIN_IMAGE_VERSION} does not exist"
fi fi
dokku_log_info2 "Upgrading $SERVICE to $PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" local NEW_PLUGIN_IMAGE_TAG="$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION"
if [[ "$(service_version "$SERVICE")" == "$NEW_PLUGIN_IMAGE_TAG" ]]; then
dokku_log_info1 "Service $SERVICE already running $NEW_PLUGIN_IMAGE_TAG"
return
fi
dokku_log_info2 "Upgrading $SERVICE to $NEW_PLUGIN_IMAGE_TAG"
if [[ "$SERVICE_RESTART_APPS" == "true" ]]; then if [[ "$SERVICE_RESTART_APPS" == "true" ]]; then
dokku_log_info2 "Stopping all linked services" dokku_log_info2 "Stopping all linked services"
for app in $(service_linked_apps "$SERVICE"); do for app in $(service_linked_apps "$SERVICE"); do
[[ "$app" == "-" ]] && continue
ps_stop "$app" ps_stop "$app"
done done
fi fi
@@ -45,6 +50,7 @@ service-upgrade-cmd() {
if [[ "$SERVICE_RESTART_APPS" == "true" ]]; then if [[ "$SERVICE_RESTART_APPS" == "true" ]]; then
dokku_log_info2 "Starting all linked services" dokku_log_info2 "Starting all linked services"
for app in $(service_linked_apps "$SERVICE"); do for app in $(service_linked_apps "$SERVICE"); do
[[ "$app" == "-" ]] && continue
ps_start "$app" ps_start "$app"
done done
fi fi

View File

@@ -52,7 +52,7 @@ teardown() {
check_value="Deploy options: --restart=on-failure:10" check_value="Deploy options: --restart=on-failure:10"
fi fi
options=$(dokku $report_action my_app | xargs) options=$(dokku --quiet $report_action my_app | xargs)
assert_equal "$options" "$check_value" assert_equal "$options" "$check_value"
} }

1
tests/test_helper.bash Normal file → Executable file
View File

@@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
export DOKKU_QUIET_OUTPUT=1
export DOKKU_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/dokku" export DOKKU_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/dokku"
export DOKKU_VERSION=${DOKKU_VERSION:-"master"} export DOKKU_VERSION=${DOKKU_VERSION:-"master"}
export PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin:$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/dokku:$PATH" export PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin:$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/dokku:$PATH"