You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A run summary: one Slack message per cron run, saying what the run did — sites,
backups, bytes written, how long it took, which stages ran, and any failures
named by site and stage. Set BACKUP_SUMMARY_SLACK_WEBHOOK, and BACKUP_SUMMARY_NOTIFY=failure if only the bad nights are wanted. This is what
a log channel structurally cannot do: logging posts a record at a time, so it
can only ever report trouble, and a run where nothing fails is silent in exactly
the way an uninstalled cron entry is. The log channel stays as the backstop.
A run that finished in under a second reports <1s rather than 0s, which read
as a duration nobody measured.
A run blocked by the lock reports too — Backup did not run, naming the holder
— which used to leave nothing behind but a single log line.
app:validate posts a test message to the summary webhook and fails if Slack
refuses it. A mistyped or revoked webhook is otherwise invisible until it
matters.
app:config reports the summary settings and whether the log channel's Slack
webhook is set. Both webhooks are reported as set or not set, never printed.
Every log record is stamped with the machine it came from, so one Slack webhook
can serve a whole fleet instead of one per installation to tell the alerts
apart. LOG_HOSTNAME sets the label and defaults to the system hostname; an
empty value turns the stamp off. LOG_SLACK_USERNAME defaults to it too.
app:config and app:validate report the hostname label.
Changed
The "Backup written" log entry carries the size twice: bytes as before, and size rounded and with a unit, so a log can be read without converting the
large numbers by hand.
A failed site is logged with the site, domain and stage as context, where it
used to be the exception message alone — a failed process says which command it
was but nothing about whose backup it belonged to.
app:config and app:validate draw their output with hampel/console-report rather than
with private copies of the same renderers. The output is unchanged, byte for
byte, apart from the last two fixes below. The minimum is ^2.0, whose only
break is that the renderers are handed the command's output rather than calling
back into it — which is what lets the same package serve consoles that are not
Laravel.
Fixed
app:config no longer reports an environment file it never opened. With no .env in any of the places wback looks, it used to print the framework's guess
— which inside a built binary is a phar:// path into the read-only archive,
indistinguishable from a real answer on the one line an operator reads first
when a setting is not taking effect. It now names the file it actually read, or
says none found and lists where it looked.
A command name wback does not recognise is now an error that exits non-zero and
suggests the nearest match. Laravel Zero proxies an unrecognised name to the
default command, so wback app:validte printed the command list and exited 0 —
which reads as a passing check to cron, to a deploy script, and to anything else
that gates on app:validate.
app:config printed every path with the project directory silently removed —
the environment file as .env, the backup destination as storage/backup —
because Laravel's two-column component runs its values through a mutator that
strips base_path() and cannot be turned off. The rows are rendered directly
now, and a value too long for the line wraps rather than being truncated.
A relative path in app:config is reported along with the working directory it
resolves against, and an unset remote as not set, rather than either passing
for a setting that is in order.
Anything resembling a password in BACKUP_MYSQLDUMP_OPTIONS, BACKUP_CLOUD_OPTIONS or BACKUP_SYNC_OPTIONS is redacted from app:config,
which is the output that gets pasted into support tickets. It covers the usual
flag spellings; credentials still belong in a defaults file.
An empty BACKUP_SHELL — a legitimate setting, meaning "run pipelines under
the system shell" — is reported as none by app:config. It used to render as
a line of dots indistinguishable from a section heading.
A check row in app:validate with no detail no longer ends in trailing spaces.
app:config no longer reports a phar:// path as relative to the working
directory. A stream wrapper URI locates a resource outright, so there is nothing
for it to be relative to — and inside a built binary base_path() is one, which
is where the environment file lands when none of the places wback looks for it
has one. Fixed upstream in hampel/console-report 1.0.1, and carried forward
unchanged in the 2.0 this now requires.
Documentation
What happens when cloud and sync share one rclone remote: the branches they
write to, and the single case where a directory of your own in a site's backup
root ends up inside the sync destination and is deleted by the next sync.
The run summary: how to read one, when it is sent, and what a run that never
started looks like.
The installation instructions no longer name one particular release, and the
checksum step now works. It downloaded the binary under a different name from
the one SHA256SUMS lists, so sha256sum -c could not find the file it was
meant to be checking — and it ran after the install rather than before it.
Upgrading
Nothing is required. Every change below is either invisible or opt-in.
To turn the run summary on, set BACKUP_SUMMARY_SLACK_WEBHOOK. It is off
until you do, and the slack log channel is unaffected either way — the two
are complementary, and config/backup.php says why.
app:validate now posts. It writes a message at every log level and, if a
summary webhook is configured, sends a test message to it. That is deliberate —
a revoked webhook is otherwise invisible from the sending end — but it means
running it puts messages in whatever channel this installation reports to.
A mistyped command now fails.wback app:validte used to print the command
list and exit 0. Anything that gates on an exit code will start seeing a typo it
had been passing.