Commit Graph

2916 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
8d4e7d9793 fix: match docker options by shell word when removing
Options drained out of the pre-0.38.0 `DOCKER_OPTIONS_<PHASE>` files were copied verbatim rather than re-serialized the way `docker-options:add` stores them, so `docker-options:remove` compared the canonical string it builds against a stored value that could never match it and exited successfully without removing anything. Removal now matches stored options by shell word, and stored options are rewritten into the canonical form once on upgrade, which additionally splits an entry that carried several flags on a single line into one entry per flag so a single flag can be removed and so the readers that match on a flag prefix see one value per entry. The leftover `.migrated` sentinel drain is restored to running ahead of the global short-circuit that had made it unreachable, and the plugin's Go tests are added to the test target that had never run them.
2026-08-07 13:35:37 -04:00
Jose Diaz-Gonzalez
da085c5ebb Merge branch 'master' into 8862-move-host-crontab-generation-into-the-cron-plugin 2026-08-07 12:36:32 -04:00
Jose Diaz-Gonzalez
6f867485f1 Merge pull request #8893 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.17
chore(deps): bump django from 5.2.16 to 5.2.17 in /tests/apps/dockerfile-release
2026-08-07 12:26:39 -04:00
Jose Diaz-Gonzalez
409d364e81 Merge pull request #8891 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-294
chore(deps-dev): bump heroku/heroku-buildpack-php from 293 to 294 in /tests/apps/php
2026-08-07 12:24:43 -04:00
Jose Diaz-Gonzalez
44cd566178 feat: manage node-level kernel sysctls on the k3s scheduler
Sysctls the kernel does not namespace, such as `vm.max_map_count`, cannot be set from a pod spec and previously had no answer beyond editing `/etc/sysctl.d` on each host by hand. `scheduler-k3s:node-sysctls:set` now applies them through a privileged daemonset, which reaches nodes joined later and reapplies after a reboot. Sysctls may be scoped to a node profile, with a profile scope inheriting the global values and overriding them on conflict so that every node is covered by exactly one daemonset. Clearing a sysctl stops dokku managing it but does not restore the previous value, which persists until the node reboots.
2026-08-07 09:10:00 -04:00
Jose Diaz-Gonzalez
cd1089500b feat: translate docker-options --sysctl on the k3s scheduler
The `docker-local` scheduler supports `--sysctl` for free because docker options are passed verbatim to `docker run`, but the k3s scheduler silently dropped it. Namespaced sysctls now render into the pod's `securityContext.sysctls` for deployments, cron jobs, and one-off runs. A sysctl the kernel does not namespace fails the deploy instead of being dropped, since it cannot take effect within a pod regardless of what was requested.
2026-08-07 05:43:00 -04:00
Jose Diaz-Gonzalez
8e17eee653 feat: add --kubelet-args to scheduler-k3s:initialize
The server node created by `scheduler-k3s:initialize` had no way to receive kubelet arguments, unlike nodes joined through `scheduler-k3s:cluster:add` or configured via `scheduler-k3s:profiles:add`. This meant settings such as `allowed-unsafe-sysctls` were unreachable on a single-node install.
2026-08-07 02:31:12 -04:00
dependabot[bot]
c4c61db92b chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.16 to 5.2.17.
- [Commits](https://github.com/django/django/compare/5.2.16...5.2.17)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-05 13:54:45 +00:00
dependabot[bot]
85eace7c75 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 293 to 294.
- [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/v293...v294)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-04 13:52:27 +00:00
dependabot[bot]
0e4347cb3e chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.82.1 to 1.83.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.82.1...v1.83.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.83.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-30 13:52:21 +00:00
dependabot[bot]
276f613be1 chore(deps): bump sass from 1.101.7 to 1.102.0 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.7 to 1.102.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.7...1.102.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 13:54:13 +00:00
dependabot[bot]
52a44467f9 chore(deps): bump sass from 1.101.6 to 1.101.7 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.6 to 1.101.7.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.6...1.101.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 13:54:09 +00:00
dependabot[bot]
64785ca0ee chore(deps): bump sass from 1.101.3 to 1.101.6 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.3 to 1.101.6.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.3...1.101.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-23 13:54:09 +00:00
Jose Diaz-Gonzalez
c6b4ea75c1 refactor: move host-crontab generation into cron plugin
Host-crontab generation for `app.json` cron tasks now lives in the `cron` plugin, gated by a new `scheduler-uses-host-cron` trigger that the `docker-local` scheduler answers true while self-managed schedulers such as `k3s` answer false. This lets any host-cron scheduler participate in normal `app.json` cron without coupling to `scheduler-docker-local` or duplicating the crontab writer, while the `k3s` scheduler continues to manage its own in-cluster cron jobs.

Closes #8862.
2026-07-22 08:35:11 -04:00
Jose Diaz-Gonzalez
e3687a62ed Merge pull request #8856 from youdie006/feat/ports-parsed-mappings
Add pre-parsed port_mappings to ports:report json
2026-07-22 04:57:13 -04:00
Jose Diaz-Gonzalez
9c61031f3e docs: add docs and tests for this feature 2026-07-22 03:45:32 -04:00
Jose Diaz-Gonzalez
e7df3a5fd6 Merge pull request #8860 from dokku/dependabot/pip/tests/apps/dockerfile-release/setuptools-83.0.0
chore(deps): bump setuptools from 78.1.1 to 83.0.0 in /tests/apps/dockerfile-release
2026-07-22 03:17:18 -04:00
Jose Diaz-Gonzalez
9e246e2114 Merge pull request #8859 from dokku/dependabot/npm_and_yarn/tests/apps/multi/immutable-5.1.9
chore(deps): bump immutable from 5.1.5 to 5.1.9 in /tests/apps/multi
2026-07-22 03:16:52 -04:00
Jose Diaz-Gonzalez
f440c7794e Merge pull request #8855 from dokku/dependabot/npm_and_yarn/tests/apps/multi/sass-1.101.3
chore(deps): bump sass from 1.101.0 to 1.101.3 in /tests/apps/multi
2026-07-22 03:16:38 -04:00
dependabot[bot]
3bf1079926 chore(deps): bump setuptools in /tests/apps/dockerfile-release
Bumps [setuptools](https://github.com/pypa/setuptools) from 78.1.1 to 83.0.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v78.1.1...v83.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 83.0.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 07:13:34 +00:00
dependabot[bot]
878ca3c2f7 chore(deps): bump immutable from 5.1.5 to 5.1.9 in /tests/apps/multi
Bumps [immutable](https://github.com/immutable-js/immutable-js) from 5.1.5 to 5.1.9.
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/immutable-js/immutable-js/compare/v5.1.5...v5.1.9)

---
updated-dependencies:
- dependency-name: immutable
  dependency-version: 5.1.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 07:13:25 +00:00
Jose Diaz-Gonzalez
d39064058b Merge pull request #8857 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/body-parser-2.3.0
chore(deps): bump body-parser from 2.2.1 to 2.3.0 in /tests/apps/checks-root
2026-07-22 03:12:12 -04:00
dependabot[bot]
3542acc271 chore(deps): bump body-parser in /tests/apps/checks-root
Bumps [body-parser](https://github.com/expressjs/body-parser) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-version: 2.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 19:58:27 +00:00
dependabot[bot]
64e7654453 chore(deps): bump sass from 1.101.0 to 1.101.3 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.0 to 1.101.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.0...1.101.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 13:54:12 +00:00
dependabot[bot]
e746ea98f8 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.15.0b3-bookworm to 3.15.0b4-bookworm.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 13:53:08 +00:00
Jose Diaz-Gonzalez
dc802ddd19 feat: support per-app letsencrypt emails on k3s
The `letsencrypt-email-prod` and `letsencrypt-email-stag` properties can now be set per app in addition to globally, resolving app-level before the global value for the app's selected `letsencrypt-server`. An app that sets its own email renders a namespaced cert-manager `Issuer` using that email, while apps without an override continue to use the shared `ClusterIssuer` with the global email.
2026-07-19 03:31:55 -04:00
Jose Diaz-Gonzalez
1a376c3622 fix: prevent command injection via docker options eval
Values supplied through docker options, `--ttl-seconds`, and `-e` flowed into a Bash `eval` during build, deploy, and run, letting a low-privileged user execute arbitrary commands on the host as the dokku user. These arguments are now tokenized and passed through to the container verbatim, without shell expansion. A one-time migration repairs stored labels whose backticks were saved with a stray backslash so Traefik-style rules stay valid on the next deploy.
2026-07-19 01:42:12 -04:00
Jose Diaz-Gonzalez
f1f90233f6 Merge pull request #8841 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.6
chore(deps): bump ruby from 4.0.5 to 4.0.6 in /tests/apps/dockerfile-entrypoint
2026-07-17 10:45:05 -04:00
dependabot[bot]
22718c10d7 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.82.0 to 1.82.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.82.0...v1.82.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.82.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-16 13:52:23 +00:00
dependabot[bot]
90d76060fe chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.5 to 4.0.6.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-15 13:52:31 +00:00
Jose Diaz-Gonzalez
5496029e07 fix: parse cert CN and subject on OpenSSL 3.x
The `certs` plugin extracted a certificate's Common Name and formatted its subject using string assumptions that only held for pre-3.x OpenSSL output, so a certificate with only a Common Name and no Subject Alternative Name reported no hostnames from `certs:report` and was not recognized during nginx config generation, while the subject report retained the `subject=` prefix and used the wrong separators. Normalizing the subject with `-nameopt` before parsing makes the extraction version independent across OpenSSL and LibreSSL.
2026-07-10 15:05:27 -04:00
Jose Diaz-Gonzalez
7bd866efee Merge pull request #8825 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/zombies-dockerfile-no-tini
2026-07-09 21:14:44 -04:00
Jose Diaz-Gonzalez
4205871cec Merge pull request #8823 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/zombies-dockerfile-tini
2026-07-09 21:14:36 -04:00
Jose Diaz-Gonzalez
16ba93f9e2 Merge pull request #8820 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-293
chore(deps-dev): bump heroku/heroku-buildpack-php from 292 to 293 in /tests/apps/php
2026-07-09 21:14:26 -04:00
Jose Diaz-Gonzalez
e2781c0553 Merge pull request #8821 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/go-fail-predeploy
2026-07-09 21:14:17 -04:00
Jose Diaz-Gonzalez
91025ee23e Merge pull request #8822 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/gogrpc
2026-07-09 21:14:04 -04:00
dependabot[bot]
5ff86ec977 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.26.4 to 1.26.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:53:12 +00:00
dependabot[bot]
7e05d6cca4 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.26.4 to 1.26.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:53:05 +00:00
dependabot[bot]
58f509ed0c chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.26.4 to 1.26.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:57 +00:00
dependabot[bot]
5462744cf0 chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/gogrpc
Bumps golang from 1.26.4 to 1.26.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:57 +00:00
dependabot[bot]
ab14872c77 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.26.4 to 1.26.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:38 +00:00
dependabot[bot]
01f3280746 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 292 to 293.
- [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/v292...v293)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:36 +00:00
Jose Diaz-Gonzalez
611cb89711 Merge pull request #8805 from RichardDorian/master
Allow custom values for chown
2026-07-08 18:09:31 -04:00
Jose Diaz-Gonzalez
c37ba0f255 Merge pull request #8810 from dokku/8797-network-list-expose-whether-a-network-was-created-by-dokku
Expose whether a network was created by dokku
2026-07-08 14:52:32 -04:00
RichardDorian
513b200f5c test(storage): add out-of-bounds chown coverage for go code and script 2026-07-08 19:38:08 +02:00
Jose Diaz-Gonzalez
ac4b86fd8e feat: expose whether a network was created by dokku
`network:list` and `network:info` now expose a `DokkuManaged` boolean derived from the `com.dokku.network-name` label that `network:create` applies, and `network:list` gains a `--dokku-managed` flag to restrict output to dokku-created networks. This lets tooling distinguish networks dokku created from Docker built-ins and networks created by other tooling such as compose.
2026-07-08 00:03:29 -04:00
Jose Diaz-Gonzalez
1ee462dc3c docs: document nginx validate-config load_module override
The nginx deploy-time pre-validation runs `nginx -t` against a minimal wrapper that omits the global `load_module` directives, so a custom `nginx.conf.sigil` using a directive from a dynamically loaded module fails validation even though it is valid against the running server. Document overriding the `validate-config` template through the `nginx-app-template-source` trigger as the supported workaround.
2026-07-07 23:33:59 -04:00
Jose Diaz-Gonzalez
24e3809a34 Merge pull request #8807 from dokku/8802-buildpacks-allow-setting-the-entire-ordered-buildpack-list-in-one-command
Allow replacing buildpack list atomically
2026-07-07 22:13:59 -04:00
Jose Diaz-Gonzalez
62164181e0 Merge pull request #8808 from dokku/8799-docker-options-report-expose-options-as-a-structured-list
Expose docker-options as structured lists in JSON report
2026-07-07 21:29:56 -04:00
Jose Diaz-Gonzalez
4652749b5b feat: expose docker-options as structured lists in JSON report
Add parallel -list keys to docker-options:report --format json so export
tools can round-trip options without splitting space-joined strings.

Closes #8799
2026-07-07 19:49:17 -04:00