Deployment
Deployment is how your finished site gets onto the internet. Sumi publishes the site for you, without changing how you write posts or build themes. This page explains what publishing does and how to check you are ready; the provider guides cover each host in detail.
Choose a publishing target during sumi init, or change it later in sumi.json.
Some targets publish through a matching CI provider: GitHub Pages goes through GitHub Actions and GitLab Pages through GitLab CI. Sumi checks those combinations when it loads your config, so a mismatch is caught early.
What publishing does
When you finish a post, one command takes care of everything. ./sumi publish runs the full publishing flow:
- Build the site.
- Deploy the built output.
- Syndicate posts that ask to be syndicated.
- Rebuild and deploy again if syndication added new links to post frontmatter.
That order means social posts can link to pages that are already live.
If you only want to put an already-built site online, run the two steps yourself:
$./sumi build$./sumi deployThis builds the site and deploys it, without any syndication.
Checking your setup
When you are ready to publish, check the deployment requirements:
$./sumi doctordoctor reports anything missing, including the environment variables your publishing target and syndication providers need; see what doctor checks for the full list.
If doctor reports missing environment variables and you want to publish from your own machine, create a local .env file:
$cp .env.example .envFill in the required values in .env, then run ./sumi doctor again. The .env file is ignored by git, so your tokens never end up in the repository.
If you publish through CI instead, add the same names from .env.example as CI secrets or variables. See Continuous Integration.
If doctor says a generated workflow differs from Sumi's current template, bring it up to date:
$./sumi migrateThe migrate command updates generated workflow files such as .github/workflows/publish.yml, .gitlab-ci.yml, .forgejo/workflows/publish.yml and the root ./sumi wrapper.
The not-found page
Sumi writes a custom not-found page to 404.html in the build output. Static hosts that support custom 404 files can serve it automatically; Cloudflare Workers deployments use the same file through Workers static asset handling.
Provider guides
Each guide covers one host, from configuration to first publish: