From 4a43eeaaa8e5d7a7fa765e893fc4698aeafacc17 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 19 Aug 2023 12:26:21 -0400 Subject: [PATCH 01/14] docs: add a migration guide for 0.32.x --- docs/appendices/0.32.0-migration-guide.md | 5 +++++ docs/getting-started/upgrading/index.md | 1 + 2 files changed, 6 insertions(+) create mode 100644 docs/appendices/0.32.0-migration-guide.md diff --git a/docs/appendices/0.32.0-migration-guide.md b/docs/appendices/0.32.0-migration-guide.md new file mode 100644 index 000000000..0d0619779 --- /dev/null +++ b/docs/appendices/0.32.0-migration-guide.md @@ -0,0 +1,5 @@ +# 0.32.0 Migration Guide + +## Deprecations + +## Removals diff --git a/docs/getting-started/upgrading/index.md b/docs/getting-started/upgrading/index.md index 9332e8443..16b0011c5 100644 --- a/docs/getting-started/upgrading/index.md +++ b/docs/getting-started/upgrading/index.md @@ -18,6 +18,7 @@ Docker releases updates periodically to their engine. We recommend reading their Before upgrading, check the migration guides to get comfortable with new features and prepare your deployment to be upgraded. +- [Upgrading to 0.32](/docs/appendices/0.32.0-migration-guide.md) - [Upgrading to 0.31](/docs/appendices/0.31.0-migration-guide.md) - [Upgrading to 0.30](/docs/appendices/0.30.0-migration-guide.md) - [Upgrading to 0.29](/docs/appendices/0.29.0-migration-guide.md) From ffc64e7d8b9c3f9d455fdf6cfad5bef6020e1eb3 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 19 Aug 2023 12:07:06 -0400 Subject: [PATCH 02/14] feat: add a shell function to check if a plugin trigger exists --- plugins/common/functions | 13 +++++++++++++ plugins/common/src/common/common.go | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/plugins/common/functions b/plugins/common/functions index f9a07f502..b9dd37dc0 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -225,6 +225,19 @@ fn-is-valid-app-name-old() { return 1 } +fn-plugn-trigger-exists() { + declare desc="checks if a plugn trigger exists" + declare TRIGGER_NAME="$1" + local exists + + exists="$("$PLUGIN_CORE_AVAILABLE_PATH/common/common" --quiet plugn-trigger-exists "$TRIGGER_NAME" || true)" + if [[ "$exists" == "true" ]]; then + return + fi + + return 1 +} + is_valid_app_name() { declare desc="verify that the app name matches naming restrictions" local APP="$1" diff --git a/plugins/common/src/common/common.go b/plugins/common/src/common/common.go index 25095fde1..1cd87b13d 100644 --- a/plugins/common/src/common/common.go +++ b/plugins/common/src/common/common.go @@ -53,6 +53,13 @@ func main() { appName = "--global" } fmt.Print(common.GetAppScheduler(appName)) + case "plugn-trigger-exists": + triggerName := flag.Arg(1) + if common.PlugnTriggerExists(triggerName) { + fmt.Print("true") + } else { + fmt.Print("false") + } case "verify-app-name": appName := flag.Arg(1) err = common.VerifyAppName(appName) From cdd5698db9c8cc73ad01decb270ac646adb07f92 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 19 Aug 2023 12:20:08 -0400 Subject: [PATCH 03/14] chore: deprecate the builder-specific pre-release-* triggers in favor of a global pre-release-builder trigger The pre-release-builder trigger takes a `BUILDER_TYPE` parameter, allowing folks to perform specific actions as needed. --- docs/appendices/0.32.0-migration-guide.md | 6 ++++ docs/development/plugin-triggers.md | 39 +++++++++++++++++++--- plugins/builder-dockerfile/builder-release | 9 +++-- plugins/builder-herokuish/builder-release | 9 +++-- plugins/builder-lambda/builder-release | 11 +++--- plugins/builder-pack/builder-release | 8 +++-- 6 files changed, 65 insertions(+), 17 deletions(-) diff --git a/docs/appendices/0.32.0-migration-guide.md b/docs/appendices/0.32.0-migration-guide.md index 0d0619779..595279921 100644 --- a/docs/appendices/0.32.0-migration-guide.md +++ b/docs/appendices/0.32.0-migration-guide.md @@ -2,4 +2,10 @@ ## Deprecations +- The following `pre-release-*` plugin triggers have been deprecated and will be removed in the next release. Users should instead trigger the `pre-release-builder` plugin trigger. + - pre-release-buildpack + - pre-release-dockerfile + - pre-release-lambda + - pre-release-pack + ## Removals diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index 981a9afc1..0da3ed4fb 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -1931,8 +1931,28 @@ APP="$1"; IMAGE_SOURCE_TYPE="$2"; TMP_WORK_DIR="$3"; REV="$4" echo "$APP" > "$TMP_WORK_DIR/dokku-is-awesome" ``` +### `pre-release-builder` + +- Description: Allows you to run commands before environment variables are set for the release step of the deploy. +- Invoked by: `internal function dokku_release() (release phase)` +- Arguments: `$BUILDER_TYPE $APP $IMAGE` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +BUILDER_TYPE="$1"; APP="$2"; IMAGE_TAG="$3"; + +# TODO +``` + ### `pre-release-buildpack` +> [!WARNING] +> Deprecated, please use `pre-release-builder` instead + - Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using buildpacks. - Invoked by: `internal function dokku_release() (release phase)` - Arguments: `$APP $IMAGE_TAG` @@ -1960,6 +1980,9 @@ docker commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" $CID $IMAGE >/dev/null ### `pre-release-lambda` +> [!WARNING] +> Deprecated, please use `pre-release-builder` instead + - Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using lambda. - Invoked by: `internal function dokku_release() (release phase)` - Arguments: `$APP $IMAGE_TAG` @@ -1978,8 +2001,7 @@ APP="$1"; IMAGE_TAG="$2"; ### `pre-release-pack` > [!WARNING] -> The pack plugin trigger apis are under development and may change -> between minor releases until the 1.0 release. +> Deprecated, please use `pre-release-builder` instead - Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using pack. - Invoked by: `internal function dokku_release() (release phase)` @@ -1998,6 +2020,9 @@ APP="$1"; IMAGE_TAG="$2"; ### `pre-release-dockerfile` +> [!WARNING] +> Deprecated, please use `pre-release-builder` instead + - Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using a dockerfile. - Invoked by: `internal function dokku_release() (release phase)` - Arguments: `$APP $IMAGE_TAG` @@ -2439,7 +2464,8 @@ DOKKU_SCHEDULER="$1"; APP="$2"; ### `scheduler-is-deployed` -> Warning: The scheduler plugin trigger apis are under development and may change +> [!WARNING] +> The scheduler plugin trigger apis are under development and may change > between minor releases until the 1.0 release. - Description: Allows you to check if the scheduler has deployed the app @@ -2538,7 +2564,9 @@ DOKKU_SCHEDULER="$1"; APP="$2"; IMAGE_TAG="$3"; ### `scheduler-post-deploy-process` -> Warning: The scheduler plugin trigger apis are under development and may change + +> [!WARNING] +> The scheduler plugin trigger apis are under development and may change > between minor releases until the 1.0 release. - Description: Allows you to run a command after a process has been started @@ -2678,7 +2706,8 @@ DOKKU_SCHEDULER="$1"; APP="$2"; CONTAINER="$3"; TAIL="$4"; PRETTY_PRINT="$5"; NU ### `scheduler-run-stop` -> Warning: The scheduler plugin trigger apis are under development and may change +> [!WARNING] +> The scheduler plugin trigger apis are under development and may change > between minor releases until the 1.0 release. - Description: Allows a scheduler to stop all "run" containers or a specified container diff --git a/plugins/builder-dockerfile/builder-release b/plugins/builder-dockerfile/builder-release index 52074c410..bcfa0dc9b 100755 --- a/plugins/builder-dockerfile/builder-release +++ b/plugins/builder-dockerfile/builder-release @@ -13,13 +13,16 @@ trigger-builder-dockerfile-builder-release() { fi local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") - local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku") - - plugn trigger pre-release-dockerfile "$APP" "$IMAGE_TAG" + if fn-plugn-trigger-exists "pre-release-dockerfile"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-release-builder' plugin trigger instead of pre-release-dockerfile" + plugn trigger pre-release-dockerfile "$APP" "$IMAGE_TAG" + fi + plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")" trap "rm -rf '$TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT + local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku") if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-dockerfile/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then dokku_log_warn "Failure injecting docker labels on image" return 1 diff --git a/plugins/builder-herokuish/builder-release b/plugins/builder-herokuish/builder-release index 3e3b5ed64..6c669dbea 100755 --- a/plugins/builder-herokuish/builder-release +++ b/plugins/builder-herokuish/builder-release @@ -14,9 +14,11 @@ trigger-builder-herokuish-builder-release() { fi local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") - local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku") - - plugn trigger pre-release-buildpack "$APP" "$IMAGE_TAG" + if fn-plugn-trigger-exists "pre-release-buildpack"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-release-builder' plugin trigger instead of pre-release-buildpack" + plugn trigger pre-release-buildpack "$APP" "$IMAGE_TAG" + fi + plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")" trap "rm -rf '$TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT @@ -24,6 +26,7 @@ trigger-builder-herokuish-builder-release() { config_export global >"$TMP_WORK_DIR/00-global-env.sh" config_export app "$APP" >"$TMP_WORK_DIR/01-app-env.sh" + local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku") if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-herokuish/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then dokku_log_warn "Failure injecting environment variables" return 1 diff --git a/plugins/builder-lambda/builder-release b/plugins/builder-lambda/builder-release index 90153c6f0..adedd36de 100755 --- a/plugins/builder-lambda/builder-release +++ b/plugins/builder-lambda/builder-release @@ -12,14 +12,17 @@ trigger-builder-lambda-builder-release() { return fi - local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP --label=com.dokku.image-stage=release --label=dokku" - - plugn trigger pre-release-lambda "$APP" "$IMAGE_TAG" + local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") + if fn-plugn-trigger-exists "pre-release-lambda"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-release-builder' plugin trigger instead of pre-release-lambda" + plugn trigger pre-release-lambda "$APP" "$IMAGE_TAG" + fi + plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")" trap "rm -rf '$TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT - local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") + local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP --label=com.dokku.image-stage=release --label=dokku" if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-lambda/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then dokku_log_warn "Failure injecting docker labels on image" return 1 diff --git a/plugins/builder-pack/builder-release b/plugins/builder-pack/builder-release index 21f836e8a..485749a0d 100755 --- a/plugins/builder-pack/builder-release +++ b/plugins/builder-pack/builder-release @@ -12,9 +12,13 @@ trigger-builder-pack-builder-release() { return fi - plugn trigger pre-release-pack "$APP" "$IMAGE_TAG" - local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") + if fn-plugn-trigger-exists "pre-release-pack"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-release-builder' plugin trigger instead of pre-release-pack" + plugn trigger pre-release-pack "$APP" "$IMAGE_TAG" + fi + plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" + docker-image-labeler relabel --label=com.dokku.image-stage=release --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku "$IMAGE" plugn trigger post-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" } From b19b409dd6679b97ef7fa9f51a9aededfc9cb7a6 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 19 Aug 2023 12:13:40 -0400 Subject: [PATCH 04/14] chore: deprecate the builder-specific post-build-* triggers in favor of a global post-build trigger The pre-build trigger takes a `BUILDER_TYPE` parameter, allowing folks to perform specific actions as needed. --- docs/appendices/0.32.0-migration-guide.md | 5 ++ docs/development/plugin-triggers.md | 59 ++++++++++++++++------- plugins/builder-dockerfile/builder-build | 6 ++- plugins/builder-herokuish/builder-build | 6 ++- plugins/builder-lambda/builder-build | 6 ++- plugins/builder-pack/builder-build | 7 ++- 6 files changed, 67 insertions(+), 22 deletions(-) diff --git a/docs/appendices/0.32.0-migration-guide.md b/docs/appendices/0.32.0-migration-guide.md index 595279921..572c16ee1 100644 --- a/docs/appendices/0.32.0-migration-guide.md +++ b/docs/appendices/0.32.0-migration-guide.md @@ -7,5 +7,10 @@ - pre-release-dockerfile - pre-release-lambda - pre-release-pack +- The following `post-build-*` plugin triggers have been deprecated and will be removed in the next release. Users should instead trigger the `post-build` plugin trigger. + - post-build-buildpack + - post-build-dockerfile + - post-build-lambda + - post-build-pack ## Removals diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index 0da3ed4fb..54c67d936 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -1473,8 +1473,26 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x ``` +### `post-build` + +- Description: Allows you to run commands after the build image is create for a given app. +- Invoked by: `internal function dokku_build() (build phase)` +- Arguments: `$BUILDER_TYPE $APP $SOURCECODE_WORK_DIR` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x + +# TODO +``` + ### `post-build-buildpack` +> [!WARNING] +> Deprecated, please use `post-build` instead + - Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using buildpacks. - Invoked by: `internal function dokku_build() (build phase)` - Arguments: `$APP` `$SOURCECODE_WORK_DIR` @@ -1488,26 +1506,10 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x # TODO ``` -### `post-build-pack` +### `post-build-dockerfile` > [!WARNING] -> The pack plugin trigger apis are under development and may change -> between minor releases until the 1.0 release. - -- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using pack. -- Invoked by: `internal function dokku_build() (build phase)` -- Arguments: `$APP` `$SOURCECODE_WORK_DIR` -- Example: - -```shell -#!/usr/bin/env bash - -set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x - -# TODO -``` - -### `post-build-dockerfile` +> Deprecated, please use `post-build` instead - Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using a dockerfile. - Invoked by: `internal function dokku_build() (build phase)` @@ -1524,6 +1526,9 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x ### `post-build-lambda` +> [!WARNING] +> Deprecated, please use `post-build` instead + - Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using lambda. - Invoked by: `internal function dokku_build() (build phase)` - Arguments: `$APP` `$SOURCECODE_WORK_DIR` @@ -1537,6 +1542,24 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x # TODO ``` +### `post-build-pack` + +> [!WARNING] +> Deprecated, please use `post-build` instead + +- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using pack. +- Invoked by: `internal function dokku_build() (build phase)` +- Arguments: `$APP` `$SOURCECODE_WORK_DIR` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x + +# TODO +``` + ### `post-certs-remove` - Description: Allows you to run commands after a cert is removed diff --git a/plugins/builder-dockerfile/builder-build b/plugins/builder-dockerfile/builder-build index c5b17b9d9..1252640ff 100755 --- a/plugins/builder-dockerfile/builder-build +++ b/plugins/builder-dockerfile/builder-build @@ -38,7 +38,11 @@ trigger-builder-dockerfile-builder-build() { "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS "${ARG_ARRAY[@]}" ${DOKKU_DOCKER_BUILD_OPTS} -t $IMAGE . plugn trigger ports-set-detected "$APP" "$(fn-builder-dockerfile-get-detect-port-map "$APP" "$IMAGE" "$SOURCECODE_WORK_DIR/Dockerfile")" - plugn trigger post-build-dockerfile "$APP" + if fn-plugn-trigger-exists "post-build-dockerfile"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'post-build' plugin trigger instead of post-build-dockerfile" + plugn trigger post-build-dockerfile "$APP" + fi + plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" } trigger-builder-dockerfile-builder-build "$@" diff --git a/plugins/builder-herokuish/builder-build b/plugins/builder-herokuish/builder-build index 2f8ad2516..960f8d3f8 100755 --- a/plugins/builder-herokuish/builder-build +++ b/plugins/builder-herokuish/builder-build @@ -95,7 +95,11 @@ trigger-builder-herokuish-builder-build() { # ensure we have a port mapping plugn trigger ports-configure "$APP" plugn trigger ports-set-detected "$APP" "http:$(plugn trigger ports-get-property "$APP" proxy-port):5000" - plugn trigger post-build-buildpack "$APP" "$SOURCECODE_WORK_DIR" + if fn-plugn-trigger-exists "post-build-buildpack"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'post-build' plugin trigger instead of post-build-buildpack" + plugn trigger post-build-buildpack "$APP" "$SOURCECODE_WORK_DIR" + fi + plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" } trigger-builder-herokuish-builder-build "$@" diff --git a/plugins/builder-lambda/builder-build b/plugins/builder-lambda/builder-build index 0c6d708d8..920524d8b 100755 --- a/plugins/builder-lambda/builder-build +++ b/plugins/builder-lambda/builder-build @@ -39,7 +39,11 @@ trigger-builder-lambda-builder-build() { # ensure we have a port mapping plugn trigger ports-configure "$APP" plugn trigger ports-set-detected "$APP" "http:$(plugn trigger ports-get-property "$APP" proxy-port):5000" - plugn trigger post-build-lambda "$APP" + if fn-plugn-trigger-exists "post-build-lambda"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'post-build' plugin trigger instead of post-build-lambda" + plugn trigger post-build-lambda "$APP" + fi + plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" } trigger-builder-lambda-builder-build "$@" diff --git a/plugins/builder-pack/builder-build b/plugins/builder-pack/builder-build index e1ce4d0f4..4a2b7791c 100755 --- a/plugins/builder-pack/builder-build +++ b/plugins/builder-pack/builder-build @@ -38,7 +38,12 @@ trigger-builder-pack-builder-build() { # ensure we have a port mapping plugn trigger ports-configure "$APP" plugn trigger ports-set-detected "$APP" "http:$(plugn trigger ports-get-property "$APP" proxy-port):5000" - plugn trigger post-build-pack "$APP" "$SOURCECODE_WORK_DIR" + + if fn-plugn-trigger-exists "post-build-pack"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'post-build' plugin trigger instead of post-build-pack" + plugn trigger post-build-pack "$APP" "$SOURCECODE_WORK_DIR" + fi + plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" } trigger-builder-pack-builder-build "$@" From a433508fb1c9ebbabcb1134ff21b8d9f74d40e03 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 19 Aug 2023 12:08:44 -0400 Subject: [PATCH 05/14] chore: deprecate the builder-specific pre-build-* triggers in favor of a global pre-build trigger The pre-build trigger takes a `BUILDER_TYPE` parameter, allowing folks to perform specific actions as needed. --- docs/appendices/0.32.0-migration-guide.md | 5 ++ docs/development/plugin-triggers.md | 57 ++++++++++++++++------- plugins/builder-dockerfile/builder-build | 6 ++- plugins/builder-herokuish/builder-build | 6 ++- plugins/builder-lambda/builder-build | 6 ++- plugins/builder-pack/builder-build | 7 ++- 6 files changed, 66 insertions(+), 21 deletions(-) diff --git a/docs/appendices/0.32.0-migration-guide.md b/docs/appendices/0.32.0-migration-guide.md index 572c16ee1..a227fc56d 100644 --- a/docs/appendices/0.32.0-migration-guide.md +++ b/docs/appendices/0.32.0-migration-guide.md @@ -2,6 +2,11 @@ ## Deprecations +- The following `pre-build-*` plugin triggers have been deprecated and will be removed in the next release. Users should instead trigger the `pre-build` plugin trigger. + - pre-build-buildpack + - pre-build-dockerfile + - pre-build-lambda + - pre-build-pack - The following `pre-release-*` plugin triggers have been deprecated and will be removed in the next release. Users should instead trigger the `pre-release-builder` plugin trigger. - pre-release-buildpack - pre-release-dockerfile diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index 54c67d936..b1646649f 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -1794,8 +1794,26 @@ APP="$1"; dokku config:set --no-restart $APP MANUALLY_STOPPED=1 ``` +### `pre-build` + +- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. +- Invoked by: `internal function dokku_build() (build phase)` +- Arguments: `$BUILDER_TYPE $APP $SOURCECODE_WORK_DIR` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x + +# TODO +``` + ### `pre-build-buildpack` +> [!WARNING] +> Deprecated, please use `pre-build` instead + - Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using buildpacks. - Invoked by: `internal function dokku_build() (build phase)` - Arguments: `$APP` `$SOURCECODE_WORK_DIR` @@ -1809,8 +1827,29 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x # TODO ``` +### `pre-build-dockerfile` + +> [!WARNING] +> Deprecated, please use `pre-build` instead + +- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using a dockerfile. +- Invoked by: `internal function dokku_build() (build phase)` +- Arguments: `$APP` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x + +# TODO +``` + ### `pre-build-lambda` +> [!WARNING] +> Deprecated, please use `pre-build` instead + - Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using lambda. - Invoked by: `internal function dokku_build() (build phase)` - Arguments: `$APP` `$SOURCECODE_WORK_DIR` @@ -1827,8 +1866,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x ### `pre-build-pack` > [!WARNING] -> The pack plugin trigger apis are under development and may change -> between minor releases until the 1.0 release. +> Deprecated, please use `pre-build` instead - Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using pack. - Invoked by: `internal function dokku_build() (build phase)` @@ -1843,21 +1881,6 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x # TODO ``` -### `pre-build-dockerfile` - -- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using a dockerfile. -- Invoked by: `internal function dokku_build() (build phase)` -- Arguments: `$APP` -- Example: - -```shell -#!/usr/bin/env bash - -set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x - -# TODO -``` - ### `pre-delete` - Description: Can be used to run commands before an app is deleted. diff --git a/plugins/builder-dockerfile/builder-build b/plugins/builder-dockerfile/builder-build index 1252640ff..6b72cb12f 100755 --- a/plugins/builder-dockerfile/builder-build +++ b/plugins/builder-dockerfile/builder-build @@ -23,7 +23,11 @@ trigger-builder-dockerfile-builder-build() { pushd "$SOURCECODE_WORK_DIR" &>/dev/null - plugn trigger pre-build-dockerfile "$APP" + if fn-plugn-trigger-exists "pre-build-dockerfile"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-build' plugin trigger instead of pre-build-dockerfile" + plugn trigger pre-build-dockerfile "$APP" + fi + plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" [[ "$DOKKU_DOCKERFILE_CACHE_BUILD" == "false" ]] && DOKKU_DOCKER_BUILD_OPTS="$DOKKU_DOCKER_BUILD_OPTS --no-cache" local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE") diff --git a/plugins/builder-herokuish/builder-build b/plugins/builder-herokuish/builder-build index 960f8d3f8..1c7a7e77f 100755 --- a/plugins/builder-herokuish/builder-build +++ b/plugins/builder-herokuish/builder-build @@ -57,7 +57,11 @@ trigger-builder-herokuish-builder-build() { "$DOCKER_BIN" container commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" "$TAR_CID" "$IMAGE" >/dev/null DOKKU_SKIP_IMAGE_CLEANUP_REGISTRATION=1 plugn trigger scheduler-register-retired "$APP" "$TAR_CID" - plugn trigger pre-build-buildpack "$APP" "$SOURCECODE_WORK_DIR" + if fn-plugn-trigger-exists "pre-build-buildpack"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-build' plugin trigger instead of pre-build-buildpack" + plugn trigger pre-build-buildpack "$APP" "$SOURCECODE_WORK_DIR" + fi + plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE") [[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" --env=TRACE=true " diff --git a/plugins/builder-lambda/builder-build b/plugins/builder-lambda/builder-build index 920524d8b..c843135a1 100755 --- a/plugins/builder-lambda/builder-build +++ b/plugins/builder-lambda/builder-build @@ -18,7 +18,11 @@ trigger-builder-lambda-builder-build() { pushd "$SOURCECODE_WORK_DIR" &>/dev/null - plugn trigger pre-build-lambda "$APP" + if fn-plugn-trigger-exists "pre-build-lambda"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-build' plugin trigger instead of pre-build-lambda" + plugn trigger pre-build-lambda "$APP" + fi + plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" lambda-builder build --generate-image --write-procfile --image-env=DOCKER_LAMBDA_STAY_OPEN=1 --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.image-stage=build --label=com.dokku.builder-type=lambda "--label=com.dokku.app-name=$APP" $DOKKU_GLOBAL_BUILD_ARGS --port 5000 --tag "$IMAGE" --working-directory "$SOURCECODE_WORK_DIR" if [[ ! -f "$SOURCECODE_WORK_DIR/lambda.zip" ]]; then diff --git a/plugins/builder-pack/builder-build b/plugins/builder-pack/builder-build index 4a2b7791c..fee85cc65 100755 --- a/plugins/builder-pack/builder-build +++ b/plugins/builder-pack/builder-build @@ -31,7 +31,12 @@ trigger-builder-pack-builder-build() { ENV_ARGS=($(config_export app "$APP" --format pack-keys --merged)) eval "$(config_export app "$APP" --merged)" - plugn trigger pre-build-pack "$APP" "$SOURCECODE_WORK_DIR" + if fn-plugn-trigger-exists "pre-build-pack"; then + dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-build' plugin trigger instead of pre-build-pack" + plugn trigger pre-build-pack "$APP" "$SOURCECODE_WORK_DIR" + fi + plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" + pack build "$IMAGE" --builder "$DOKKU_CNB_BUILDER" --path "$SOURCECODE_WORK_DIR" --default-process web "${ENV_ARGS[@]}" docker-image-labeler relabel --label=dokku --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.image-stage=build --label=com.dokku.builder-type=pack --label=com.dokku.app-name=$APP "$IMAGE" From c23e878e7dfc08146eb75ac85b630bb3d7e67f93 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 19 Aug 2023 23:59:00 -0400 Subject: [PATCH 06/14] feat: add the ability to specify a custom mailto for all cron output --- docs/development/plugin-triggers.md | 24 +++++++-- docs/processes/scheduled-cron-tasks.md | 17 +++++++ plugins/20_events/cron-get-property | 1 + plugins/cron/Makefile | 3 +- plugins/cron/cron.go | 12 +++++ plugins/cron/report.go | 5 ++ plugins/cron/set.go | 11 +++++ plugins/cron/src/triggers/triggers.go | 48 ++++++++++++++++++ plugins/cron/subcommands.go | 10 ++++ plugins/cron/templates/cron.tmpl | 3 ++ plugins/cron/triggers.go | 55 +++++++++++++++++++++ plugins/scheduler-docker-local/functions.go | 3 ++ 12 files changed, 187 insertions(+), 5 deletions(-) create mode 120000 plugins/20_events/cron-get-property create mode 100644 plugins/cron/set.go create mode 100644 plugins/cron/src/triggers/triggers.go create mode 100644 plugins/cron/triggers.go diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index b1646649f..a565068c9 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -549,18 +549,18 @@ echo "clock: some-command" >> Procfile popd &>/dev/null ``` -### `cron-write` +### `cron-get-property` -- Description: Force triggers writing out cron entries +- Description: Return the value for an app's cron property - Invoked by: -- Arguments: +- Arguments: `$APP $KEY` - Example: ```shell #!/usr/bin/env bash set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x -source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +APP="$1"; PROPERTY="$2" # TODO ``` @@ -583,6 +583,22 @@ DOKKU_SCHEDULER="$1" # TODO ``` +### `cron-write` + +- Description: Force triggers writing out cron entries +- Invoked by: +- Arguments: +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" + +# TODO +``` + ### `dependencies` - Description: Used to install system-level dependencies. diff --git a/docs/processes/scheduled-cron-tasks.md b/docs/processes/scheduled-cron-tasks.md index 1a4212407..c82f59c3b 100644 --- a/docs/processes/scheduled-cron-tasks.md +++ b/docs/processes/scheduled-cron-tasks.md @@ -46,10 +46,27 @@ When running scheduled cron tasks, there are a few items to be aware of: - Scheduled cron tasks are performed within the app environment available at runtime. If the app image does not exist, the command may fail to execute. - Schedules are performed on the hosting server's timezone, which is typically UTC. - At this time, only the `PATH` and `SHELL` environment variables are specified in the cron template. + - A `MAILTO` value can be set via the `cron:set` command. - Each scheduled task is executed within a one-off `run` container, and thus inherit any docker-options specified for `run` containers. Resources are never shared between scheduled tasks. - Scheduled cron tasks are supported on a per-scheduler basis, and are currently only implemented by the `docker-local` scheduler. - Tasks for _all_ apps managed by the `docker-local` scheduler are written to a single crontab file owned by the `dokku` user. The `dokku` user's crontab should be considered reserved for this purpose. +#### Specifying a MAILTO value + +By default, cron tasks complete and do not perform any reporting. Users can specify a value for `MAILTO` via the global `mailto` cron property by using the `cron:set` command. + +```shell +dokku cron:set --global mailto example@example.com +``` + +All output for individual cron runs will be sent to the specified email. + +Cron emails can be disabled by running the `cron:set` command for the global `mailto` property with no value. + +```shell +dokku cron:set --global mailto +``` + #### Listing Cron tasks Cron tasks for an app can be listed via the `cron:list` command. This command takes an `app` argument. diff --git a/plugins/20_events/cron-get-property b/plugins/20_events/cron-get-property new file mode 120000 index 000000000..5178a749f --- /dev/null +++ b/plugins/20_events/cron-get-property @@ -0,0 +1 @@ +hook \ No newline at end of file diff --git a/plugins/cron/Makefile b/plugins/cron/Makefile index 85c72cfea..914884ed1 100644 --- a/plugins/cron/Makefile +++ b/plugins/cron/Makefile @@ -1,5 +1,6 @@ SUBCOMMANDS = subcommands/list subcommands/report subcommands/run -BUILD = commands subcommands +TRIGGERS = triggers/cron-get-property +BUILD = commands subcommands triggers PLUGIN_NAME = cron include ../../common.mk diff --git a/plugins/cron/cron.go b/plugins/cron/cron.go index 7c71f0735..35eb42078 100644 --- a/plugins/cron/cron.go +++ b/plugins/cron/cron.go @@ -13,6 +13,18 @@ import ( cronparser "github.com/robfig/cron/v3" ) +var ( + // DefaultProperties is a map of all valid network properties with corresponding default property values + DefaultProperties = map[string]string{ + "mailto": "", + } + + // GlobalProperties is a map of all valid global network properties + GlobalProperties = map[string]bool{ + "mailto": true, + } +) + type TemplateCommand struct { ID string `json:"id"` App string `json:"app"` diff --git a/plugins/cron/report.go b/plugins/cron/report.go index da87de902..98af84c12 100644 --- a/plugins/cron/report.go +++ b/plugins/cron/report.go @@ -13,6 +13,7 @@ func ReportSingleApp(appName string, format string, infoFlag string) error { } flags := map[string]common.ReportFunc{ + "--cron-mailto": reportMailto, "--cron-task-count": reportTasks, } @@ -27,6 +28,10 @@ func ReportSingleApp(appName string, format string, infoFlag string) error { return common.ReportSingleApp("cron", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter) } +func reportMailto(_ string) string { + return common.PropertyGet("cron", "--global", "mailto") +} + func reportTasks(appName string) string { c, _ := FetchCronEntries(appName) return strconv.Itoa(len(c)) diff --git a/plugins/cron/set.go b/plugins/cron/set.go new file mode 100644 index 000000000..47da8f167 --- /dev/null +++ b/plugins/cron/set.go @@ -0,0 +1,11 @@ +package cron + +import "errors" + +func validateSetValue(appName string, key string, value string) error { + if key == "mailto" && appName != "--global" { + return errors.New("Property cannot be specified on a per-app basis") + } + + return nil +} diff --git a/plugins/cron/src/triggers/triggers.go b/plugins/cron/src/triggers/triggers.go new file mode 100644 index 000000000..063d35425 --- /dev/null +++ b/plugins/cron/src/triggers/triggers.go @@ -0,0 +1,48 @@ +package main + +import ( + "flag" + "fmt" + "os" + "strings" + + "github.com/dokku/dokku/plugins/common" + "github.com/dokku/dokku/plugins/cron" +) + +// main entrypoint to all triggers +func main() { + parts := strings.Split(os.Args[0], "/") + trigger := parts[len(parts)-1] + flag.Parse() + + var err error + switch trigger { + case "cron-get-property": + appName := flag.Arg(0) + property := flag.Arg(1) + err = cron.TriggerCronGetProperty(appName, property) + case "install": + err = cron.TriggerInstall() + case "post-app-clone-setup": + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + err = cron.TriggerPostAppCloneSetup(oldAppName, newAppName) + case "post-app-rename-setup": + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + err = cron.TriggerPostAppRenameSetup(oldAppName, newAppName) + case "post-delete": + appName := flag.Arg(0) + err = cron.TriggerPostDelete(appName) + case "report": + appName := flag.Arg(0) + err = cron.ReportSingleApp(appName, "", "") + default: + err = fmt.Errorf("Invalid plugin trigger call: %s", trigger) + } + + if err != nil { + common.LogFailWithError(err) + } +} diff --git a/plugins/cron/subcommands.go b/plugins/cron/subcommands.go index 33949f3ab..f36545710 100644 --- a/plugins/cron/subcommands.go +++ b/plugins/cron/subcommands.go @@ -112,3 +112,13 @@ func CommandRun(appName string, cronID string, detached bool) error { args := append([]string{scheduler, appName, "0"}, fields...) return common.PlugnTrigger("scheduler-run", args...) } + +// CommandSet set or clear a cron property for an app +func CommandSet(appName string, property string, value string) error { + if err := validateSetValue(appName, property, value); err != nil { + return err + } + + common.CommandPropertySet("cron", appName, property, value, DefaultProperties, GlobalProperties) + return common.PlugnTrigger("cron-write") +} diff --git a/plugins/cron/templates/cron.tmpl b/plugins/cron/templates/cron.tmpl index 12e964d72..d171faf14 100644 --- a/plugins/cron/templates/cron.tmpl +++ b/plugins/cron/templates/cron.tmpl @@ -1,3 +1,6 @@ +{{ if .Mailto -}} +MAILTO={{ .Mailto }} +{{ end -}} PATH=/usr/local/bin:/usr/bin:/bin SHELL=/bin/bash diff --git a/plugins/cron/triggers.go b/plugins/cron/triggers.go new file mode 100644 index 000000000..682e7b3e2 --- /dev/null +++ b/plugins/cron/triggers.go @@ -0,0 +1,55 @@ +package cron + +import ( + "errors" + "fmt" + + "github.com/dokku/dokku/plugins/common" +) + +// TriggerCronGetProperty writes the cron key to stdout for a given app container +func TriggerCronGetProperty(appName string, key string) error { + if key != "mailto" { + return errors.New("Invalid cron property specified") + } + + fmt.Println(common.PropertyGet("cron", appName, key)) + return nil +} + +// TriggerInstall runs the install step for the cron plugin +func TriggerInstall() error { + if err := common.PropertySetup("cron"); err != nil { + return fmt.Errorf("Unable to install the cron plugin: %s", err.Error()) + } + + return nil +} + +// TriggerPostAppCloneSetup creates new cron files +func TriggerPostAppCloneSetup(oldAppName string, newAppName string) error { + err := common.PropertyClone("cron", oldAppName, newAppName) + if err != nil { + return err + } + + return nil +} + +// TriggerPostAppRenameSetup renames cron files +func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error { + if err := common.PropertyClone("cron", oldAppName, newAppName); err != nil { + return err + } + + if err := common.PropertyDestroy("cron", oldAppName); err != nil { + return err + } + + return nil +} + +// TriggerPostDelete destroys the cron property for a given app container +func TriggerPostDelete(appName string) error { + return common.PropertyDestroy("cron", appName) +} diff --git a/plugins/scheduler-docker-local/functions.go b/plugins/scheduler-docker-local/functions.go index 89d1f49e4..2198f6061 100644 --- a/plugins/scheduler-docker-local/functions.go +++ b/plugins/scheduler-docker-local/functions.go @@ -116,8 +116,11 @@ func writeCronEntries() error { return deleteCrontab() } + mailto, _ := common.PlugnTriggerOutputAsString("cron-get-property", []string{"--global", "mailto"}...) + data := map[string]interface{}{ "Commands": commands, + "Mailto": mailto, } t, err := getCronTemplate() From 76a979e139c0a8c1591b00f11b1add23c8d65ea7 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 27 Aug 2023 12:00:34 -0400 Subject: [PATCH 07/14] chore: remove ARM support Building/testing for ARM does not happen often - the only runtime environment is Raspberry PI, which supports ARM64 - and complicates support for a ton of features. Aside from that, CI runs are much longer for ARM Dokku images, often reaching 15-20 minutes or just timing out completely. Rather than support an architecture that doesn't have much usage by maintainers and has a lot of maintenance burden, we're removing the platform. --- .github/actions/build-image/action.yml | 10 +-------- .github/workflows/ci.yml | 17 -------------- contrib/build-dokku.Dockerfile | 22 +------------------ contrib/release-dokku | 7 ++---- docs/appendices/0.32.0-migration-guide.md | 2 ++ .../builders/herokuish-buildpacks.md | 2 +- docs/getting-started/installation/index.md | 1 - plugins/00_dokku-standard/subcommands/report | 2 +- plugins/builder-herokuish/builder-detect | 6 ++--- plugins/builder-lambda/builder-detect | 4 ---- plugins/git/functions | 4 ---- tests/unit/builder-herokuish.bats | 2 +- 12 files changed, 11 insertions(+), 68 deletions(-) diff --git a/.github/actions/build-image/action.yml b/.github/actions/build-image/action.yml index a77093eb8..8612dd02c 100644 --- a/.github/actions/build-image/action.yml +++ b/.github/actions/build-image/action.yml @@ -25,15 +25,7 @@ runs: - name: build docker image shell: bash run: | - if [[ "${{ inputs.architecture }}" == "linux/arm" ]]; then - docker buildx build \ - --platform linux/arm \ + docker buildx build \ --progress plain \ --tag "dokku/dokku:latest" \ . - else - docker buildx build \ - --progress plain \ - --tag "dokku/dokku:latest" \ - . - fi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b0f6d8cb..dbba5c947 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,23 +94,6 @@ jobs: with: architecture: linux/amd64 - build-image-arm: - name: build-image.linux/arm - needs: build - runs-on: buildjet-4vcpu-ubuntu-2204-arm - timeout-minutes: 20 - - steps: - - uses: actions/checkout@v4 - - - name: set up qemu - uses: docker/setup-qemu-action@v3 - - - name: build-image - uses: ./.github/actions/build-image - with: - architecture: linux/arm - build-image-arm64: name: build-image.linux/arm64 needs: build diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile index d1c2a1267..0f7c44873 100644 --- a/contrib/build-dokku.Dockerfile +++ b/contrib/build-dokku.Dockerfile @@ -37,29 +37,9 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ make version copyfiles \ && make deb-dokku -FROM builder as armhf - -COPY --from=amd64 /tmp /tmp -COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated - -RUN rm -rf /tmp/build-dokku - -ARG PLUGIN_MAKE_TARGET -ARG DOKKU_VERSION=master -ARG DOKKU_GIT_REV -ARG IS_RELEASE=false - -RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ - DOKKU_VERSION=${DOKKU_VERSION} \ - DOKKU_GIT_REV=${DOKKU_GIT_REV} \ - IS_RELEASE=${IS_RELEASE} \ - SKIP_GO_CLEAN=true \ - GOARCH=arm make version copyfiles \ - && DOKKU_ARCHITECTURE=armhf GOARCH=arm make deb-dokku - FROM builder as arm64 -COPY --from=armhf /tmp /tmp +COPY --from=amd64 /tmp /tmp COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated RUN rm -rf /tmp/build-dokku diff --git a/contrib/release-dokku b/contrib/release-dokku index fc5de35c1..255835607 100755 --- a/contrib/release-dokku +++ b/contrib/release-dokku @@ -387,14 +387,14 @@ fn-build-docker-image() { if [[ "$IS_RELEASE" == "true" ]]; then docker buildx build \ - --platform linux/arm,linux/arm64,linux/amd64 \ + --platform linux/arm64,linux/amd64 \ --progress plain \ --push \ --tag "dokku/dokku:latest" \ --tag "dokku/dokku:$VERSION" . elif [[ "$SKIP_IMAGE_BUILD" != "true" ]]; then docker buildx build \ - --platform linux/arm,linux/arm64,linux/amd64 \ + --platform linux/arm64,linux/amd64 \ --progress plain \ --tag "dokku/dokku:latest" \ --tag "dokku/dokku:$(echo "$VERSION" | tr + -)" . @@ -443,16 +443,13 @@ main() { fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION" "$IS_PATCH" fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION" || log-fail "Error building package" - fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error extracting deb package" fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error extracting deb package" fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package" mkdir -p build/package cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/package/dokku-amd64.deb cp -f "build/dokku_${NEXT_VERSION}_arm64.deb" build/package/dokku-arm64.deb - cp -f "build/dokku_${NEXT_VERSION}_armhf.deb" build/package/dokku-armhf.deb if [[ "$RELEASE" != "build" ]]; then - fn-publish-package "$IS_RELEASE" "raspbian" "build/dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error publishing deb package" fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error publishing deb package" fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package" fn-build-docker-image "$NEXT_VERSION" "$IS_RELEASE" || log-fail "Error building docker image" diff --git a/docs/appendices/0.32.0-migration-guide.md b/docs/appendices/0.32.0-migration-guide.md index a227fc56d..04661642e 100644 --- a/docs/appendices/0.32.0-migration-guide.md +++ b/docs/appendices/0.32.0-migration-guide.md @@ -19,3 +19,5 @@ - post-build-pack ## Removals + +- ARM support has been removed. Users of ARM installations on platforms such as the Raspberry PI should consider migrating to ARM64. ARM64 will continue to be supported by Dokku, and there are no plans to remove support for ARM64. diff --git a/docs/deployment/builders/herokuish-buildpacks.md b/docs/deployment/builders/herokuish-buildpacks.md index 29974f2f6..2b04ec56f 100644 --- a/docs/deployment/builders/herokuish-buildpacks.md +++ b/docs/deployment/builders/herokuish-buildpacks.md @@ -181,7 +181,7 @@ dokku buildpacks:set-property --global stack > [!IMPORTANT] > New as of 0.29.0 -By default, the builder-herokuish plugin is not enabled for non-amd64 platforms, and attempting to use it is blocked. This is because the majority of buildpacks are not cross-platform compatible, and thus building apps will either be considerably slower - due to emulating the amd64 platform - or won't work - due to building amd64 packages on arm/arm64 platforms. +By default, the builder-herokuish plugin is not enabled for non-amd64 platforms, and attempting to use it is blocked. This is because the majority of buildpacks are not cross-platform compatible, and thus building apps will either be considerably slower - due to emulating the amd64 platform - or won't work - due to building amd64 packages on arm64 platforms. To force-enable herokuish on non-amd64 platforms, the `allowed` property can be set via `builder-herokuish:set`. The default value depends on the host platform architecture (`true` on amd64, `false` otherwise). diff --git a/docs/getting-started/installation/index.md b/docs/getting-started/installation/index.md index 5a675a8d1..41f3b0f17 100644 --- a/docs/getting-started/installation/index.md +++ b/docs/getting-started/installation/index.md @@ -13,7 +13,6 @@ To start using Dokku, you'll need a system that meets the following minimum requ - [Debian 10+ x64](https://www.debian.org/distrib/) - A server with one of the following architectures - AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers - - ARMV7 (alternatively known as `armhf`), commonly used for Raspberry PI - ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton To avoid memory pressure during builds or runtime of your applications, we suggest the following: diff --git a/plugins/00_dokku-standard/subcommands/report b/plugins/00_dokku-standard/subcommands/report index 5f6970dc6..791772fa9 100755 --- a/plugins/00_dokku-standard/subcommands/report +++ b/plugins/00_dokku-standard/subcommands/report @@ -22,7 +22,7 @@ cmd-report() { dokku_log_info1 "docker daemon info: " "$DOCKER_BIN" -D system info | sed "s/^/ /" dokku_log_info1 "herokuish version: " - if [[ "$ARCHITECTURE" == "armhf" ]] || [[ "$ARCHITECTURE" == "arm64" ]]; then + if [[ "$ARCHITECTURE" == "arm64" ]]; then dokku_log_warn "herokuish not supported on $ARCHITECTURE architecture" elif verify_image "$DOKKU_IMAGE"; then "$DOCKER_BIN" container run $DOKKU_GLOBAL_RUN_ARGS --rm "$DOKKU_IMAGE" herokuish version | sed "s/^/ /" diff --git a/plugins/builder-herokuish/builder-detect b/plugins/builder-herokuish/builder-detect index 24570c979..8294fa1f5 100755 --- a/plugins/builder-herokuish/builder-detect +++ b/plugins/builder-herokuish/builder-detect @@ -10,10 +10,8 @@ trigger-builder-herokuish-builder-detect() { declare APP="$1" SOURCECODE_WORK_DIR="$2" local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)" - if [[ "$ARCHITECTURE" == "armhf" ]] || [[ "$ARCHITECTURE" == "arm64" ]]; then - if [[ "$(fn-builder-herokuish-computed-allowed "$APP")" != "true" ]]; then - return - fi + if [[ "$ARCHITECTURE" == "arm64" ]] && [[ "$(fn-builder-herokuish-computed-allowed "$APP")" != "true" ]]; then + return fi if fn-has-buildpacks-file "$SOURCECODE_WORK_DIR"; then diff --git a/plugins/builder-lambda/builder-detect b/plugins/builder-lambda/builder-detect index 930c41ef1..21e571de4 100755 --- a/plugins/builder-lambda/builder-detect +++ b/plugins/builder-lambda/builder-detect @@ -9,10 +9,6 @@ trigger-builder-lambda-builder-detect() { declare APP="$1" SOURCECODE_WORK_DIR="$2" local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)" - if [[ "$ARCHITECTURE" == "armhf" ]]; then - return - fi - if [[ -f "$SOURCECODE_WORK_DIR/lambda.yml" ]]; then echo "lambda" return diff --git a/plugins/git/functions b/plugins/git/functions index d01f26953..c37ea9654 100755 --- a/plugins/git/functions +++ b/plugins/git/functions @@ -57,10 +57,6 @@ git_trigger_build() { dokku_log_warn "Herokuish builder not supported on $ARCHITECTURE servers." dokku_log_warn "Switching to pack builder." BUILDER="pack" - elif [[ "$ARCHITECTURE" == "armhf" ]]; then - dokku_log_warn "Herokuish builder not supported on $ARCHITECTURE servers." - dokku_log_warn "Consider using a Dockerfile to build your app." - return 1 fi fi fi diff --git a/tests/unit/builder-herokuish.bats b/tests/unit/builder-herokuish.bats index d462398e1..3501e8412 100644 --- a/tests/unit/builder-herokuish.bats +++ b/tests/unit/builder-herokuish.bats @@ -20,7 +20,7 @@ teardown() { @test "(builder-herokuish) builder-herokuish:set allowed" { if [[ "$(dpkg --print-architecture 2>/dev/null || true)" == "amd64" ]]; then - skip "this test cannot be performed accurately on amd64 as it tests whether we can enable the plugin on armhf/arm64" + skip "this test cannot be performed accurately on amd64 as it tests whether we can enable the plugin on arm64" fi run /bin/bash -c "dokku builder-herokuish:set --global allowed" From fe6a0f796e034e3f1ccc00709e178615ed950509 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 27 Aug 2023 12:36:50 -0400 Subject: [PATCH 08/14] feat: add support for nixpacks as a builder Closes #5338 --- docs/deployment/builders/nixpacks.md | 155 ++++++++++++++++++ plugins/builder-nixpacks/builder-build | 67 ++++++++ plugins/builder-nixpacks/builder-detect | 17 ++ plugins/builder-nixpacks/builder-release | 31 ++++ plugins/builder-nixpacks/commands | 15 ++ plugins/builder-nixpacks/core-post-extract | 30 ++++ .../dockerfiles/builder-build.Dockerfile | 7 + .../dockerfiles/builder-release.Dockerfile | 2 + plugins/builder-nixpacks/help-functions | 33 ++++ plugins/builder-nixpacks/install | 16 ++ plugins/builder-nixpacks/internal-functions | 116 +++++++++++++ plugins/builder-nixpacks/plugin.toml | 4 + plugins/builder-nixpacks/post-app-clone-setup | 14 ++ .../builder-nixpacks/post-app-rename-setup | 15 ++ plugins/builder-nixpacks/post-delete | 15 ++ plugins/builder-nixpacks/report | 6 + plugins/builder-nixpacks/subcommands/default | 6 + plugins/builder-nixpacks/subcommands/report | 6 + plugins/builder-nixpacks/subcommands/set | 30 ++++ tests/unit/builder-nixpacks.bats | 52 ++++++ tests/unit/test_helper.bash | 16 +- 21 files changed, 648 insertions(+), 5 deletions(-) create mode 100644 docs/deployment/builders/nixpacks.md create mode 100755 plugins/builder-nixpacks/builder-build create mode 100755 plugins/builder-nixpacks/builder-detect create mode 100755 plugins/builder-nixpacks/builder-release create mode 100755 plugins/builder-nixpacks/commands create mode 100755 plugins/builder-nixpacks/core-post-extract create mode 100644 plugins/builder-nixpacks/dockerfiles/builder-build.Dockerfile create mode 100644 plugins/builder-nixpacks/dockerfiles/builder-release.Dockerfile create mode 100755 plugins/builder-nixpacks/help-functions create mode 100755 plugins/builder-nixpacks/install create mode 100755 plugins/builder-nixpacks/internal-functions create mode 100644 plugins/builder-nixpacks/plugin.toml create mode 100755 plugins/builder-nixpacks/post-app-clone-setup create mode 100755 plugins/builder-nixpacks/post-app-rename-setup create mode 100755 plugins/builder-nixpacks/post-delete create mode 100755 plugins/builder-nixpacks/report create mode 100755 plugins/builder-nixpacks/subcommands/default create mode 100755 plugins/builder-nixpacks/subcommands/report create mode 100755 plugins/builder-nixpacks/subcommands/set create mode 100644 tests/unit/builder-nixpacks.bats diff --git a/docs/deployment/builders/nixpacks.md b/docs/deployment/builders/nixpacks.md new file mode 100644 index 000000000..0d6421f53 --- /dev/null +++ b/docs/deployment/builders/nixpacks.md @@ -0,0 +1,155 @@ +# Nixpacks + +> New as of 0.32.0 + +The `nixpacks` builder builds apps via [Nixpacks](https://nixpacks.com/), a buildpack alternative. + +## Usage + +### Requirements + +The `nixpacks` cli tool is not included by default with Dokku or as a dependency. It must also be installed as shown on [this page](https://nixpacks.com/docs/install#debian-(and-derivatives-like-ubuntu)). + +Builds will proceed with the `nixpacks` cli for the app from then on. + +### Detection + +This builder will be auto-detected in the following case: + +- A `nixpacks.toml` exists in the root of the app repository. + +The builder may also be selected via the `builder:set` command + +```shell +dokku builder:set node-js-app selected nixpacks +``` + +### Supported languages + +See the [upstream nixpacks documentation](https://nixpacks.com/docs) for further information on what languages and frameworks are supported. + +### Build-time configuration variables + +For security reasons - and as per [Docker recommendations](https://github.com/docker/docker/issues/13490) - nixpacks-based deploys have variables available only during runtime. + +For users that require customization in the `build` phase, you may use build arguments via the [docker-options plugin](/docs/advanced-usage/docker-options.md). All environment variables set by the `config` plugin are automatically exported within the nixpacks build environment, and thus `--env` only requires setting a key without a value. + +```shell +dokku docker-options:add node-js-app build '--env NODE_ENV' +``` + +Alternatively, a full value may be provided in the form of `--env KEY=VALUE`: + +```shell +dokku docker-options:add node-js-app build '--env NODE_ENV=production' +``` + +### Changing the `nixpacks.toml` location + +When deploying a monorepo, it may be desirable to specify the specific path of the `nixpacks.toml` file to use for a given app. This can be done via the `builder-nixpacks:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail. + +```shell +dokku builder-nixpacks:set node-js-app nixpackstoml-path nixpacks2.toml +``` + +The default value may be set by passing an empty value for the option: + +```shell +dokku builder-nixpacks:set node-js-app nixpackstoml-path +``` + +The `nixpackstoml-path` property can also be set globally. The global default is `nixpacks.toml`, and the global value is used when no app-specific value is set. + +```shell +dokku builder-nixpacks:set --global nixpackstoml-path nixpacks2.toml +``` + +The default value may be set by passing an empty value for the option. + +```shell +dokku builder-nixpacks:set --global nixpackstoml-path +``` + +### Disabling cache + +Cache is enabled by default, but can be disabled by setting the `no-cache` property to `true`: + +```shell +dokku builder-nixpacks:set node-js-app no-cache true +``` + +The default value may be set by passing an empty value for the option: + +```shell +dokku builder-nixpacks:set node-js-app no-cache +``` + +The `no-cache` property can also be set globally. The global default is `false`, and the global value is used when no app-specific value is set. + +```shell +dokku builder-nixpacks:set --global no-cache true +``` + +The default value may be set by passing an empty value for the option. + +```shell +dokku builder-nixpacks:set --global no-cache +``` + +### Displaying builder-nixpacks reports for an app + +You can get a report about the app's storage status using the `builder-nixpacks:report` command: + +```shell +dokku builder-nixpacks:report +``` + +``` +=====> node-js-app builder-nixpacks information + Builder-nixpacks computed nixpackstoml path: nixpacks2.toml + Builder-nixpacks global nixpackstoml path: nixpacks.toml + Builder-nixpacks nixpackstoml path: nixpacks2.toml + Builder-nixpacks computed no cache: true + Builder-nixpacks global no cache: false + Builder-nixpacks no cache: true +=====> python-sample builder-nixpacks information + Builder-nixpacks computed nixpackstoml path: nixpacks.toml + Builder-nixpacks global nixpackstoml path: nixpacks.toml + Builder-nixpacks nixpackstoml path: + Builder-nixpacks computed no cache: false + Builder-nixpacks global no cache: false + Builder-nixpacks no cache: +=====> ruby-sample builder-nixpacks information + Builder-nixpacks computed nixpackstoml path: nixpacks.toml + Builder-nixpacks global nixpackstoml path: nixpacks.toml + Builder-nixpacks nixpackstoml path: + Builder-nixpacks computed no cache: false + Builder-nixpacks global no cache: false + Builder-nixpacks no cache: +``` + +You can run the command for a specific app also. + +```shell +dokku builder-nixpacks:report node-js-app +``` + +``` +=====> node-js-app builder-nixpacks information + Builder-nixpacks computed nixpackstoml path: nixpacks2.toml + Builder-nixpacks global nixpackstoml path: nixpacks.toml + Builder-nixpacks nixpackstoml path: nixpacks2.toml + Builder-nixpacks computed no cache: true + Builder-nixpacks global no cache: false + Builder-nixpacks no cache: true +``` + +You can pass flags which will output only the value of the specific information you want. For example: + +```shell +dokku builder-nixpacks:report node-js-app --builder-nixpacks-no-cache +``` + +``` +true +``` diff --git a/plugins/builder-nixpacks/builder-build b/plugins/builder-nixpacks/builder-build new file mode 100755 index 000000000..eae65baba --- /dev/null +++ b/plugins/builder-nixpacks/builder-build @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/internal-functions" +source "$PLUGIN_AVAILABLE_PATH/config/functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-builder-build() { + declare desc="builder-nixpacks builder-build plugin trigger" + declare trigger="builder-build" + declare BUILDER_TYPE="$1" APP="$2" SOURCECODE_WORK_DIR="$3" + + if [[ "$BUILDER_TYPE" != "nixpacks" ]]; then + return + fi + + dokku_log_info1 "Building $APP from nixpacks" + + if ! command -v "nixpacks" &>/dev/null; then + dokku_log_fail "Missing nixpacks, install it" + fi + + local IMAGE=$(get_app_image_name "$APP") + local DOCKER_BUILD_LABEL_ARGS=("--label=dokku" "--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.image-stage=build" "--label=com.dokku.builder-type=dockerfile" "--label=com.dokku.app-name=$APP") + + pushd "$SOURCECODE_WORK_DIR" &>/dev/null + + plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" + + no_cache="$(fn-builder-nixpacks-computed-no-cache "$APP")" + NIXPACKS_ARGS="" + if [[ "$no_cache" == "true" ]]; then + NIXPACKS_ARGS="$NIXPACKS_ARGS --no-cache" + fi + + local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE") + DOCKER_ARGS+=$(: | plugn trigger docker-args-process-build "$APP" "$BUILDER_TYPE") + + # strip --link, --volume and -v args from DOCKER_ARGS + local DOCKER_ARGS=$(sed -e "s/^--link=[[:graph:]]\+[[:blank:]]\?//g" -e "s/^--link[[:blank:]]\?[[:graph:]]\+[[:blank:]]\?//g" -e "s/^--volume=[[:graph:]]\+[[:blank:]]\?//g" -e "s/^--volume[[:blank:]]\?[[:graph:]]\+[[:blank:]]\?//g" -e "s/^-v[[:blank:]]\?[[:graph:]]\+[[:blank:]]\?//g" <<<"$DOCKER_ARGS") + declare -a ARG_ARRAY + eval "ARG_ARRAY=($DOCKER_ARGS)" + + eval "$(config_export app "$APP" --merged)" + + if [[ -f "$SOURCECODE_WORK_DIR/Procfile" ]]; then + if procfile-util exists --process-type release; then + procfile-util delete --process-type release + fi + fi + + # shellcheck disable=SC2086 + if ! nixpacks build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS "${ARG_ARRAY[@]}" $NIXPACKS_ARGS --name "$IMAGE" "$SOURCECODE_WORK_DIR"; then + dokku_log_warn "Failure building image" + return 1 + fi + + if ! suppress_output "$DOCKER_BIN" image build -f "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/dockerfiles/builder-build.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$SOURCECODE_WORK_DIR"; then + dokku_log_warn "Failure injecting docker labels and custom entrypoint on image" + return 1 + fi + + plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR" + popd &>/dev/null || pushd "/tmp" >/dev/null +} + +trigger-builder-nixpacks-builder-build "$@" diff --git a/plugins/builder-nixpacks/builder-detect b/plugins/builder-nixpacks/builder-detect new file mode 100755 index 000000000..76800067b --- /dev/null +++ b/plugins/builder-nixpacks/builder-detect @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +source "$PLUGIN_AVAILABLE_PATH/config/functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-builder-detect() { + declare desc="builder-nixpacks builder-detect plugin trigger" + declare trigger="builder-detect" + declare APP="$1" SOURCECODE_WORK_DIR="$2" + + if [[ -f "$SOURCECODE_WORK_DIR/nixpacks.toml" ]]; then + echo "nixpacks" + return + fi +} + +trigger-builder-nixpacks-builder-detect "$@" diff --git a/plugins/builder-nixpacks/builder-release b/plugins/builder-nixpacks/builder-release new file mode 100755 index 000000000..af79997f7 --- /dev/null +++ b/plugins/builder-nixpacks/builder-release @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-builder-release() { + declare desc="builder-nixpacks builder-release plugin trigger" + declare trigger="builder-release" + declare BUILDER_TYPE="$1" APP="$2" IMAGE_TAG="$3" + + if [[ "$BUILDER_TYPE" != "nixpacks" ]]; then + return + fi + + local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP --label=com.dokku.image-stage=release --label=dokku" + + plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" + + TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")" + trap "rm -rf '$TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT + + local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") + if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then + dokku_log_warn "Failure injecting docker labels on image" + return 1 + fi + + plugn trigger post-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" +} + +trigger-builder-nixpacks-builder-release "$@" diff --git a/plugins/builder-nixpacks/commands b/plugins/builder-nixpacks/commands new file mode 100755 index 000000000..387e8742a --- /dev/null +++ b/plugins/builder-nixpacks/commands @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/help-functions" + +case "$1" in + help | builder-nixpacks:help) + cmd-builder-nixpacks-help "$@" + ;; + + *) + exit "$DOKKU_NOT_IMPLEMENTED_EXIT" + ;; + +esac diff --git a/plugins/builder-nixpacks/core-post-extract b/plugins/builder-nixpacks/core-post-extract new file mode 100755 index 000000000..eaaa5dd5e --- /dev/null +++ b/plugins/builder-nixpacks/core-post-extract @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/internal-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-core-post-extract() { + declare desc="builder-nixpacks post-extract plugin trigger" + declare trigger="post-extract" + declare APP="$1" SOURCECODE_WORK_DIR="$2" + local NEW_NIXPACKS_YML="$(fn-builder-nixpacks-computed-nixpackstoml-path "$APP")" + + pushd "$TMP_WORK_DIR" >/dev/null + + if [[ -z "$NEW_NIXPACKS_YML" ]]; then + return + fi + + if [[ ! -f "$NEW_NIXPACKS_YML" ]]; then + rm -f nixpacks.toml + return + fi + + if [[ "$NEW_NIXPACKS_YML" != "nixpacks.toml" ]]; then + mv "$NEW_NIXPACKS_YML" nixpacks.toml + fi + popd &>/dev/null || pushd "/tmp" >/dev/null +} + +trigger-builder-nixpacks-core-post-extract "$@" diff --git a/plugins/builder-nixpacks/dockerfiles/builder-build.Dockerfile b/plugins/builder-nixpacks/dockerfiles/builder-build.Dockerfile new file mode 100644 index 000000000..57aa80d1c --- /dev/null +++ b/plugins/builder-nixpacks/dockerfiles/builder-build.Dockerfile @@ -0,0 +1,7 @@ +ARG APP_IMAGE +FROM $APP_IMAGE + +RUN printf '#!/usr/bin/env bash\nexec bash -l -c -- \"$*\"\n' > /usr/local/bin/entrypoint && \ + chmod +x /usr/local/bin/entrypoint + +ENTRYPOINT ["/usr/local/bin/entrypoint"] diff --git a/plugins/builder-nixpacks/dockerfiles/builder-release.Dockerfile b/plugins/builder-nixpacks/dockerfiles/builder-release.Dockerfile new file mode 100644 index 000000000..cca256f21 --- /dev/null +++ b/plugins/builder-nixpacks/dockerfiles/builder-release.Dockerfile @@ -0,0 +1,2 @@ +ARG APP_IMAGE +FROM $APP_IMAGE diff --git a/plugins/builder-nixpacks/help-functions b/plugins/builder-nixpacks/help-functions new file mode 100755 index 000000000..6426ea29c --- /dev/null +++ b/plugins/builder-nixpacks/help-functions @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +cmd-builder-nixpacks-help() { + declare desc="help command" + declare CMD="$1" + local plugin_name="builder-nixpacks" + local plugin_description="Manage the nixpacks builder integration for an app" + + if [[ "$CMD" == "${plugin_name}:help" ]]; then + echo -e "Usage: dokku ${plugin_name}[:COMMAND]" + echo '' + echo "$plugin_description" + echo '' + echo 'Additional commands:' + fn-help-content | sort | column -c2 -t -s, + elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then + fn-help-content + else + cat <] [], Displays a builder-nixpacks report for one or more apps + builder-nixpacks:set (), Set or clear a builder-nixpacks property for an app +help_content +} diff --git a/plugins/builder-nixpacks/install b/plugins/builder-nixpacks/install new file mode 100755 index 000000000..41bc00ab9 --- /dev/null +++ b/plugins/builder-nixpacks/install @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-install() { + declare desc="installs the builder-nixpacks plugin" + declare trigger="install" + + fn-plugin-property-setup "builder-nixpacks" + + mkdir -p "${DOKKU_LIB_ROOT}/data/builder-nixpacks" + chown -R "${DOKKU_SYSTEM_USER}:${DOKKU_SYSTEM_GROUP}" "${DOKKU_LIB_ROOT}/data/builder-nixpacks" +} + +trigger-builder-nixpacks-install "$@" diff --git a/plugins/builder-nixpacks/internal-functions b/plugins/builder-nixpacks/internal-functions new file mode 100755 index 000000000..582fc33fa --- /dev/null +++ b/plugins/builder-nixpacks/internal-functions @@ -0,0 +1,116 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +cmd-builder-nixpacks-report() { + declare desc="displays a builder-nixpacks report for one or more apps" + declare cmd="builder-nixpacks:report" + [[ "$1" == "$cmd" ]] && shift 1 + declare APP="$1" INFO_FLAG="$2" + + if [[ -n "$APP" ]] && [[ "$APP" == --* ]]; then + INFO_FLAG="$APP" + APP="" + fi + + if [[ -z "$APP" ]] && [[ -z "$INFO_FLAG" ]]; then + INFO_FLAG="true" + fi + + if [[ -z "$APP" ]]; then + for app in $(dokku_apps); do + cmd-builder-nixpacks-report-single "$app" "$INFO_FLAG" | tee || true + done + else + cmd-builder-nixpacks-report-single "$APP" "$INFO_FLAG" + fi +} + +cmd-builder-nixpacks-report-single() { + declare APP="$1" INFO_FLAG="$2" + if [[ "$INFO_FLAG" == "true" ]]; then + INFO_FLAG="" + fi + verify_app_name "$APP" + local flag_map=( + "--builder-nixpacks-computed-nixpackstoml-path: $(fn-builder-nixpacks-computed-nixpackstoml-path "$APP")" + "--builder-nixpacks-global-nixpackstoml-path: $(fn-builder-nixpacks-global-nixpackstoml-path "$APP")" + "--builder-nixpacks-nixpackstoml-path: $(fn-builder-nixpacks-nixpackstoml-path "$APP")" + "--builder-nixpacks-computed-no-cache: $(fn-builder-nixpacks-computed-no-cache "$APP")" + "--builder-nixpacks-global-no-cache: $(fn-builder-nixpacks-global-no-cache "$APP")" + "--builder-nixpacks-no-cache: $(fn-builder-nixpacks-no-cache "$APP")" + ) + + if [[ -z "$INFO_FLAG" ]]; then + dokku_log_info2_quiet "${APP} builder-nixpacks information" + for flag in "${flag_map[@]}"; do + key="$(echo "${flag#--}" | cut -f1 -d' ' | tr - ' ')" + dokku_log_verbose "$(printf "%-30s %-25s" "${key^}" "${flag#*: }")" + done + else + local match=false + local value_exists=false + for flag in "${flag_map[@]}"; do + valid_flags="${valid_flags} $(echo "$flag" | cut -d':' -f1)" + if [[ "$flag" == "${INFO_FLAG}:"* ]]; then + value=${flag#*: } + size="${#value}" + if [[ "$size" -ne 0 ]]; then + echo "$value" && match=true && value_exists=true + else + match=true + fi + fi + done + [[ "$match" == "true" ]] || dokku_log_fail "Invalid flag passed, valid flags:${valid_flags}" + [[ "$value_exists" == "true" ]] || dokku_log_fail "not deployed" + fi +} + +fn-builder-nixpacks-computed-nixpackstoml-path() { + declare APP="$1" + + file="$(fn-builder-nixpacks-nixpackstoml-path "$APP")" + if [[ "$file" == "" ]]; then + file="$(fn-builder-nixpacks-global-nixpackstoml-path "$APP")" + fi + + echo "$file" +} + +fn-builder-nixpacks-global-nixpackstoml-path() { + declare APP="$1" + + fn-plugin-property-get "builder-nixpacks" "--global" "nixpackstoml-path" "nixpacks.toml" +} + +fn-builder-nixpacks-nixpackstoml-path() { + declare APP="$1" + + fn-plugin-property-get "builder-nixpacks" "$APP" "nixpackstoml-path" "" +} + +fn-builder-nixpacks-computed-no-cache() { + declare APP="$1" + + file="$(fn-builder-nixpacks-no-cache "$APP")" + if [[ "$file" == "" ]]; then + file="$(fn-builder-nixpacks-global-no-cache "$APP")" + fi + + echo "$file" +} + +fn-builder-nixpacks-global-no-cache() { + declare APP="$1" + + fn-plugin-property-get "builder-nixpacks" "--global" "no-cache" "false" +} + +fn-builder-nixpacks-no-cache() { + declare APP="$1" + + fn-plugin-property-get "builder-nixpacks" "$APP" "no-cache" "" +} diff --git a/plugins/builder-nixpacks/plugin.toml b/plugins/builder-nixpacks/plugin.toml new file mode 100644 index 000000000..1a7356ea9 --- /dev/null +++ b/plugins/builder-nixpacks/plugin.toml @@ -0,0 +1,4 @@ +[plugin] +description = "dokku core builder-nixpacks plugin" +version = "0.31.4" +[plugin.config] diff --git a/plugins/builder-nixpacks/post-app-clone-setup b/plugins/builder-nixpacks/post-app-clone-setup new file mode 100755 index 000000000..95541bc1c --- /dev/null +++ b/plugins/builder-nixpacks/post-app-clone-setup @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-post-app-clone-setup() { + declare desc="sets up properties for new app" + declare trigger="post-app-clone-setup" + declare OLD_APP="$1" NEW_APP="$2" + + fn-plugin-property-clone "builder-nixpacks" "$OLD_APP" "$NEW_APP" +} + +trigger-builder-nixpacks-post-app-clone-setup "$@" diff --git a/plugins/builder-nixpacks/post-app-rename-setup b/plugins/builder-nixpacks/post-app-rename-setup new file mode 100755 index 000000000..00ea04aa1 --- /dev/null +++ b/plugins/builder-nixpacks/post-app-rename-setup @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-post-app-rename-setup() { + declare desc="updates settings for new app" + declare trigger="post-app-rename-setup" + declare OLD_APP="$1" NEW_APP="$2" + + fn-plugin-property-clone "builder-nixpacks" "$OLD_APP" "$NEW_APP" + fn-plugin-property-destroy "builder-nixpacks" "$OLD_APP" +} + +trigger-builder-nixpacks-post-app-rename-setup "$@" diff --git a/plugins/builder-nixpacks/post-delete b/plugins/builder-nixpacks/post-delete new file mode 100755 index 000000000..aedb082cd --- /dev/null +++ b/plugins/builder-nixpacks/post-delete @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-post-delete() { + declare desc="destroys the builder-nixpacks properties for a given app" + declare trigger="post-delete" + declare APP="$1" + + fn-plugin-property-destroy "builder-nixpacks" "$APP" + rm -rf "${DOKKU_LIB_ROOT}/data/builder-nixpacks/$APP" +} + +trigger-builder-nixpacks-post-delete "$@" diff --git a/plugins/builder-nixpacks/report b/plugins/builder-nixpacks/report new file mode 100755 index 000000000..727356552 --- /dev/null +++ b/plugins/builder-nixpacks/report @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/internal-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +cmd-builder-nixpacks-report-single "$@" diff --git a/plugins/builder-nixpacks/subcommands/default b/plugins/builder-nixpacks/subcommands/default new file mode 100755 index 000000000..9c72c5c46 --- /dev/null +++ b/plugins/builder-nixpacks/subcommands/default @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/help-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +cmd-builder-nixpacks-help "builder-nixpacks:help" diff --git a/plugins/builder-nixpacks/subcommands/report b/plugins/builder-nixpacks/subcommands/report new file mode 100755 index 000000000..4ea4b1d13 --- /dev/null +++ b/plugins/builder-nixpacks/subcommands/report @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/internal-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +cmd-builder-nixpacks-report "$@" diff --git a/plugins/builder-nixpacks/subcommands/set b/plugins/builder-nixpacks/subcommands/set new file mode 100755 index 000000000..711b60d72 --- /dev/null +++ b/plugins/builder-nixpacks/subcommands/set @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +cmd-builder-nixpacks-set() { + declare desc="set or clear a builder-nixpacks property for an app" + declare cmd="builder-nixpacks:set" + [[ "$1" == "$cmd" ]] && shift 1 + declare APP="$1" KEY="$2" VALUE="$3" + local VALID_KEYS=("nixpackstoml-path" "no-cache") + [[ "$APP" == "--global" ]] || verify_app_name "$APP" + + [[ -z "$KEY" ]] && dokku_log_fail "No key specified" + + if ! fn-in-array "$KEY" "${VALID_KEYS[@]}"; then + dokku_log_fail "Invalid key specified, valid keys include: nixpackstoml-path, no-cache" + fi + + if [[ -n "$VALUE" ]]; then + dokku_log_info2_quiet "Setting ${KEY} to ${VALUE}" + fn-plugin-property-write "builder-nixpacks" "$APP" "$KEY" "$VALUE" + else + dokku_log_info2_quiet "Unsetting ${KEY}" + fn-plugin-property-delete "builder-nixpacks" "$APP" "$KEY" + fi +} + +cmd-builder-nixpacks-set "$@" diff --git a/tests/unit/builder-nixpacks.bats b/tests/unit/builder-nixpacks.bats new file mode 100644 index 000000000..39285c183 --- /dev/null +++ b/tests/unit/builder-nixpacks.bats @@ -0,0 +1,52 @@ +#!/usr/bin/env bats + +load test_helper + +setup_file() { + install_nixpacks +} + +setup() { + create_app +} + +teardown() { + destroy_app +} + +@test "(builder-nixpacks:set)" { + run /bin/bash -c "dokku config:set $TEST_APP SECRET_KEY=fjdkslafjdk" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku builder:set $TEST_APP selected nixpacks" + echo "output: $output" + echo "status: $status" + assert_success + + run deploy_app python dokku@dokku.me:$TEST_APP inject_requirements_txt + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains 'load build definition from Dockerfile' + assert_output_contains "SECRET_KEY: fjdkslafjdk" + + run /bin/bash -c "dokku builder-nixpacks:set $TEST_APP nixpackstoml-path nonexistent.toml" + 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 + assert_output_contains 'load build definition from Dockerfile' +} + +inject_requirements_txt() { + local APP="$1" + local APP_REPO_DIR="$2" + [[ -z "$APP" ]] && local APP="$TEST_APP" + echo "flask" >>"$APP_REPO_DIR/requirements.txt" +} diff --git a/tests/unit/test_helper.bash b/tests/unit/test_helper.bash index 536656728..0ea1a45ed 100644 --- a/tests/unit/test_helper.bash +++ b/tests/unit/test_helper.bash @@ -601,6 +601,13 @@ detach_delete_network() { delete_network "$NETWORK_NAME" } +convert_to_dockerfile() { + local APP="$1" + local APP_REPO_DIR="$2" + [[ -z "$APP" ]] && local APP="$TEST_APP" + mv "$APP_REPO_DIR/dockerfile.Dockerfile" "$APP_REPO_DIR/Dockerfile" +} + install_pack() { if ! command -v "pack" &>/dev/null; then add-apt-repository --yes ppa:cncf-buildpacks/pack-cli @@ -609,9 +616,8 @@ install_pack() { fi } -convert_to_dockerfile() { - local APP="$1" - local APP_REPO_DIR="$2" - [[ -z "$APP" ]] && local APP="$TEST_APP" - mv "$APP_REPO_DIR/dockerfile.Dockerfile" "$APP_REPO_DIR/Dockerfile" +install_nixpacks() { + if ! command -v "nixpacks" &>/dev/null; then + curl -sSL https://nixpacks.com/install.sh | FORCE=1 bash + fi } From ab8a9577865557dc418e72363882e2fffa9d3457 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 15 Oct 2023 03:34:16 -0400 Subject: [PATCH 09/14] feat: run ps:restore in parallel by default This will speed up restores in cases where app containers disappear on reboot or have new IPs, which primarily impacts the docker-local scheduler in conjunction with nginx. Closes #4967 --- plugins/00_dokku-standard/install | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/00_dokku-standard/install b/plugins/00_dokku-standard/install index 3600a927d..3cd730920 100755 --- a/plugins/00_dokku-standard/install +++ b/plugins/00_dokku-standard/install @@ -18,7 +18,7 @@ start on filesystem and started docker script sleep 2 # give docker some time - sudo -i -u dokku $dokku_path ps:restore + sudo -i -u dokku $dokku_path ps:restore --parallel -1 end script EOF fi @@ -33,7 +33,7 @@ After=docker.service [Service] Type=simple User=dokku -ExecStart=$dokku_path ps:restore +ExecStart=$dokku_path ps:restore --parallel -1 [Install] WantedBy=docker.service From f33d7f129b259d730d1b1b91f50dcd8b888182b4 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 15 Oct 2023 03:01:14 -0400 Subject: [PATCH 10/14] feat: warn when incorrect interface/port in use for web processes Users that misconfigure their process's listening interface or port will now see an additional healthcheck warning for web deploys. While only a single port is checked, this ensures that users at least have some context as to why their app isn't responding as expected. Closes #4798 --- contrib/dependencies.json | 10 +++++----- debian/control | 2 +- .../local/bin/docker-container-healthchecker | 20 ------------------- plugins/scheduler-docker-local/check-deploy | 7 ++++++- plugins/scheduler-docker-local/install | 3 +++ tests/apps/python/web.py | 5 ++++- tests/unit/checks.bats | 18 +++++++++++++++++ 7 files changed, 37 insertions(+), 28 deletions(-) delete mode 100755 docker/usr/local/bin/docker-container-healthchecker diff --git a/contrib/dependencies.json b/contrib/dependencies.json index 95b320859..13abdf41e 100644 --- a/contrib/dependencies.json +++ b/contrib/dependencies.json @@ -11,11 +11,11 @@ }, { "name": "docker-container-healthchecker", - "version": "0.7.1", + "version": "0.7.2", "urls": { - "amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.1/docker-container-healthchecker_0.7.1_linux_amd64.tgz", - "arm4": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.1/docker-container-healthchecker_0.7.1_linux_arm64.tgz", - "arm": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.1/docker-container-healthchecker_0.7.1_linux_armhf.tgz" + "amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_amd64.tgz", + "arm4": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_arm64.tgz", + "arm": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_armhf.tgz" } }, { @@ -104,4 +104,4 @@ } } ] -} \ No newline at end of file +} diff --git a/debian/control b/debian/control index a166e75dd..bb34af259 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Version: 0.31.5 Section: web Priority: optional Architecture: amd64 -Depends: apache2-utils, locales, git, cpio, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 17.05.0) | docker-engine (>= 17.05.0) | docker-io (>= 17.05.0) | docker.io (>= 17.05.0) | docker-ce (>= 17.05.0) | docker-ee (>= 17.05.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, software-properties-common, parallel, procfile-util, python-software-properties | python3-software-properties, rsync, rsyslog, dos2unix, jq, unzip +Depends: apache2-utils, locales, git, cpio, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 17.05.0) | docker-engine (>= 17.05.0) | docker-io (>= 17.05.0) | docker.io (>= 17.05.0) | docker-ce (>= 17.05.0) | docker-ee (>= 17.05.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, software-properties-common, parallel, procfile-util, python-software-properties | python3-software-properties, rsync, rsyslog, dos2unix, jq, unzip, util-linux Recommends: herokuish, bash-completion, dokku-update, dokku-event-listener Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, dnsutils, cgroupfs-mount | cgroup-lite, plugn, sudo, python3, debconf Maintainer: Jose Diaz-Gonzalez diff --git a/docker/usr/local/bin/docker-container-healthchecker b/docker/usr/local/bin/docker-container-healthchecker deleted file mode 100755 index 8453942f2..000000000 --- a/docker/usr/local/bin/docker-container-healthchecker +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail -[[ $TRACE ]] && set -x - -main() { - declare desc="re-runs docker-container-healthchecker commands as sudo" - local DOCKER_CONTAINER_HEALTHCHECKER_BIN="" - if [[ -x "/usr/bin/docker-container-healthchecker" ]]; then - DOCKER_CONTAINER_HEALTHCHECKER_BIN="/usr/bin/docker-container-healthchecker" - fi - - if [[ -z "$DOCKER_CONTAINER_HEALTHCHECKER_BIN" ]]; then - echo "! No docker-container-healthchecker binary found" 1>&2 - exit 1 - fi - - sudo -E "$DOCKER_CONTAINER_HEALTHCHECKER_BIN" "$@" -} - -main "$@" diff --git a/plugins/scheduler-docker-local/check-deploy b/plugins/scheduler-docker-local/check-deploy index fcaaab094..d4f62b6c5 100755 --- a/plugins/scheduler-docker-local/check-deploy +++ b/plugins/scheduler-docker-local/check-deploy @@ -148,7 +148,12 @@ trigger-scheduler-docker-local-check-deploy() { ARG_ARRAY+=("$DOKKU_APP_LISTEN_PORT") fi - docker-container-healthchecker check "$DOKKU_APP_CONTAINER_ID" "${ARG_ARRAY[@]}" || FAILEDCHECKS="$?" + if [[ "$DOKKU_APP_CONTAINER_TYPE" == "web" ]]; then + content="$(docker-container-healthchecker add "$DOKKU_APP_CONTAINER_TYPE" --app-json "$TMP_APP_JSON_OUTPUT" --listening-check --name "port listening check" --port "$DOKKU_APP_LISTEN_PORT" --pretty --warn-only)" + echo "$content" >"$TMP_APP_JSON_OUTPUT" + fi + + sudo /usr/bin/docker-container-healthchecker check "$DOKKU_APP_CONTAINER_ID" "${ARG_ARRAY[@]}" || FAILEDCHECKS="$?" if [[ $FAILEDCHECKS -gt 0 ]]; then "$DOCKER_BIN" container update --restart=no "$DOKKU_APP_CONTAINER_ID" &>/dev/null || true diff --git a/plugins/scheduler-docker-local/install b/plugins/scheduler-docker-local/install index 0fd3de0a5..8e4c7ceb3 100755 --- a/plugins/scheduler-docker-local/install +++ b/plugins/scheduler-docker-local/install @@ -17,6 +17,9 @@ trigger-scheduler-docker-local-install() { echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/crontab" >"/etc/sudoers.d/dokku-cron" chmod "0440" "/etc/sudoers.d/dokku-cron" + echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/docker-container-healthchecker" >"/etc/sudoers.d/dokku-docker-container-healthchecker" + chmod "0440" "/etc/sudoers.d/dokku-docker-container-healthchecker" + DOKKU_PATH="$(command -v dokku)" if [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then diff --git a/tests/apps/python/web.py b/tests/apps/python/web.py index ed15a73b0..880781794 100644 --- a/tests/apps/python/web.py +++ b/tests/apps/python/web.py @@ -31,7 +31,10 @@ if __name__ == "__main__": for arg in sys.argv: print(f"Arg: {arg}") - port = int(os.getenv("PORT", 5000)) + port = int(os.getenv("PORT", "5000")) + if os.getenv("ALT_PORT"): + port = int(os.getenv("ALT_PORT", "5000")) + server = http.server.HTTPServer(("0.0.0.0", port), GetHandler) print("Listening on port {0}".format(port)) server.serve_forever() diff --git a/tests/unit/checks.bats b/tests/unit/checks.bats index 5a3886c1c..35e0576fa 100644 --- a/tests/unit/checks.bats +++ b/tests/unit/checks.bats @@ -268,3 +268,21 @@ teardown() { assert_output_contains "/healthcheck" assert_success } + +@test "(checks) listening checks" { + if [[ "$TERM_PROGRAM" == "vscode" ]]; then + skip "environment must be running in the host namespace" + fi + + run /bin/bash -c "dokku config:set $TEST_APP ALT_PORT=5001" + echo "output: $output" + echo "status: $status" + assert_success + + run deploy_app + echo "output: $output" + echo "status: $status" + assert_failure + assert_output_contains "Failure in name='port listening check': container listening on expected IPv4 interface with an unexpected port: expected=5000 actual=5001" + assert_output_contains "Running healthcheck name='port listening check' attempts=3 port=5000 retries=2 timeout=5 type='listening' wait=5" +} From 126a3ed5090d295920b602b7a4170f5058290891 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 16 Oct 2023 00:16:55 -0400 Subject: [PATCH 11/14] chore: remove deprecated proxy-ports functions and and plugin subcommands These were deprecated in 0.31.0 in favor of the ports plugin. --- docs/appendices/0.32.0-migration-guide.md | 6 ++++ docs/development/plugin-triggers.md | 18 ----------- plugins/20_events/proxy-configure-ports | 1 - plugins/common/functions | 25 -------------- plugins/ports/proxy-configure-ports | 15 --------- plugins/proxy/go.mod | 1 - plugins/proxy/src/subcommands/subcommands.go | 34 -------------------- 7 files changed, 6 insertions(+), 94 deletions(-) delete mode 120000 plugins/20_events/proxy-configure-ports delete mode 100755 plugins/ports/proxy-configure-ports diff --git a/docs/appendices/0.32.0-migration-guide.md b/docs/appendices/0.32.0-migration-guide.md index 04661642e..9b59d0143 100644 --- a/docs/appendices/0.32.0-migration-guide.md +++ b/docs/appendices/0.32.0-migration-guide.md @@ -21,3 +21,9 @@ ## Removals - ARM support has been removed. Users of ARM installations on platforms such as the Raspberry PI should consider migrating to ARM64. ARM64 will continue to be supported by Dokku, and there are no plans to remove support for ARM64. +- The following proxy-port related code has been removed. It is replaced by the `ports` plugin and it's related plugin triggers. + - `proxy:ports-*` commands + - `proxy-configure-ports` plugin trigger + - `common#get_available_port()` + - `common#get_dockerfile_exposed_ports()` + - `common#get_exposed_ports_from_image()` diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index a565068c9..92dfde029 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -2194,24 +2194,6 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x # TODO ``` -### `proxy-configure-ports` - -> [!WARNING] -> Deprecated, please use `ports-configure` instead - -- Description: Configures the port mapping -- Invoked by: `internally triggered by proxy plugins` -- Arguments: `$APP` -- Example: - -```shell -#!/usr/bin/env bash - -set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x - -# TODO -``` - ### `proxy-disable` - Description: Disables the configured proxy implementation for an app diff --git a/plugins/20_events/proxy-configure-ports b/plugins/20_events/proxy-configure-ports deleted file mode 120000 index 5178a749f..000000000 --- a/plugins/20_events/proxy-configure-ports +++ /dev/null @@ -1 +0,0 @@ -hook \ No newline at end of file diff --git a/plugins/common/functions b/plugins/common/functions index b9dd37dc0..7359a980a 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -758,12 +758,6 @@ docker_cleanup() { "$PLUGIN_CORE_AVAILABLE_PATH/common/common" --quiet docker-cleanup "$APP" } -get_available_port() { - declare desc="returns first currently unused port > 1024" - dokku_log_warn "Deprecated: please use the 'ports-get-available' plugin trigger instead" - plugn trigger ports-get-available -} - dokku_auth() { declare desc="calls user-auth plugin trigger" export SSH_USER=${SSH_USER:=$USER} @@ -827,25 +821,6 @@ get_ipv6_regex() { echo "${RE_IPV6}\$" } -get_dockerfile_exposed_ports() { - declare desc="return all exposed ports from passed file path" - dokku_log_warn "Deprecated: this function should not be used in app code" - - local DOCKERFILE_PORTS=$(grep -E "^EXPOSE " "$1" | awk '{ print $2 }' | xargs) || true - echo "$DOCKERFILE_PORTS" -} - -get_exposed_ports_from_image() { - declare desc="return all exposed ports from passed image name" - dokku_log_warn "Deprecated: this function should not be used in app code" - - local IMAGE="$1" - verify_image "$IMAGE" - # shellcheck disable=SC2016 - local DOCKER_IMAGE_EXPOSED_PORTS="$("$DOCKER_BIN" image inspect --format '{{range $key, $value := .Config.ExposedPorts}}{{$key}} {{end}}' "$IMAGE")" - echo "$DOCKER_IMAGE_EXPOSED_PORTS" -} - get_entrypoint_from_image() { declare desc="return .Config.Entrypoint from passed image name" local IMAGE="$1" diff --git a/plugins/ports/proxy-configure-ports b/plugins/ports/proxy-configure-ports deleted file mode 100755 index 649106588..000000000 --- a/plugins/ports/proxy-configure-ports +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" -set -eo pipefail -[[ $DOKKU_TRACE ]] && set -x - -trigger-ports-proxy-configure-ports() { - declare desc="ports proxy-configure-ports plugin trigger" - declare trigger="proxy-configure-ports" - declare APP="$1" - - dokku_log_warn "Deprecated: please use the 'ports-configure' plugin trigger instead" - plugn trigger ports-configure "$APP" -} - -trigger-ports-proxy-configure-ports "$@" diff --git a/plugins/proxy/go.mod b/plugins/proxy/go.mod index 66536ab07..b22f035ad 100644 --- a/plugins/proxy/go.mod +++ b/plugins/proxy/go.mod @@ -5,7 +5,6 @@ go 1.19 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 github.com/dokku/dokku/plugins/config v0.0.0-00010101000000-000000000000 - github.com/dokku/dokku/plugins/ports v0.0.0-00010101000000-000000000000 github.com/spf13/pflag v1.0.5 ) diff --git a/plugins/proxy/src/subcommands/subcommands.go b/plugins/proxy/src/subcommands/subcommands.go index 0dd972857..d181068da 100644 --- a/plugins/proxy/src/subcommands/subcommands.go +++ b/plugins/proxy/src/subcommands/subcommands.go @@ -6,7 +6,6 @@ import ( "strings" "github.com/dokku/dokku/plugins/common" - "github.com/dokku/dokku/plugins/ports" "github.com/dokku/dokku/plugins/proxy" flag "github.com/spf13/pflag" @@ -46,39 +45,6 @@ func main() { args.Parse(os.Args[2:]) appName := args.Arg(0) err = proxy.CommandEnable(appName, *allApps, *parallelCount) - case "ports": - args := flag.NewFlagSet("proxy:ports", flag.ExitOnError) - args.Parse(os.Args[2:]) - appName := args.Arg(0) - common.LogWarn("Deprecated: Use 'ports:list' instead") - err = ports.CommandList(appName) - case "ports-add": - args := flag.NewFlagSet("proxy:ports-add", flag.ExitOnError) - args.Parse(os.Args[2:]) - appName := args.Arg(0) - _, portMaps := common.ShiftString(args.Args()) - common.LogWarn("Deprecated: Use 'ports:add' instead") - err = ports.CommandAdd(appName, portMaps) - case "ports-clear": - args := flag.NewFlagSet("proxy:ports-clear", flag.ExitOnError) - args.Parse(os.Args[2:]) - appName := args.Arg(0) - common.LogWarn("Deprecated: Use 'ports:clear' instead") - err = ports.CommandClear(appName) - case "ports-remove": - args := flag.NewFlagSet("proxy:ports-remove", flag.ExitOnError) - args.Parse(os.Args[2:]) - appName := args.Arg(0) - _, portMaps := common.ShiftString(args.Args()) - common.LogWarn("Deprecated: Use 'ports:remove' instead") - err = ports.CommandRemove(appName, portMaps) - case "ports-set": - args := flag.NewFlagSet("proxy:ports-set", flag.ExitOnError) - args.Parse(os.Args[2:]) - appName := args.Arg(0) - _, portMaps := common.ShiftString(args.Args()) - common.LogWarn("Deprecated: Use 'ports:set' instead") - err = ports.CommandSet(appName, portMaps) case "report": args := flag.NewFlagSet("proxy:report", flag.ExitOnError) format := args.String("format", "stdout", "format: [ stdout | json ]") From 1adbcf7e2dbf6b2bb6573aeef81a8a2383a82a98 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 16 Oct 2023 00:21:16 -0400 Subject: [PATCH 12/14] docs: document future removal of deprecated CHECKS file format This will be removed in the future in favor of defining healthchecks in the app.json file. --- docs/appendices/0.32.0-migration-guide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/appendices/0.32.0-migration-guide.md b/docs/appendices/0.32.0-migration-guide.md index 04661642e..762bccf29 100644 --- a/docs/appendices/0.32.0-migration-guide.md +++ b/docs/appendices/0.32.0-migration-guide.md @@ -17,6 +17,7 @@ - post-build-dockerfile - post-build-lambda - post-build-pack +- The `CHECKS` file was deprecated in the previous release in favor of defining healthchecks in the `app.json` file. It's support and auto-migration to healthchecks in the `app.json` file will be removed in the next release. See the [zero-downtime deploy documentation](/docs/deployment/zero-downtime-deploys.md) for more information on how the new zero downtime check format works. ## Removals From 30b8a25cedffc660b8664cf14102d875f7108cb8 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 16 Oct 2023 00:10:50 -0400 Subject: [PATCH 13/14] feat: upgrade golang to 1.21 --- .devcontainer/Dockerfile | 6 ++++-- common.mk | 2 +- contrib/build-dokku.Dockerfile | 1 + docs/development/plugin-triggers.md | 1 - plugins/app-json/go.mod | 2 +- plugins/app-json/go.sum | 6 ++++++ plugins/apps/go.mod | 2 +- plugins/apps/go.sum | 6 ++++++ plugins/builder/go.mod | 2 +- plugins/builder/go.sum | 6 ++++++ plugins/buildpacks/go.mod | 2 +- plugins/buildpacks/go.sum | 6 ++++++ plugins/common/go.mod | 2 +- plugins/common/go.sum | 6 ++++++ plugins/config/go.mod | 2 +- plugins/config/go.sum | 6 ++++++ plugins/cron/go.mod | 2 +- plugins/cron/go.sum | 10 ++++++++++ plugins/docker-options/go.mod | 2 +- plugins/docker-options/go.sum | 6 ++++++ plugins/logs/go.mod | 2 +- plugins/logs/go.sum | 6 ++++++ plugins/network/go.mod | 2 +- plugins/network/go.sum | 6 ++++++ plugins/nginx-vhosts/go.mod | 2 +- plugins/ports/go.mod | 2 +- plugins/ports/go.sum | 6 ++++++ plugins/proxy/go.mod | 2 +- plugins/proxy/go.sum | 6 ++++++ plugins/ps/go.mod | 2 +- plugins/ps/go.sum | 6 ++++++ plugins/registry/go.mod | 2 +- plugins/registry/go.sum | 6 ++++++ plugins/repo/go.mod | 2 +- plugins/repo/go.sum | 6 ++++++ plugins/resource/go.mod | 2 +- plugins/resource/go.sum | 6 ++++++ plugins/scheduler-docker-local/go.mod | 2 +- plugins/scheduler-docker-local/go.sum | 10 ++++++++++ plugins/scheduler/go.mod | 2 +- plugins/scheduler/go.sum | 6 ++++++ tests/apps/gogrpc/go.mod | 2 +- tests/apps/zombies-buildpack/go.mod | 2 +- tests/apps/zombies-dockerfile-no-tini/go.mod | 2 +- tests/apps/zombies-dockerfile-tini/go.mod | 2 +- 45 files changed, 145 insertions(+), 27 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index d4a923c63..4e40f79ef 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -8,8 +8,10 @@ RUN apt-get install --no-install-recommends -y build-essential file nano && \ rm -rf /var/lib/apt/lists/* ARG TARGETARCH -RUN wget https://dl.google.com/go/go1.19.6.linux-${TARGETARCH}.tar.gz && \ - tar -xvf go1.19.6.linux-${TARGETARCH}.tar.gz && \ +COPY common.mk common.mk +RUN GOLANG_VERSION=$(grep BUILD_IMAGE common.mk | cut -d' ' -f3 | cut -d':' -f2) && \ + wget https://dl.google.com/go/go${GOLANG_VERSION}.linux-${TARGETARCH}.tar.gz && \ + tar -xvf go${GOLANG_VERSION}.linux-${TARGETARCH}.tar.gz && \ mv go /usr/local RUN GOROOT=/usr/local/go /usr/local/go/bin/go install golang.org/x/tools/gopls@latest 2>&1 diff --git a/common.mk b/common.mk index 648dbe935..1f96c4cec 100644 --- a/common.mk +++ b/common.mk @@ -1,7 +1,7 @@ GO_ARGS ?= GO_PLUGIN_MAKE_TARGET ?= build GO_REPO_ROOT := /go/src/github.com/dokku/dokku -BUILD_IMAGE := golang:1.19.6 +BUILD_IMAGE := golang:1.21.3 GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT) diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile index 0f7c44873..04342fc45 100644 --- a/contrib/build-dokku.Dockerfile +++ b/contrib/build-dokku.Dockerfile @@ -21,6 +21,7 @@ RUN make deb-setup sshcommand plugn COPY . ${WORKDIR} ENV GOPATH=/go +ENV GOROOT=/usr/local/go FROM builder as amd64 diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index a565068c9..c1f2f6ce8 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -2626,7 +2626,6 @@ DOKKU_SCHEDULER="$1"; APP="$2"; IMAGE_TAG="$3"; ### `scheduler-post-deploy-process` - > [!WARNING] > The scheduler plugin trigger apis are under development and may change > between minor releases until the 1.0 release. diff --git a/plugins/app-json/go.mod b/plugins/app-json/go.mod index a3e487d0b..500cf348b 100644 --- a/plugins/app-json/go.mod +++ b/plugins/app-json/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/app-json -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/app-json/go.sum b/plugins/app-json/go.sum index 653a4918f..c025d7342 100644 --- a/plugins/app-json/go.sum +++ b/plugins/app-json/go.sum @@ -3,20 +3,26 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/apps/go.mod b/plugins/apps/go.mod index 20fb5d9e4..f1caa239b 100644 --- a/plugins/apps/go.mod +++ b/plugins/apps/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/apps -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/apps/go.sum b/plugins/apps/go.sum index 129168531..3fe8d3f62 100644 --- a/plugins/apps/go.sum +++ b/plugins/apps/go.sum @@ -3,18 +3,24 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/builder/go.mod b/plugins/builder/go.mod index 979098c48..5060d8984 100644 --- a/plugins/builder/go.mod +++ b/plugins/builder/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/builder -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/builder/go.sum b/plugins/builder/go.sum index 129168531..3fe8d3f62 100644 --- a/plugins/builder/go.sum +++ b/plugins/builder/go.sum @@ -3,18 +3,24 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/buildpacks/go.mod b/plugins/buildpacks/go.mod index ed558e013..43b535af4 100644 --- a/plugins/buildpacks/go.mod +++ b/plugins/buildpacks/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/buildpacks -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/buildpacks/go.sum b/plugins/buildpacks/go.sum index 129168531..3fe8d3f62 100644 --- a/plugins/buildpacks/go.sum +++ b/plugins/buildpacks/go.sum @@ -3,18 +3,24 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/common/go.mod b/plugins/common/go.mod index acbef19e8..7081df0c0 100644 --- a/plugins/common/go.mod +++ b/plugins/common/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/common -go 1.19 +go 1.21 require ( github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 diff --git a/plugins/common/go.sum b/plugins/common/go.sum index 14c9b57e4..38d8143ce 100644 --- a/plugins/common/go.sum +++ b/plugins/common/go.sum @@ -3,16 +3,21 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/onsi/ginkgo/v2 v2.12.0 h1:UIVDowFPwpg6yMUpPjGkYvf06K3RAiJXUhCxEwQVHRI= +github.com/onsi/ginkgo/v2 v2.12.0/go.mod h1:ZNEzXISYlqpb8S36iN71ifqLi3vVD1rVJGvWRCJOUpQ= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -26,6 +31,7 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/plugins/config/go.mod b/plugins/config/go.mod index d02e20204..bf46d5371 100644 --- a/plugins/config/go.mod +++ b/plugins/config/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/config -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/config/go.sum b/plugins/config/go.sum index 1cbeed310..ce3fc865b 100644 --- a/plugins/config/go.sum +++ b/plugins/config/go.sum @@ -3,18 +3,23 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/joho/godotenv v1.2.0 h1:vGTvz69FzUFp+X4/bAkb0j5BoLC+9bpqTWY8mjhA9pc= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/onsi/ginkgo/v2 v2.12.0 h1:UIVDowFPwpg6yMUpPjGkYvf06K3RAiJXUhCxEwQVHRI= +github.com/onsi/ginkgo/v2 v2.12.0/go.mod h1:ZNEzXISYlqpb8S36iN71ifqLi3vVD1rVJGvWRCJOUpQ= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -28,6 +33,7 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/plugins/cron/go.mod b/plugins/cron/go.mod index bb950ccc8..2e4b489e2 100644 --- a/plugins/cron/go.mod +++ b/plugins/cron/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/cron -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/app-json v0.0.0-00010101000000-000000000000 diff --git a/plugins/cron/go.sum b/plugins/cron/go.sum index f37ee5b4a..d996c85ca 100644 --- a/plugins/cron/go.sum +++ b/plugins/cron/go.sum @@ -3,30 +3,40 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= +github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97 h1:3RPlVWzZ/PDqmVuf/FKHARG5EMid/tl7cv54Sw/QRVY= +github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= mvdan.cc/sh/v3 v3.7.0 h1:lSTjdP/1xsddtaKfGg7Myu7DnlHItd3/M2tomOcNNBg= mvdan.cc/sh/v3 v3.7.0/go.mod h1:K2gwkaesF/D7av7Kxl0HbF5kGOd2ArupNTX3X44+8l8= diff --git a/plugins/docker-options/go.mod b/plugins/docker-options/go.mod index 8e3ed5c10..55071a128 100644 --- a/plugins/docker-options/go.mod +++ b/plugins/docker-options/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/docker-options -go 1.19 +go 1.21 require github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/docker-options/go.sum b/plugins/docker-options/go.sum index 52569f246..9766e77c1 100644 --- a/plugins/docker-options/go.sum +++ b/plugins/docker-options/go.sum @@ -3,16 +3,22 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/logs/go.mod b/plugins/logs/go.mod index 4d2be625d..d469c2b3f 100644 --- a/plugins/logs/go.mod +++ b/plugins/logs/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/logs -go 1.19 +go 1.21 require ( github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 diff --git a/plugins/logs/go.sum b/plugins/logs/go.sum index 9b64c4a66..5f931157a 100644 --- a/plugins/logs/go.sum +++ b/plugins/logs/go.sum @@ -3,20 +3,26 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/joncalhoun/qson v0.0.0-20200422171543-84433dcd3da0 h1:ct2XA1aDw8A07Dr8gtrrZgIgLKcZNAl2o9nn0WRMK4Y= github.com/joncalhoun/qson v0.0.0-20200422171543-84433dcd3da0/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/network/go.mod b/plugins/network/go.mod index 91b3ccaf9..1084d307c 100644 --- a/plugins/network/go.mod +++ b/plugins/network/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/network -go 1.19 +go 1.21 require ( github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 diff --git a/plugins/network/go.sum b/plugins/network/go.sum index 129168531..3fe8d3f62 100644 --- a/plugins/network/go.sum +++ b/plugins/network/go.sum @@ -3,18 +3,24 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/nginx-vhosts/go.mod b/plugins/nginx-vhosts/go.mod index 299dddebf..da411e868 100644 --- a/plugins/nginx-vhosts/go.mod +++ b/plugins/nginx-vhosts/go.mod @@ -1,3 +1,3 @@ module github.com/dokku/dokku/plugins/nginx-vhosts -go 1.19 +go 1.21 diff --git a/plugins/ports/go.mod b/plugins/ports/go.mod index 36b2f2487..a11b58461 100644 --- a/plugins/ports/go.mod +++ b/plugins/ports/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/ports -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/ports/go.sum b/plugins/ports/go.sum index e60036c51..d33831bc6 100644 --- a/plugins/ports/go.sum +++ b/plugins/ports/go.sum @@ -3,20 +3,26 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/joho/godotenv v1.2.0 h1:vGTvz69FzUFp+X4/bAkb0j5BoLC+9bpqTWY8mjhA9pc= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/proxy/go.mod b/plugins/proxy/go.mod index 66536ab07..8db0b2699 100644 --- a/plugins/proxy/go.mod +++ b/plugins/proxy/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/proxy -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/proxy/go.sum b/plugins/proxy/go.sum index e60036c51..d33831bc6 100644 --- a/plugins/proxy/go.sum +++ b/plugins/proxy/go.sum @@ -3,20 +3,26 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/joho/godotenv v1.2.0 h1:vGTvz69FzUFp+X4/bAkb0j5BoLC+9bpqTWY8mjhA9pc= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/ps/go.mod b/plugins/ps/go.mod index c6bde1ffa..a376fca74 100644 --- a/plugins/ps/go.mod +++ b/plugins/ps/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/ps -go 1.19 +go 1.21 require ( github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 diff --git a/plugins/ps/go.sum b/plugins/ps/go.sum index fdaa9fe58..f0d946d03 100644 --- a/plugins/ps/go.sum +++ b/plugins/ps/go.sum @@ -5,6 +5,7 @@ github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hj github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/joho/godotenv v1.2.0 h1:vGTvz69FzUFp+X4/bAkb0j5BoLC+9bpqTWY8mjhA9pc= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= @@ -13,19 +14,24 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/registry/go.mod b/plugins/registry/go.mod index 812bcced5..b266f36bf 100644 --- a/plugins/registry/go.mod +++ b/plugins/registry/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/registry -go 1.19 +go 1.21 require ( github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 diff --git a/plugins/registry/go.sum b/plugins/registry/go.sum index 129168531..3fe8d3f62 100644 --- a/plugins/registry/go.sum +++ b/plugins/registry/go.sum @@ -3,18 +3,24 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/repo/go.mod b/plugins/repo/go.mod index 9105ad35f..a2cd3a5f0 100644 --- a/plugins/repo/go.mod +++ b/plugins/repo/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/repo -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/repo/go.sum b/plugins/repo/go.sum index 129168531..3fe8d3f62 100644 --- a/plugins/repo/go.sum +++ b/plugins/repo/go.sum @@ -3,18 +3,24 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/resource/go.mod b/plugins/resource/go.mod index de53236dd..c61804fdb 100644 --- a/plugins/resource/go.mod +++ b/plugins/resource/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/resource -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/resource/go.sum b/plugins/resource/go.sum index 129168531..3fe8d3f62 100644 --- a/plugins/resource/go.sum +++ b/plugins/resource/go.sum @@ -3,18 +3,24 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/plugins/scheduler-docker-local/go.mod b/plugins/scheduler-docker-local/go.mod index 9ad46e1c9..44cb5abc1 100644 --- a/plugins/scheduler-docker-local/go.mod +++ b/plugins/scheduler-docker-local/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/scheduler-docker-local -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/scheduler-docker-local/go.sum b/plugins/scheduler-docker-local/go.sum index 385fd8df6..1cd32f08f 100644 --- a/plugins/scheduler-docker-local/go.sum +++ b/plugins/scheduler-docker-local/go.sum @@ -3,28 +3,38 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= +github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97 h1:3RPlVWzZ/PDqmVuf/FKHARG5EMid/tl7cv54Sw/QRVY= +github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= mvdan.cc/sh/v3 v3.7.0 h1:lSTjdP/1xsddtaKfGg7Myu7DnlHItd3/M2tomOcNNBg= mvdan.cc/sh/v3 v3.7.0/go.mod h1:K2gwkaesF/D7av7Kxl0HbF5kGOd2ArupNTX3X44+8l8= diff --git a/plugins/scheduler/go.mod b/plugins/scheduler/go.mod index 428f7463b..6e687568c 100644 --- a/plugins/scheduler/go.mod +++ b/plugins/scheduler/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokku/plugins/scheduler -go 1.19 +go 1.21 require ( github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000 diff --git a/plugins/scheduler/go.sum b/plugins/scheduler/go.sum index e60036c51..d33831bc6 100644 --- a/plugins/scheduler/go.sum +++ b/plugins/scheduler/go.sum @@ -3,20 +3,26 @@ github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcju github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/joho/godotenv v1.2.0 h1:vGTvz69FzUFp+X4/bAkb0j5BoLC+9bpqTWY8mjhA9pc= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk= github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/apps/gogrpc/go.mod b/tests/apps/gogrpc/go.mod index b83836ede..a0fbbc33f 100644 --- a/tests/apps/gogrpc/go.mod +++ b/tests/apps/gogrpc/go.mod @@ -1,6 +1,6 @@ module github.com/dokku/dokko/tests/apps/gorpc -go 1.19 +go 1.21 require ( github.com/golang/protobuf v1.5.3 diff --git a/tests/apps/zombies-buildpack/go.mod b/tests/apps/zombies-buildpack/go.mod index eb7eb9262..eb7c2644e 100644 --- a/tests/apps/zombies-buildpack/go.mod +++ b/tests/apps/zombies-buildpack/go.mod @@ -1,3 +1,3 @@ module dokku.me/web -go 1.19 +go 1.21 diff --git a/tests/apps/zombies-dockerfile-no-tini/go.mod b/tests/apps/zombies-dockerfile-no-tini/go.mod index eb7eb9262..eb7c2644e 100644 --- a/tests/apps/zombies-dockerfile-no-tini/go.mod +++ b/tests/apps/zombies-dockerfile-no-tini/go.mod @@ -1,3 +1,3 @@ module dokku.me/web -go 1.19 +go 1.21 diff --git a/tests/apps/zombies-dockerfile-tini/go.mod b/tests/apps/zombies-dockerfile-tini/go.mod index eb7eb9262..eb7c2644e 100644 --- a/tests/apps/zombies-dockerfile-tini/go.mod +++ b/tests/apps/zombies-dockerfile-tini/go.mod @@ -1,3 +1,3 @@ module dokku.me/web -go 1.19 +go 1.21 From 787829e26369322ed827326ff429ab8fd90213e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 13:53:54 +0000 Subject: [PATCH 14/14] chore(deps): bump mkdocs-material from 9.4.5 to 9.4.6 in /docs/_build Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.4.5 to 9.4.6. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.4.5...9.4.6) --- updated-dependencies: - dependency-name: mkdocs-material dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- docs/_build/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_build/requirements.txt b/docs/_build/requirements.txt index c02420a07..76311a1b4 100644 --- a/docs/_build/requirements.txt +++ b/docs/_build/requirements.txt @@ -8,7 +8,7 @@ MarkupSafe==2.1.3 mergedeep==1.3.4 mkdocs==1.5.3 mkdocs-exclude==1.0.2 -mkdocs-material==9.4.5 +mkdocs-material==9.4.6 mkdocs-material-extensions==1.2 packaging==23.2 Pygments==2.16.1