Commit Graph

13655 Commits

Author SHA1 Message Date
Dokku Bot
f6439d3641 Release 0.38.5
# History

## 0.38.5

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.5/bootstrap.sh
sudo DOKKU_TAG=v0.38.5 bash bootstrap.sh
```

### Bug Fixes

- #8627: @josegonzalez Preserve explicit https:443 port mappings on cert update

### New Features

- #8629: @josegonzalez Attach vector container to additional docker networks
- #8624: @josegonzalez Expose certs-set and certs-remove plugin triggers
- #8626: @josegonzalez Split caddy report tls-internal into raw, computed, and global

### Tests

- #8620: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 287 to 288 in /tests/apps/php
- #8621: @dependabot[bot] chore(deps): bump ruby from 4.0.3 to 4.0.4 in /tests/apps/dockerfile-entrypoint

### Dependencies

- #8622: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.36.0 to 1.36.1 in /plugins/scheduler-k3s
v0.38.5
2026-05-13 04:40:12 +00:00
Jose Diaz-Gonzalez
3544bdd308 Merge pull request #8629 from dokku/8628-logs-support-attaching-the-vector-container-to-additional-docker-networks
Attach vector container to additional docker networks
2026-05-13 00:38:49 -04:00
Jose Diaz-Gonzalez
6cb5d472e5 Merge pull request #8624 from dokku/8623-expose-certs-add-and-certs-remove-to-plugins-via-triggers-or-sourceable-functions
Expose certs-set and certs-remove plugin triggers
2026-05-13 00:09:47 -04:00
Jose Diaz-Gonzalez
a4e6d06fd1 fix: reject app-level vector-networks and vector-image, drop bridge from joined nets
The Docker daemon refuses any endpoint settings on the default bridge network and `docker compose` unconditionally attaches the service name as an alias on every joined network, so combining bridge with user-defined networks via compose's `networks:` block is impossible. When `vector-networks` is set, the compose template now joins only the configured networks; outbound to external sinks still works through user-defined network NAT. Additionally, `vector-image` and `vector-networks` are both global-only but `common.CommandPropertySet` silently accepts them at app level by merging global-only keys into the valid-property set, so both now reject explicitly in `validateSetValue`.
2026-05-12 23:45:10 -04:00
Jose Diaz-Gonzalez
b4e3d85024 test: route run_plugn_trigger through dokku plugin:trigger
The dokku entrypoint already exports DOKKU_ROOT, PLUGIN_PATH, PLUGIN_AVAILABLE_PATH, PLUGIN_ENABLED_PATH, PLUGIN_CORE_AVAILABLE_PATH and DOKKU_LIB_ROOT before invoking plugn. Delegating to `dokku plugin:trigger` keeps the helper at env-var parity with the production trigger path without enumerating every var the helper must forward.
2026-05-12 22:36:47 -04:00
Jose Diaz-Gonzalez
282b2df71a test: forward DOKKU_ROOT from run_plugn_trigger
Triggers that call verify_app_name or otherwise reference $DOKKU_ROOT fail under bats because the helper did not forward DOKKU_ROOT to the plugn subshell. The production dokku entrypoint exports DOKKU_ROOT before invoking plugn, so bring the helper to env-var parity.
2026-05-12 22:30:49 -04:00
Jose Diaz-Gonzalez
d00a7d741a feat: attach vector container to additional docker networks
Adds a new global `vector-networks` property on the logs plugin that takes a comma-separated list of Docker networks. When set, the rendered compose file declares each network plus `bridge` as external and joins them on the vector service, so `docker compose up` reconciles attachments on every `logs:vector-start`. When unset, the existing `network_mode: bridge` template is preserved unchanged. The value is validated against `docker network inspect` at set time, rejects the reserved `bridge` entry, and is surfaced in `dokku logs:report` via `--logs-vector-global-networks`.
2026-05-12 22:05:50 -04:00
Jose Diaz-Gonzalez
a9b2f56ee8 test: forward PLUGIN_AVAILABLE_PATH and PLUGIN_ENABLED_PATH from run_plugn_trigger
The dokku entrypoint exports both vars before invoking plugn, so triggers that source `$PLUGIN_AVAILABLE_PATH/...` work in production. The helper only forwarded PLUGIN_PATH / PLUGIN_CORE_AVAILABLE_PATH / DOKKU_LIB_ROOT, so triggers that follow the same pattern fail under bats.
2026-05-12 21:31:58 -04:00
Jose Diaz-Gonzalez
b096d0f131 Merge pull request #8627 from dokku/8619-certs-add-rewrites-explicit-https-443-port-mappings
Preserve explicit https:443 port mappings on cert update
2026-05-12 21:29:47 -04:00
Jose Diaz-Gonzalez
f6448cef2c Merge pull request #8626 from dokku/8625-caddy-report-tls-internal-has-no-raw-vs-computed-key-separation
Split caddy report tls-internal into raw, computed, and global
2026-05-12 20:34:18 -04:00
Jose Diaz-Gonzalez
2b963884b4 test: invoke certs trigger tests via run_plugn_trigger helper
The new certs-set / certs-remove tests called plugn directly via /bin/bash -c, which exits with 'PLUGIN_PATH is not set in environment' under the bats runner. Route the calls through the existing run_plugn_trigger helper so the required PLUGIN_PATH / PLUGIN_CORE_AVAILABLE_PATH / DOKKU_LIB_ROOT vars are set.
2026-05-12 20:21:07 -04:00
Jose Diaz-Gonzalez
cecd07d914 fix: preserve explicit https:443 port mappings on cert update
The ports plugin's `post-certs-update` trigger was rewriting every `https:443:*` mapping from the app's `http:80:*` mappings, silently overwriting any user-defined mapping such as `https:443:443` used by apps that terminate TLS inside the container. The trigger now skips the rewrite when an `https:443:*` mapping already exists, keeping the default behavior only when the app has no explicit HTTPS mapping configured.

Closes #8619.
2026-05-12 19:02:47 -04:00
Jose Diaz-Gonzalez
436825b782 feat: split caddy report tls-internal into raw, computed, and global
The bare `tls-internal` key previously returned the computed value, so external tooling could not tell whether the property had been set on the app or was merely defaulting to `false`. The property is now also configurable with `--global`, the report exposes `computed-tls-internal` and `global-tls-internal` keys alongside the bare raw key, and the deploy path honors the per-app value with a fallback to the global value before the built-in default. Closes #8625.
2026-05-12 18:54:26 -04:00
Jose Diaz-Gonzalez
460d92e21c feat: expose certs-set and certs-remove plugin triggers
Adds `certs-set` and `certs-remove` plugin triggers so other plugins can install or remove an app's SSL cert/key pair without shelling out to the `dokku certs:add` / `dokku certs:remove` subcommands. Shared implementations live as `fn-certs-set` and `fn-certs-remove` in `plugins/certs/internal-functions`, with the subcommands and the new triggers calling `verify_app_name` before delegating.
2026-05-12 18:37:06 -04:00
Jose Diaz-Gonzalez
12c00b57fc Merge pull request #8620 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-288
chore(deps-dev): bump heroku/heroku-buildpack-php from 287 to 288 in /tests/apps/php
2026-05-12 18:13:53 -04:00
Jose Diaz-Gonzalez
db74bd4b5e Merge pull request #8621 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.4
chore(deps): bump ruby from 4.0.3 to 4.0.4 in /tests/apps/dockerfile-entrypoint
2026-05-12 18:13:45 -04:00
Jose Diaz-Gonzalez
5c12d7733d Merge pull request #8622 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.36.1
chore(deps): bump k8s.io/kubernetes from 1.36.0 to 1.36.1 in /plugins/scheduler-k3s
2026-05-12 18:13:33 -04:00
dependabot[bot]
ef36fe0a53 chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.36.0 to 1.36.1.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.36.0...v1.36.1)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.36.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 19:50:09 +00:00
dependabot[bot]
fce9cf8bc7 chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.3 to 4.0.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 19:48:15 +00:00
dependabot[bot]
71fd53d2e1 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 287 to 288.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v287...v288)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '288'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 19:47:16 +00:00
Dokku Bot
ada4a82d77 Release 0.38.4
# History

## 0.38.4

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.4/bootstrap.sh
sudo DOKKU_TAG=v0.38.4 bash bootstrap.sh
```

### Bug Fixes

- #8615: @josegonzalez Reject per-app sets for openresty global-only properties
- #8613: @josegonzalez Expose raw deploy-branch and keep-git-dir in git:report
- #8549: @josegonzalez Route CNB images through launcher on scheduler-k3s

### New Features

- #8614: @josegonzalez Split scheduler-docker-local report into raw, computed, and global

### Documentation

- #8603: @cheif Add `dokku-http-oauth` to community plugins

### Tests

- #8618: @josegonzalez Isolate scheduler-k3s registry tags per bats file
- #8616: @josegonzalez Migrate from junit_files to files in EnricoMi/publish-unit-test-result-action
- #8617: @josegonzalez Upgrade actions in shared build-image compose action
- #8609: @josegonzalez Skip packer lint job on dependabot PRs
- #8604: @dependabot[bot] chore(deps): bump python from 3.14.3-bookworm to 3.15.0b1-bookworm in /tests/apps/dockerfile-release

### Dependencies

- #8606: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.50.0 to 0.51.0 in /plugins/common
- #8608: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.45 to 2.11.46 in /plugins/scheduler-k3s
- #8607: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.10.0 to 0.11.0 in /plugins/openresty-vhosts
- #8605: @dependabot[bot] chore(deps): bump python from 3.14.3-alpine to 3.15.0b1-alpine in /docs/_build
v0.38.4
2026-05-12 17:40:42 +00:00
Jose Diaz-Gonzalez
b8b0b527b0 Merge pull request #8618 from dokku/fix-k3s-exec
Isolate scheduler-k3s registry tags per bats file
2026-05-12 13:28:03 -04:00
Jose Diaz-Gonzalez
b30eb48444 test: isolate scheduler-k3s registry tags per bats file
Parallel `unit.scheduler-k3s-*` matrix jobs all pushed to the same `savant/rdmtestapp:1` tag on Docker Hub, so a herokuish run pod could pull a CNB or dockerfile image that another job had just overwritten and fail with `exec: "/exec": stat /exec: no such file or directory`. The image-repo-template now embeds the bats file basename so each job owns its own tag namespace.
2026-05-12 11:43:58 -04:00
Jose Diaz-Gonzalez
b32fb47e48 Merge pull request #8616 from dokku/josegonzalez-patch-1
Migrate from junit_files to files in EnricoMi/publish-unit-test-result-action
2026-05-12 11:24:11 -04:00
Jose Diaz-Gonzalez
e4695dc99a Merge pull request #8617 from dokku/josegonzalez-patch-2
Upgrade actions in shared build-image compose action
2026-05-12 10:57:54 -04:00
Jose Diaz-Gonzalez
7898f98488 Merge pull request #8615 from dokku/8612-openresty-set-accepts-per-app-writes-for-global-only-properties-silently-follow-up-to-8597
Reject per-app sets for openresty global-only properties
2026-05-12 01:34:57 -04:00
Jose Diaz-Gonzalez
3a36de7349 Merge pull request #8614 from dokku/8611-scheduler-docker-local-report-raw-computed-keys
Split scheduler-docker-local report into raw, computed, and global
2026-05-12 01:29:59 -04:00
Jose Diaz-Gonzalez
4551f258b2 Merge pull request #8613 from dokku/8610-git-report-deploy-branch-keep-git-dir-return-computed-value-at-bare-key-no-raw-per-app-key
Expose raw deploy-branch and keep-git-dir in git:report
2026-05-12 01:29:43 -04:00
Jose Diaz-Gonzalez
162af06c80 chore: upgrade actions in shared build-image compose action 2026-05-12 00:28:17 -04:00
Jose Diaz-Gonzalez
da52b8133d fix: migrate from junit_files to files in EnricoMi/publish-unit-test-result-action 2026-05-12 00:27:04 -04:00
Jose Diaz-Gonzalez
bc6f2da13a Merge pull request #8606 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.51.0
chore(deps): bump golang.org/x/crypto from 0.50.0 to 0.51.0 in /plugins/common
2026-05-11 23:31:04 -04:00
Jose Diaz-Gonzalez
ebdd5f2b2f fix: reject per-app sets for openresty global-only properties
`openresty:set <app>` previously accepted per-app writes for properties whose readers only consult the global store, so `:set myapp image foo` printed a success message while `:report myapp` kept showing the global default. The per-app form is now rejected with `The key '<key>' can only be set globally`, matching the behavior introduced for `caddy`, `haproxy`, and `traefik` in #8602.
2026-05-11 22:55:37 -04:00
Jose Diaz-Gonzalez
7d73cf78c4 feat: split scheduler-docker-local report into raw, computed, and global
The bare `init-process` and `parallel-schedule-count` keys previously returned the computed value, so external tooling could not tell whether a property had been set on the app or was merely defaulting. Both properties are now also configurable with `--global`, the report exposes `computed-*` and `global-*` keys alongside the bare raw keys, and the deploy path honors the global value before falling back to the linuxserver.io vendor heuristic.
2026-05-11 22:29:28 -04:00
Jose Diaz-Gonzalez
c45b95fc4d fix: expose raw deploy-branch and keep-git-dir in git:report
The bare `deploy-branch` and `keep-git-dir` keys in `git:report` returned the computed (effective) value rather than the raw per-app value, with no separate `computed-*` key to distinguish "set per-app" from "falling back to global or default". This left external tooling unable to detect a per-app unset without out-of-band state. The bare keys now hold the raw per-app value (empty when unset) and new `computed-deploy-branch` and `computed-keep-git-dir` keys hold the effective value, matching the convention used by `nginx-vhosts`, `network`, and `builder`. Closes #8610.
2026-05-11 22:18:17 -04:00
Jose Diaz-Gonzalez
db2cbd802f Merge pull request #8549 from dokku/8526-improve-scheduler-k3s-support-for-alternative-builders-cnb-etc
Route CNB images through launcher on scheduler-k3s
2026-05-11 22:01:07 -04:00
Jose Diaz-Gonzalez
22f1fcdc1f chore: bump go modules 2026-05-11 21:29:58 -04:00
dependabot[bot]
c2f927cd50 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.50.0 to 0.51.0.
- [Commits](https://github.com/golang/crypto/compare/v0.50.0...v0.51.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.51.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:29:11 -04:00
Jose Diaz-Gonzalez
541464b9c8 Merge pull request #8609 from dokku/skip-packer-lint-on-dependabot
ci: skip packer lint job on dependabot PRs
2026-05-11 21:28:39 -04:00
Jose Diaz-Gonzalez
993d727dcb ci: skip packer lint job on dependabot PRs
Dependabot PRs don't receive `secrets.DIGITALOCEAN_TOKEN`, so the `packer validate` step fails on every dependency bump. Guarding the job by PR author skips it cleanly while keeping it active for human PRs and pushes to `master`.
2026-05-11 21:27:10 -04:00
Jose Diaz-Gonzalez
228b6de482 Merge pull request #8608 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.46
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.45 to 2.11.46 in /plugins/scheduler-k3s
2026-05-11 21:17:15 -04:00
Jose Diaz-Gonzalez
bdc77c9706 Merge pull request #8607 from dokku/dependabot/docker/plugins/openresty-vhosts/dokku/openresty-docker-proxy-0.11.0
chore(deps): bump dokku/openresty-docker-proxy from 0.10.0 to 0.11.0 in /plugins/openresty-vhosts
2026-05-11 21:17:10 -04:00
Jose Diaz-Gonzalez
90e5903760 Merge pull request #8605 from dokku/dependabot/docker/docs/_build/python-3.15.0b1-alpine
chore(deps): bump python from 3.14.3-alpine to 3.15.0b1-alpine in /docs/_build
2026-05-11 21:16:10 -04:00
Jose Diaz-Gonzalez
d121eb982c Merge pull request #8604 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.15.0b1-bookworm
chore(deps): bump python from 3.14.3-bookworm to 3.15.0b1-bookworm in /tests/apps/dockerfile-release
2026-05-11 21:16:03 -04:00
dependabot[bot]
2796733119 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.45 to 2.11.46.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.46/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.45...v2.11.46)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.46
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:43:14 +00:00
dependabot[bot]
af614cd049 chore(deps): bump dokku/openresty-docker-proxy
Bumps dokku/openresty-docker-proxy from 0.10.0 to 0.11.0.

---
updated-dependencies:
- dependency-name: dokku/openresty-docker-proxy
  dependency-version: 0.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:42:13 +00:00
dependabot[bot]
194bfc6f12 chore(deps): bump python in /docs/_build
Bumps python from 3.14.3-alpine to 3.15.0b1-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b1-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:40:35 +00:00
dependabot[bot]
95b97defb7 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.14.3-bookworm to 3.15.0b1-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b1-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:40:34 +00:00
Jose Diaz-Gonzalez
b66df28d96 fix: harden scheduler-k3s cron manifests and dockerfile run startup
The cron-id label could exceed Kubernetes' 63-byte cap when commands or
schedules were long, and an all-digit job-suffix or cron-id rendered as
an unquoted YAML scalar caused the API server to reject manifests. Run
pods built from dockerfiles also occasionally hit the 10s startup wait
on a cold image pull, even though the pod was scheduled correctly.

The cron-id is now stored as an annotation and a shorter hash is used as
the selector label. Every interpolated annotation and label value in the
cron-job and deployment templates is now quoted to prevent numeric
coercion, and the run-pod wait timeout is raised to 30 seconds.
2026-05-11 14:49:58 -04:00
Jose Diaz-Gonzalez
d0588698f5 test: add scheduler-k3s run parity tests across builders
Extends bats coverage for the scheduler-k3s scheduler so that
herokuish and dockerfile builders match the cnb test surface for
`dokku run`, `dokku run:detached`, `dokku cron:run`, deployment
manifests, cronjob manifests, and Procfile-key resolution. Adds
the corresponding `app-cron-procfile.json` fixture for the python
app and `app-cron.json` / `app-cron-procfile.json` fixtures for
the dockerfile-procfile app.
2026-05-11 12:10:54 -04:00
Jose Diaz-Gonzalez
41afd7646e Merge pull request #8603 from cheif/feat/add-oauth-auth-plugin
Add `dokku-http-oauth` to community plugins
2026-05-11 11:46:44 -04:00