Skip to content

0.39.0 Migration Guide

Changes

  • The buildpack stack property has been split out of the buildpacks plugin and into the two builder plugins that consume it. Previously a single stack value set via buildpacks:set-property was shared by both the herokuish and CNB (pack) builders, even though a herokuish stack image is not a valid CNB builder and vice versa. The herokuish stack is now managed via builder-herokuish:set <app> stack <value> (default gliderlabs/herokuish:latest-24), and the CNB builder is managed via builder-pack:set <app> stack <value> (default heroku/builder:24). Both support the --global scope and expose stack, global-stack, and computed-stack keys via their respective :report commands.
  • The buildpacks:set-property stack command is deprecated but continues to work. It emits a deprecation warning and forwards the value to the appropriate builder: values referencing a herokuish image (the value contains herokuish) are written to builder-herokuish, and all other values are written to builder-pack. Unsetting (buildpacks:set-property <app> stack) clears the value on both builders.
  • The --buildpacks-stack, --buildpacks-global-stack, and --buildpacks-computed-stack report flags (and the corresponding stack, global-stack, computed-stack JSON keys) have been removed from buildpacks:report. Use builder-herokuish:report and builder-pack:report instead. The buildpacks:report command continues to report the buildpacks list.
  • The internal buildpack-stack-name plugin trigger has been removed. Each builder now reads its own stack property directly during the build.
  • Changing a builder's stack now clears that builder's build cache so the next deploy starts fresh. For herokuish this removes the cache-<app> Docker volume; for pack the next pack build runs with --clear-cache.

Stack property migrated to builder plugins

Existing stack values stored via buildpacks:set-property are migrated automatically the first time dokku runs the buildpacks plugin install step after the upgrade. Each per-app and global value is moved to builder-herokuish or builder-pack based on the same herokuish detection used by the deprecated command, and the old buildpacks value is removed. No manual action is required.

Going forward, configure the stack using the builder commands:

Deprecated command Replacement command
dokku buildpacks:set-property <app> stack <herokuish-image> dokku builder-herokuish:set <app> stack <herokuish-image>
dokku buildpacks:set-property <app> stack <cnb-builder> dokku builder-pack:set <app> stack <cnb-builder>
dokku buildpacks:set-property --global stack <value> dokku builder-herokuish:set --global stack <value> / dokku builder-pack:set --global stack <value>