Merge branch 'master' into cn

* master: (427 commits)
  chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/multi
  chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/multi
  chore(deps): bump python in /docs/_build
  chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
  chore(deps): bump qs from 6.14.1 to 6.14.2 in /tests/apps/checks-root
  chore(deps): bump rack from 3.2.4 to 3.2.5 in /tests/apps/ruby
  fix: call correct function for limiting letsencrypt to certain domains
  chore(deps): bump gunicorn in /tests/apps/python-flask
  chore(deps): bump whitenoise in /tests/apps/dockerfile-release
  chore(deps): bump phusion/baseimage from noble-1.0.2 to noble-1.0.3
  chore(deps): bump actions/upload-artifact from 6 to 7
  chore(deps): bump actions/download-artifact from 7 to 8
  chore(deps): bump github.com/traefik/traefik/v2
  chore(deps): bump gunicorn in /tests/apps/dockerfile-release
  chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/python-flask
  chore(deps): bump traefik from 3.6.7 to 3.6.9 in /plugins/traefik-vhosts
  chore(deps): bump mkdocs-material from 9.7.1 to 9.7.3 in /docs/_build
  chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
  chore(deps): bump dj-database-url in /tests/apps/dockerfile-release
  chore(deps): bump werkzeug in /tests/apps/python-flask
  ...

# Conflicts:
#	common.mk
#	contrib/dependencies.json
This commit is contained in:
apple
2026-03-02 16:41:58 +08:00
416 changed files with 10609 additions and 2298 deletions

View File

@@ -135,20 +135,33 @@ main() {
mv docs-main docs
git checkout -- mkdocs.yml docs
if [[ "$(git -C tmp/docs-build ls-files -dmo)" == "docs/sitemap.xml.gz" ]]; then
echo "====> Checking for file changes"
changes=$(git -C tmp/docs-build ls-files -dmo)
if [[ -z "$changes" ]]; then
echo " ! No doc changes found"
exit 0
fi
if [[ "$changes" == "docs/sitemap.xml.gz" ]]; then
echo " ! No doc changes found"
git -C tmp/docs-build checkout -- docs/sitemap.xml.gz
else
echo "====> Pushing docs"
git -C tmp/docs-build add .
git -C tmp/docs-build commit -m "chore: regenerate docs"
if [[ -n "$BOT_GITHUB_USERNAME" ]] && [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
git -C tmp/docs-build remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/docs.git"
fi
git -C tmp/docs-build push origin master
exit 0
fi
echo "====> Changes found"
echo "$changes"
echo "====> Committing changes"
git -C tmp/docs-build add .
git -C tmp/docs-build commit -m "chore: regenerate docs"
echo "====> Pushing changes"
if [[ -n "$BOT_GITHUB_USERNAME" ]] && [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
git -C tmp/docs-build remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/docs.git"
fi
git -C tmp/docs-build push origin master
}
main "$@"

View File

@@ -7,7 +7,7 @@ ARG WORKDIR=/go/src/github.com/dokku/dokku
WORKDIR ${WORKDIR}
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://go.dev/dl/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux.tar.gz \
&& cp /usr/local/go/bin/* /usr/local/bin \
&& mkdir -p ${WORKDIR}/contrib
@@ -23,7 +23,7 @@ COPY . ${WORKDIR}
ENV GOPATH=/go
ENV GOROOT=/usr/local/go
FROM builder as amd64
FROM builder AS amd64
ARG PLUGIN_MAKE_TARGET
ARG DOKKU_VERSION=master
@@ -38,7 +38,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
make version copyfiles \
&& make deb-dokku
FROM builder as arm64
FROM builder AS arm64
COPY --from=amd64 /tmp /tmp
COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated

View File

@@ -4,48 +4,48 @@
"name": "docker-container-healthchecker",
"version": "0.14.0",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-arm64"
}
},
{
"name": "docker-image-labeler",
"version": "0.8.1",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-arm64"
}
},
{
"name": "lambda-builder",
"version": "0.9.1",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-arm64"
}
},
{
"name": "netrc",
"version": "0.10.2",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-arm64"
}
},
{
"name": "procfile-util",
"version": "0.20.3",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-arm64"
}
},
{
"name": "sshcommand",
"version": "0.20.0",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand",
"arm64": "https://gh-proxy.com/https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand"
"amd64": "https://hub.diyla.com/https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand",
"arm64": "https://hub.diyla.com/https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand"
}
}
],
@@ -54,16 +54,16 @@
"name": "gliderlabs-sigil",
"version": "0.11.4",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-arm64"
}
},
{
"name": "plugn",
"version": "0.16.0",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-arm64"
}
}
],
@@ -72,24 +72,24 @@
"name": "dokku-event-listener",
"version": "0.17.2",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-amd64",
"arm64": "https://gh-proxy.com/https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-arm64"
}
},
{
"name": "dokku-update",
"version": "0.9.6",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update",
"arm64": "https://gh-proxy.com/https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update"
"amd64": "https://hub.diyla.com/https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update",
"arm64": "https://hub.diyla.com/https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update"
}
},
{
"name": "herokuish",
"version": "0.11.3",
"version": "0.11.8",
"urls": {
"amd64": "https://gh-proxy.com/https://github.com/gliderlabs/herokuish/releases/download/v0.11.3/herokuish_0.11.3_linux_x86_64.tgz",
"arm64": "https://gh-proxy.com/https://github.com/gliderlabs/herokuish/releases/download/v0.11.3/herokuish_0.11.3_linux_x86_64.tgz"
"amd64": "https://hub.diyla.com/https://github.com/gliderlabs/herokuish/releases/download/v0.11.8/herokuish_0.11.8_linux_x86_64.tgz",
"arm64": "https://hub.diyla.com/https://github.com/gliderlabs/herokuish/releases/download/v0.11.8/herokuish_0.11.8_linux_x86_64.tgz"
}
}
]

View File

@@ -1,8 +1,9 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
export DOKKU_PORT=${DOKKU_PORT:=22}
export DOKKU_PORT=${DOKKU_PORT:=}
export DOKKU_HOST=${DOKKU_HOST:=}
export DOKKU_APP_PATH=${DOKKU_APP_PATH:=}
fn-random-number() {
[[ -n "$1" ]] && RANGE="$1"
@@ -61,12 +62,42 @@ fn-dokku-host() {
echo "$DOKKU_HOST"
}
fn-dokku-app() {
declare DOKKU_GIT_REMOTE="$1" DOKKU_REMOTE_HOST="$2"
remote_output="$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | awk '{print $2}')"
# check if there is a scheme
if echo "$remote_output" | grep -qEi "ssh://"; then
echo "$remote_output" | grep -Ei "ssh://dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f2 -d'/' 2>/dev/null
else
echo "$remote_output" | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f2 -d':' 2>/dev/null
fi
}
fn-dokku-port() {
declare DOKKU_GIT_REMOTE="$1" DOKKU_REMOTE_HOST="$2"
remote_output="$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | awk '{print $2}')"
if echo "$remote_output" | grep -qEi "ssh://"; then
local output="$(echo "$remote_output" | grep -Ei "ssh://dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f1 -d'/' 2>/dev/null)"
# check if output has a : and if so, get the port
if echo "$output" | grep -qEi ":"; then
echo "$output" | cut -f2 -d':' 2>/dev/null
else
echo "22"
fi
else
echo "22"
fi
}
fn-get-remote() {
git config dokku.remote 2>/dev/null || echo "dokku"
}
main() {
declare CMD="$1" APP_ARG="$2"
local APP="" DOKKU_GIT_REMOTE="$(fn-get-remote)" DOKKU_REMOTE_HOST=""
local cmd_set=false next_index=1 skip=false args=("$@")
@@ -84,6 +115,10 @@ main() {
APP=${args[$next_index]}
skip=true
shift 2
elif [[ "$arg" == "--app-path" ]]; then
DOKKU_APP_PATH=${args[$next_index]}
skip=true
shift 2
elif [[ "$arg" == "--remote" ]]; then
DOKKU_GIT_REMOTE=${args[$next_index]}
skip=true
@@ -103,6 +138,11 @@ main() {
next_index=$((next_index + 1))
done
if [[ -n "$DOKKU_APP_PATH" ]]; then
pushd "$DOKKU_APP_PATH" &>/dev/null || exit 1
trap 'popd &>/dev/null || true' RETURN INT TERM
fi
DOKKU_REMOTE_HOST="$(fn-dokku-host "$DOKKU_GIT_REMOTE" "$DOKKU_HOST")"
if [[ -z "$DOKKU_REMOTE_HOST" ]] && [[ "$CMD" != remote ]] && [[ "$CMD" != remote:* ]]; then
fn-client-help-msg
@@ -111,14 +151,28 @@ main() {
if [[ -z "$APP" ]]; then
if [[ -d .git ]] || git rev-parse --git-dir &>/dev/null; then
set +e
APP=$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
APP="$(fn-dokku-app "$DOKKU_GIT_REMOTE" "$DOKKU_REMOTE_HOST")"
set -e
else
echo " ! This is not a git repository" 1>&2
fi
fi
if [[ -z "$DOKKU_PORT" ]]; then
DOKKU_PORT="$(fn-dokku-port "$DOKKU_GIT_REMOTE" "$DOKKU_REMOTE_HOST")"
fi
case "$CMD" in
remote:show)
echo "dokku-app: $APP"
echo "dokku-git-remote: $DOKKU_GIT_REMOTE"
echo "dokku-host: $DOKKU_HOST"
echo "dokku-port: $DOKKU_PORT"
echo "dokku-remote-host: $DOKKU_REMOTE_HOST"
echo "dokku-ssh-user: dokku"
echo "dokku-constructed-remote: ssh://dokku@$DOKKU_REMOTE_HOST:$DOKKU_PORT/$APP"
exit 0
;;
apps:create)
if [[ -z "$APP" ]] && [[ -z "$APP_ARG" ]]; then
APP=$(fn-random-name)