Skip to content

Build from Markdown or GitHub

Deploying a static or docs site covers uploading a site you built yourself. InfoEmu can also build for you: send raw content and it renders the site in an isolated sandbox, or connect a GitHub repo so every push builds and publishes. Either way you still get immutable releases with preview, promote, and rollback.

Instead of a built site, upload your source (for example a tar of Markdown) and let InfoEmu build it:

Terminal window
curl -sS -X POST \
-H "Authorization: Bearer $DEPLOY_TOKEN" \
-F "archive=@source.tar.gz" \
"$DEPLOY_URL/api/deploy/$INSTANCE_ID/source"

The build runs in a sandbox and produces a new release. Watch it with:

Terminal window
curl -sS -H "Authorization: Bearer $DEPLOY_TOKEN" \
"$DEPLOY_URL/api/deploy/$INSTANCE_ID/builds"

If the build fails you get the logs, and your live site is untouched — a broken source can’t take production down.

Connect a repository so pushes build automatically:

Terminal window
curl -sS -X PUT \
-H "Authorization: Bearer $DEPLOY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"repo": "you/your-repo", "branch": "main", "webhook_secret": "<at-least-16-chars>"}' \
"$DEPLOY_URL/api/deploy/$INSTANCE_ID/github"

The webhook_secret must be at least 16 characters; the response echoes the stored secret once. Then add a webhook in your GitHub repo settings pointing at InfoEmu, using that same secret. On each push to the configured branch, InfoEmu builds the repo in the sandbox and publishes a new release. Build status and logs are available at the builds endpoint above.

If you’d rather keep the build in your own pipeline, build there and use the upload API (Option in Deploying a static or docs site). This starter ships a GitHub Actions workflow (.github/workflows/deploy.yml) that runs pnpm build then ./deploy.sh on every push — a drop-in for any CI.

  • Upload from CI — most control; you own the toolchain and versions.
  • Raw content — simplest for a Markdown-only site with no local toolchain.
  • GitHub push-to-build — hands-off “git push to publish” once connected.

All three produce the same immutable releases, so you can mix them.