Skip to content

Add VPS deploy job to CI; canonical repo is now bmx269/smallrobot - #8

Merged
bmx269 merged 1 commit into
smallrobotco:vuefrom
bmx269:vue
Aug 5, 2026
Merged

Add VPS deploy job to CI; canonical repo is now bmx269/smallrobot#8
bmx269 merged 1 commit into
smallrobotco:vuefrom
bmx269:vue

Conversation

@bmx269

@bmx269 bmx269 commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

The deploy job rsyncs the built artifact to the Virtualmin host over SSH — on push to main, and via manual dispatch from any branch so vue can get a staging deploy before it merges. Builds stay in CI, never on the VPS, so the deploy only ever ships an artifact that already passed typecheck, tests and generate. Until the four DEPLOY_* secrets exist the job skips with a notice instead of failing, keeping CI green while hosting is being stood up. (Secrets cannot be read in a job-level if, so presence is exposed through an env var.)

One trap defused: actions/upload-artifact v4.4+ excludes hidden files by default, which would have silently dropped .htaccess — the file the whole Apache setup depends on — from the artifact. include-hidden-files is now explicit, and the deploy verifies .htaccess landed on the server after rsync.

Deploying as the Virtualmin domain user rather than root means files arrive owned correctly with no chown pass. rsync --delete keeps the docroot an exact mirror of the build; the known non-atomicity (a second of torn state mid-deploy) is documented in place along with the symlink-swap upgrade path.

Repo migration: the smallrobotco org remote is removed and bmx269/smallrobot is now origin. Netlify watches the org repo, which is exactly why nothing should be pushed there during the migration — the fork's main is at the same commit (bf224ed), so nothing is lost.

The deploy job rsyncs the built artifact to the Virtualmin host over SSH —
on push to main, and via manual dispatch from any branch so `vue` can get a
staging deploy before it merges. Builds stay in CI, never on the VPS, so the
deploy only ever ships an artifact that already passed typecheck, tests and
generate. Until the four DEPLOY_* secrets exist the job skips with a notice
instead of failing, keeping CI green while hosting is being stood up.
(Secrets cannot be read in a job-level `if`, so presence is exposed through
an env var.)

One trap defused: actions/upload-artifact v4.4+ excludes hidden files by
default, which would have silently dropped .htaccess — the file the whole
Apache setup depends on — from the artifact. include-hidden-files is now
explicit, and the deploy verifies .htaccess landed on the server after rsync.

Deploying as the Virtualmin domain user rather than root means files arrive
owned correctly with no chown pass. rsync --delete keeps the docroot an exact
mirror of the build; the known non-atomicity (a second of torn state
mid-deploy) is documented in place along with the symlink-swap upgrade path.

Repo migration: the smallrobotco org remote is removed and bmx269/smallrobot
is now `origin`. Netlify watches the org repo, which is exactly why nothing
should be pushed there during the migration — the fork's main is at the same
commit (bf224ed), so nothing is lost.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@bmx269
bmx269 merged commit 37120b5 into smallrobotco:vue Aug 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant