Martin Vysny dc27668e09 fix: discard the build record git:sync starts when nothing is built
cmd-git-sync calls dokku_setup_build_capture before the clone/fetch,
because it cannot know whether there is anything to deploy until it has
fetched. Both paths that then decline to build - a plain `git:sync` with
no build flag, and a `--build-if-changes` poll that finds the remote
unchanged - returned without ever finalizing that record.

The record stayed at status=running forever, which has three
consequences on an app polled on a timer:

- PruneAppBuilds only runs from builds-record-finalize, so nothing
  prunes the ticks while the app is idle; they accumulate without bound,
  invisibly, because builds:list caps output at the retention count.
- The next real deploy's ReapAbandonedBuilds finalizes each of them as
  status=failed, exit_code=-1, with finished_at stamped at the moment of
  reaping - indistinguishable on disk from a build that really failed,
  and with a duration that grew to the polling interval.
- That same deploy's prune then keeps the newest records by started_at,
  which after an idle stretch are the ticks, deleting the last real
  deploy's record and log.

Add a builds-record-discard trigger that removes a non-terminal record
and its log, and call it from both no-op paths in cmd-git-sync. The
trigger leaves missing and already-terminal records alone, so it can
never delete real history.

Fixes #9030

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 17:00:39 +03:00
2026-09-10 06:15:03 +00:00
2026-08-12 08:54:47 +00:00
2026-05-10 21:42:35 -04:00
2024-01-17 02:40:18 -05:00
2026-08-12 08:54:47 +00:00
2014-02-03 22:53:56 -08:00
2026-08-12 08:54:47 +00:00
2025-01-05 13:54:33 -03:00

Dokku

Build Status Ubuntu Package Arch Package Slack Group Documentation OpenCollective OpenCollective Patreon

Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen.

Sponsors

Become a sponsor and get your logo on our README on GitHub with a link to your site. [Become a sponsor]

OpenCollective Sponsor 0 OpenCollective Sponsor 1 OpenCollective Sponsor 2 OpenCollective Sponsor 3 OpenCollective Sponsor 4 OpenCollective Sponsor 5 OpenCollective Sponsor 6 OpenCollective Sponsor 7 OpenCollective Sponsor 8 OpenCollective Sponsor 9 OpenCollective Sponsor 10 OpenCollective Sponsor 11 OpenCollective Sponsor 12 OpenCollective Sponsor 13 OpenCollective Sponsor 14 OpenCollective Sponsor 15 OpenCollective Sponsor 6 OpenCollective Sponsor 17 OpenCollective Sponsor 18

Backers

Support us with a monthly donation and help us continue our activities. [Become a backer]

OpenCollective Backer 0 OpenCollective Backer 1 OpenCollective Backer 2 OpenCollective Backer 3 OpenCollective Backer 4 OpenCollective Backer 5 OpenCollective Backer 6 OpenCollective Backer 7 OpenCollective Backer 8 OpenCollective Backer 9 OpenCollective Backer 10 OpenCollective Backer 11 OpenCollective Backer 12 OpenCollective Backer 13 OpenCollective Backer 14 OpenCollective Backer 15 OpenCollective Backer 16 OpenCollective Backer 17 OpenCollective Backer 18 OpenCollective Backer 19 OpenCollective Backer 20 OpenCollective Backer 21 OpenCollective Backer 22 OpenCollective Backer 23 OpenCollective Backer 24 OpenCollective Backer 25 OpenCollective Backer 26 OpenCollective Backer 27 OpenCollective Backer 28 OpenCollective Backer 29

Requirements

A fresh VM running any of the following operating systems:

  • Ubuntu 22.04 / 24.04 (amd64/arm64) - Any currently supported release
  • Debian 11+ (amd64/arm64)

An SSH keypair that can be used for application deployment. If this exists before installation, it will be automatically imported into dokku. Otherwise, you will need to import the keypair manually after installation using dokku ssh-keys:add.

Installation

To install the latest stable release, run the following commands as a user who has access to sudo:

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

You can then proceed to configure your server domain (via dokku domains:set-global) and user access (via dokku ssh-keys:add) to complete the installation.

If you wish for a more unattended installation method, see these docs.

Upgrade

View the docs for upgrading from an older version of Dokku.

Documentation

Full documentation - including advanced installation docs - are available online at https://dokku.com/docs/getting-started/installation/.

Support

You can use GitHub Issues, check Troubleshooting in the documentation, or join us on Gliderlabs Slack in the #dokku channel.

Contribution

After checking GitHub Issues, the Troubleshooting Guide or having a chat with us on Gliderlabs Slack in the #dokku channel, feel free to fork and create a Pull Request.

While we may not merge your PR as is, they serve to start conversations and improve the general Dokku experience for all users.

License

MIT License © Jeff Lindsay

Description
No description provided
Readme MIT 31 MiB
Languages
Shell 49.9%
Go 47%
Makefile 1.3%
Python 0.7%
HTML 0.3%
Other 0.5%