CLI
Deploy prebuilt dist directories over Git smart-HTTP with @noitenow/cli.
@noitenow/cli deploys a CI-built dist plus wrangler.jsonc as a synthetic fast-forward commit over Git smart-HTTP — zero server build. Same auth as git push (Basic git + profile API key, push role suffices, never force).
Install
Bun must be on the machine that runs it (ships as a Bun bundle):
bun add -g @noitenow/cli # Bun
npm i -g @noitenow/cli # npm/pnpm/yarn — same tarball
bunx @noitenow/cli deploy # one-off, no install
bunx @noitenow/cli deploy --slug <slug> --url https://git.<domain> --token $NOITE_API_KEY
Flags
Flags fall back to env, then to GitHub Actions context:
| Flag | Env | Actions default |
|---|---|---|
--dist |
— | dist |
--slug |
NOITE_SLUG |
repo name, slugified |
--url |
GIT_PUBLIC_BASE / NOITE_BASE |
— |
--token |
NOITE_API_KEY / NOITE_GIT_TOKEN |
— |
--wrangler |
— | wrangler.jsonc |
--message |
— | deploy <sha12> |
--comment |
— | update (create / off) |
app, api, git slugs are reserved and refused. The tree carries dist/* + wrangler.jsonc with no package.json, so the runner skips to release → celld deploy. Commits parent the remote tip (fast-forward); values are never logged, and the token travels in the remote URL exactly like a plain git push.
Workflow
- run: bun run build
- run: bunx @noitenow/cli deploy --comment update
env:
NOITE_API_KEY: ${{ secrets.NOITE_API_KEY }}
NOITE_BASE: https://git.<domain>
Outputs and PR comments
In Actions it writes url= + sha= to $GITHUB_OUTPUT for downstream steps, and posts (or updates via marker) a PR comment with gh — no GitHub App needed:
--comment update(default): one comment per PR, updated on each deploy.--comment create: a new comment per deploy.--comment off: no comment.
Commenting soft-fails: missing gh, missing token, or no PR number only warns — the deploy already succeeded.