Skip to content

Turning off a safety net

sealup stops before changing anything when a deploy looks dangerous. Each stop is exit 6, with its own page, and leaves the server as it was. When the danger is what you want, say so in sealup.yml, for one target:

targets:
production:
server: sftp://deploy@ssh.example.com/~
password: ${PROD_PASSWORD}
allow: [symlinks]
Value Turns off the stop on Page
empty-source an empty or missing build folder empty-source
symlinks a symlink in the build, or on the server symlink
root-folder the mirror into the server’s root or the login folder risky-folder

allow: goes on a target, never at the top level: each target’s risks are its own.

An empty build folder would delete every file sealup uploaded there: most likely the build failed. With allow: [empty-source], an empty folder deploys as an empty folder.

sealup never follows a symlink: a link could pull files from outside your build, or make it write outside the target folder. Without the allow, a link in the build, or a server folder it writes into that is a link, stops the run. With it:

  • links in your build are skipped, never followed, and listed:
Would skip 1 link in your build (sealup never follows a link)
· public_html/storage
  • links on the server are left alone and never deleted (the dry run says a link on the server, never deleted);
  • a write through a server link still stops the run, whatever allow: says.

This is what a Laravel site needs for its public/storage link to storage/app/public: the link stays on the server, and sealup leaves it alone.

With the full mirror on, a target folder that is the server’s root (/) or the login folder (/~) stops the run: the mirror could delete whatever else the account holds. allow: [root-folder] lets it run. Without the mirror, a deploy into the login folder needs no allow.

A file from write: (an .env, say) that would land in a folder whose name looks served (www, public_html, public, htdocs, …) stops the run: visitors could download it. That one is not turned off by allow: but on the entry itself, once you know the folder is not served:

write:
www/config/.env:
from: ${APP_ENV}
allowPublic: true

See secret-file-public.