Compare commits

..

30 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
4ddf27d340 Release 1.41.1
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2025-02-02 00:29:21 -05:00
Jose Diaz-Gonzalez
6a75d5d509 Merge pull request #184 from dokku/dependabot/docker/mysql-9.2.0
chore(deps): bump mysql from 9.1.0 to 9.2.0
2025-02-01 23:29:07 -06:00
dependabot[bot]
31f737bb09 chore(deps): bump mysql from 9.1.0 to 9.2.0
Bumps mysql from 9.1.0 to 9.2.0.

---
updated-dependencies:
- dependency-name: mysql
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 03:22:53 +00:00
Jose Diaz-Gonzalez
d8c4d28fb0 Release 1.41.0
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-11-24 22:19:00 -05:00
Jose Diaz-Gonzalez
5c59f5adc1 Merge pull request #183 from dokku/use-gpg-public-key-encryption
feat: implement GPG Public Key encryption support
2024-11-24 21:05:15 -05:00
Jose Diaz-Gonzalez
c212d68183 feat: implement GPG Public Key encryption support 2024-11-24 20:21:59 -05:00
Jose Diaz-Gonzalez
3f5db87844 Merge pull request #181 from dokku/dependabot/docker/mysql-9.1.0
chore(deps): bump mysql from 9.0.1 to 9.1.0
2024-11-24 19:58:32 -05:00
Jose Diaz-Gonzalez
9e13103e04 Merge pull request #182 from dokku/enable-image-overrides
feat: enable env overrides for support images and update all to latest
2024-11-24 19:58:23 -05:00
Jose Diaz-Gonzalez
1896d0d3a4 feat: enable env overrides for support images and update all to latest 2024-11-24 19:15:23 -05:00
dependabot[bot]
b9349d3ae1 chore(deps): bump mysql from 9.0.1 to 9.1.0
Bumps mysql from 9.0.1 to 9.1.0.

---
updated-dependencies:
- dependency-name: mysql
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-16 03:22:43 +00:00
Jose Diaz-Gonzalez
e702e01092 Release 1.40.1
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-07-29 04:43:45 -04:00
Jose Diaz-Gonzalez
84ef0a54f6 Merge pull request #180 from dokku/dependabot/docker/mysql-9.0.1
chore(deps): bump mysql from 9.0.0 to 9.0.1
2024-07-29 04:43:27 -04:00
dependabot[bot]
5820f74282 chore(deps): bump mysql from 9.0.0 to 9.0.1
Bumps mysql from 9.0.0 to 9.0.1.

---
updated-dependencies:
- dependency-name: mysql
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-24 03:45:43 +00:00
Jose Diaz-Gonzalez
d04320b814 Release 1.40.0
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-07-07 23:02:50 -04:00
Jose Diaz-Gonzalez
840fc1fbc5 Merge pull request #179 from dokku/dependabot/docker/mysql-9.0.0
chore(deps): bump mysql from 8.4.0 to 9.0.0
2024-07-07 23:02:37 -04:00
dependabot[bot]
1c1b8e50b4 chore(deps): bump mysql from 8.4.0 to 9.0.0
Bumps mysql from 8.4.0 to 9.0.0.

---
updated-dependencies:
- dependency-name: mysql
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 03:28:53 +00:00
Jose Diaz-Gonzalez
5ef90f7c10 Release 1.39.0
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-06-30 13:47:18 -04:00
Jose Diaz-Gonzalez
a85e451f6d Merge pull request #175 from dokku/dependabot/docker/mysql-8.4.0
chore(deps): bump mysql from 8.3.0 to 8.4.0
2024-06-30 13:47:09 -04:00
dependabot[bot]
00eef2f230 chore(deps): bump mysql from 8.3.0 to 8.4.0
Bumps mysql from 8.3.0 to 8.4.0.

---
updated-dependencies:
- dependency-name: mysql
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-29 07:51:51 +00:00
Jose Diaz-Gonzalez
e997179643 Merge pull request #178 from dokku/exclude-SC1091
tests: exclude SC1091 from shellcheck rules
2024-06-29 03:48:44 -04:00
Jose Diaz-Gonzalez
ef6a5ed7d1 tests: exclude SC1091 from shellcheck rules 2024-06-29 03:44:56 -04:00
Jose Diaz-Gonzalez
05f594e9ba Merge pull request #177 from dokku/fix-tests
fix: use .DNSNames instead of .Aliases in tests
2024-06-29 03:41:00 -04:00
Jose Diaz-Gonzalez
4bc23d7556 fix: use .DNSNames instead of .Aliases in tests
Docker has changed their output in an unclear manner, but this is the correct way to check for what dns records are available for usage by apps.
2024-06-29 03:25:41 -04:00
Jose Diaz-Gonzalez
579964b63d Release 1.38.1
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-01-29 10:10:02 -05:00
Jose Diaz-Gonzalez
78ecc3b10d fix: use correct repository on arm64 ubuntu image 2024-01-29 10:09:17 -05:00
Jose Diaz-Gonzalez
1b0cd97539 Release 1.38.0
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-01-29 08:34:56 -05:00
Jose Diaz-Gonzalez
3305de6dbd Merge pull request #174 from dokku/dependabot/docker/mysql-8.3.0
chore(deps): bump mysql from 8.2.0 to 8.3.0
2024-01-29 08:34:42 -05:00
dependabot[bot]
1f4d7ceeb2 chore(deps): bump mysql from 8.2.0 to 8.3.0
Bumps mysql from 8.2.0 to 8.3.0.

---
updated-dependencies:
- dependency-name: mysql
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 03:43:24 +00:00
Jose Diaz-Gonzalez
9f0d37450b Merge pull request #173 from dokku/dependabot/github_actions/actions/upload-artifact-4
chore(deps): bump actions/upload-artifact from 3 to 4
2023-12-19 00:25:02 -05:00
dependabot[bot]
99a5d1c2e8 chore(deps): bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 03:58:44 +00:00
12 changed files with 121 additions and 14 deletions

View File

@@ -51,7 +51,7 @@ jobs:
- run: make test
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: tmp/test-results
@@ -93,7 +93,7 @@ jobs:
- run: make test
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: tmp/test-results

View File

@@ -1 +1 @@
FROM mysql:8.2.0
FROM mysql:9.2.0

View File

@@ -1,5 +1,6 @@
HARDWARE = $(shell uname -m)
SYSTEM_NAME = $(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCH = $(shell dpkg --print-architecture)
SHFMT_VERSION = 3.0.2
XUNIT_TO_GITHUB_VERSION = 0.3.0
XUNIT_READER_VERSION = 0.1.0
@@ -21,7 +22,11 @@ ifneq ($(shell shellcheck --version >/dev/null 2>&1 ; echo $$?),0)
ifeq ($(SYSTEM_NAME),darwin)
brew install shellcheck
else
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse'
ifeq ($(ARCH),arm64)
sudo add-apt-repository 'deb http://ports.ubuntu.com/ubuntu-ports jammy-backports main restricted universe multiverse'
else
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse'
endif
sudo rm -rf /var/lib/apt/lists/* && sudo apt-get clean
sudo apt-get update -qq && sudo apt-get install -qq -y shellcheck
endif

View File

@@ -1,6 +1,6 @@
# dokku mysql [![Build Status](https://img.shields.io/github/actions/workflow/status/dokku/dokku-mysql/ci.yml?branch=master&style=flat-square "Build Status")](https://github.com/dokku/dokku-mysql/actions/workflows/ci.yml?query=branch%3Amaster) [![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square "IRC Libera")](https://webchat.libera.chat/?channels=dokku)
Official mysql plugin for dokku. Currently defaults to installing [mysql 8.2.0](https://hub.docker.com/_/mysql/).
Official mysql plugin for dokku. Currently defaults to installing [mysql 9.2.0](https://hub.docker.com/_/mysql/).
## Requirements
@@ -24,8 +24,10 @@ mysql:backup-deauth <service> # remove backup authenticatio
mysql:backup-schedule <service> <schedule> <bucket-name> [--use-iam] # schedule a backup of the mysql service
mysql:backup-schedule-cat <service> # cat the contents of the configured backup cronfile for the service
mysql:backup-set-encryption <service> <passphrase> # set encryption for all future backups of mysql service
mysql:backup-set-public-key-encryption <service> <public-key-id> # set GPG Public Key encryption for all future backups of mysql service
mysql:backup-unschedule <service> # unschedule the backup of the mysql service
mysql:backup-unset-encryption <service> # unset encryption for future backups of the mysql service
mysql:backup-unset-public-key-encryption <service> # unset GPG Public Key encryption for future backups of the mysql service
mysql:clone <service> <new-service> [--clone-flags...] # create container <new-name> then copy data from <name> into <new-name>
mysql:connect <service> # connect to the service via the mysql connection tool
mysql:create <service> [--create-flags...] # create a mysql service
@@ -675,6 +677,19 @@ Set the GPG-compatible passphrase for encrypting backups for backups:
dokku mysql:backup-set-encryption lollipop
```
### set GPG Public Key encryption for all future backups of mysql service
```shell
# usage
dokku mysql:backup-set-public-key-encryption <service> <public-key-id>
```
Set the `GPG` Public Key for encrypting backups:
```shell
dokku mysql:backup-set-public-key-encryption lollipop
```
### unset encryption for future backups of the mysql service
```shell
@@ -688,6 +703,19 @@ Unset the `GPG` encryption passphrase for backups:
dokku mysql:backup-unset-encryption lollipop
```
### unset GPG Public Key encryption for future backups of the mysql service
```shell
# usage
dokku mysql:backup-unset-public-key-encryption <service>
```
Unset the `GPG` Public Key encryption for backups:
```shell
dokku mysql:backup-unset-public-key-encryption lollipop
```
### schedule a backup of the mysql service
```shell

View File

@@ -290,7 +290,9 @@ def usage_backup(
"backup-deauth",
"backup",
"backup-set-encryption",
"backup-set-public-key-encryption",
"backup-unset-encryption",
"backup-unset-public-key-encryption",
"backup-schedule",
"backup-schedule-cat",
"backup-unschedule",

View File

@@ -308,6 +308,10 @@ service_backup() {
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e ENCRYPTION_KEY=$(cat "$BACKUP_ENCRYPTION_CONFIG_ROOT/ENCRYPTION_KEY")"
fi
if [[ -f "$BACKUP_ENCRYPTION_CONFIG_ROOT/ENCRYPT_WITH_PUBLIC_KEY_ID" ]]; then
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e ENCRYPT_WITH_PUBLIC_KEY_ID=$(cat "$BACKUP_ENCRYPTION_CONFIG_ROOT/ENCRYPT_WITH_PUBLIC_KEY_ID")"
fi
# shellcheck disable=SC2086
"$DOCKER_BIN" container run --rm $BACKUP_PARAMETERS "$PLUGIN_S3BACKUP_IMAGE"
}
@@ -433,6 +437,16 @@ service_backup_set_encryption() {
echo "$ENCRYPTION_KEY" >"${SERVICE_BACKUP_ENCRYPTION_ROOT}/ENCRYPTION_KEY"
}
service_backup_set_public_key_encryption() {
declare desc="set up backup GPG Public Key encryption"
declare SERVICE="$1" ENCRYPT_WITH_PUBLIC_KEY_ID="$2"
local SERVICE_ROOT="${PLUGIN_DATA_ROOT}/${SERVICE}"
local SERVICE_BACKUP_ENCRYPTION_ROOT="${SERVICE_ROOT}/backup-encryption/"
mkdir "$SERVICE_BACKUP_ENCRYPTION_ROOT"
echo "$ENCRYPT_WITH_PUBLIC_KEY_ID" >"${SERVICE_BACKUP_ENCRYPTION_ROOT}/ENCRYPT_WITH_PUBLIC_KEY_ID"
}
service_backup_unschedule() {
declare desc="unschedule the backup of the service"
declare SERVICE="$1"
@@ -450,6 +464,15 @@ service_backup_unset_encryption() {
rm -rf "$SERVICE_BACKUP_ENCRYPTION_ROOT"
}
service_backup_unset_encryption() {
declare desc="remove backup encryption"
declare SERVICE="$1"
local SERVICE_ROOT="${PLUGIN_DATA_ROOT}/${SERVICE}"
local SERVICE_BACKUP_ENCRYPTION_ROOT="${SERVICE_ROOT}/backup-encryption/"
rm -rf "$SERVICE_BACKUP_ENCRYPTION_ROOT"
}
service_container_rm() {
declare desc="stop a service and remove the running container"
declare SERVICE="$1"

8
config
View File

@@ -28,9 +28,9 @@ if [[ -n $DOKKU_API_VERSION ]]; then
export PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
fi
export PLUGIN_BUSYBOX_IMAGE="busybox:1.34.1-uclibc"
export PLUGIN_AMBASSADOR_IMAGE="dokku/ambassador:0.5.0"
export PLUGIN_S3BACKUP_IMAGE="dokku/s3backup:0.14.0"
export PLUGIN_WAIT_IMAGE="dokku/wait:0.6.0"
export PLUGIN_BUSYBOX_IMAGE=${PLUGIN_BUSYBOX_IMAGE:=busybox:1.37.0-uclibc}
export PLUGIN_AMBASSADOR_IMAGE=${PLUGIN_AMBASSADOR_IMAGE:=dokku/ambassador:0.8.2}
export PLUGIN_S3BACKUP_IMAGE=${PLUGIN_S3BACKUP_IMAGE:=dokku/s3backup:0.18.0}
export PLUGIN_WAIT_IMAGE=${PLUGIN_WAIT_IMAGE:=dokku/wait:0.9.3}
export MYSQL_CONFIG_OPTIONS=${MYSQL_CONFIG_OPTIONS:=""}

View File

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

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-backup-set-public-key-encryption-cmd() {
#E set the GPG Public Key for encrypting backups
#E dokku $PLUGIN_COMMAND_PREFIX:backup-set-public-key-encryption lollipop
#A service, service to run command against
#A public-key-id, a GPG Public Key ID (or fingerprint) to use for encryption. Must be uploaded to the GPG keyserver beforehand.
declare desc="set GPG Public Key encryption for all future backups of $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-set-public-key-encryption" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" PUBLIC_KEY_ID="$2"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
[[ -z "$PUBLIC_KEY_ID" ]] && dokku_log_fail "Please specify a valid GPG Public Key ID (or fingerprint)"
verify_service_name "$SERVICE"
service_backup_set_public_key_encryption "$SERVICE" "$PUBLIC_KEY_ID"
}
service-backup-set-public-key-encryption-cmd "$@"

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-backup-unset-public-key-encryption-cmd() {
#E unset the GPG Public Key encryption for backups
#E dokku $PLUGIN_COMMAND_PREFIX:backup-unset-public-key-encryption lollipop
#A service, service to run command against
declare desc="unset GPG Public Key encryption for future backups of the $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-unset-public-key-encryption" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented" # TODO: [22.03.2024 by Mykola]
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
verify_service_name "$SERVICE"
service_backup_unset_public_key_encryption "$SERVICE" # TODO: [22.03.2024 by Mykola]
}
service-backup-unset-encryption-cmd "$@"

View File

@@ -48,7 +48,7 @@ teardown() {
assert_output_contains bridge 0
assert_output_contains custom-network
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success
@@ -120,7 +120,7 @@ teardown() {
assert_output_contains custom-network
assert_output_contains bridge
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success
@@ -192,7 +192,7 @@ teardown() {
assert_output_contains bridge
assert_output_contains custom-network
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success
@@ -258,7 +258,7 @@ teardown() {
assert_output_contains bridge
assert_output_contains custom-network
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.lsa -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.lsa -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success

View File

@@ -1,4 +1,5 @@
# SC1090 - Can't follow non-constant source. Use a directive to specify location - https://github.com/koalaman/shellcheck/wiki/SC1090
# SC1091 - Not following - <https://github.com/koalaman/shellcheck/wiki/SC1091>
# SC2034 - Variable appears unused. Verify it or export it - https://github.com/koalaman/shellcheck/wiki/SC2034
# SC2155 - Declare and assign separately to avoid masking return values - https://github.com/koalaman/shellcheck/wiki/SC2155
# SC2206 - Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a - https://github.com/koalaman/shellcheck/wiki/SC2206