Skip to content

feat: add createos deploy command#20

Merged
BhautikChudasama merged 6 commits intomainfrom
feat/deploy-command
Apr 1, 2026
Merged

feat: add createos deploy command#20
BhautikChudasama merged 6 commits intomainfrom
feat/deploy-command

Conversation

@naman485
Copy link
Copy Markdown
Collaborator

@naman485 naman485 commented Apr 1, 2026

Summary

Adds createos deploy — the most-requested missing command. Creates new deployments directly from the CLI.

How It Works

Auto-detects project type and routes accordingly:

# VCS (GitHub) project — deploy from latest commit
createos deploy
createos deploy --branch staging

# Upload project — zip and upload current directory
createos deploy
createos deploy --dir ./my-app

# Image project — deploy a Docker image
createos deploy --image nginx:latest

All paths auto-detect the project from .createos.json (or accept --project flag).

Features

  • Real-time deployment status polling with spinner
  • Prints live URL on success
  • Shows build-log hint on failure
  • Upload path excludes: node_modules, .git, .env, pycache, venv, .DS_Store, etc.
  • Upload 50MB max, 10MB per-file limit
  • 5-minute deployment timeout with graceful fallback

New API Methods

  • TriggerLatestDeploymentPOST /v1/projects/{id}/deployments/trigger-latest
  • UploadDeploymentZipPOST /v1/projects/{id}/deployments/upload/zip
  • GetDeploymentGET /v1/projects/{id}/deployments/{id}

Test Plan

  • createos deploy --help shows help without auth error
  • VCS project: createos deploy triggers deployment from default branch
  • VCS project: createos deploy --branch staging deploys specific branch
  • Upload project: createos deploy zips and uploads current directory
  • Upload project: verify node_modules, .git, .env are excluded from zip
  • Image project: createos deploy --image nginx:latest deploys image
  • Deployment polling: spinner shows status updates, prints URL on success
  • Failure case: shows build-log hint
  • No .createos.json: shows helpful error suggesting createos init
  • --project flag overrides auto-detection

Closes #3

🤖 Generated with Claude Code

Naman and others added 2 commits April 1, 2026 01:05
Adds an `update-homebrew` job to the release workflow that:
- Downloads SHA256 checksums from the just-published release
- Generates an updated Formula/createos.rb with new version + hashes
- Pushes to NodeOps-app/homebrew-createos

Requires HOMEBREW_TAP_TOKEN secret (PAT with repo scope for the tap repo).
Runs after binaries are uploaded, so SHA256 files are always available.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds the most-requested missing command — `createos deploy` — which creates
new deployments directly from the CLI.

Automatically detects project type and routes accordingly:
- VCS (GitHub) projects → triggers deploy from latest commit on branch
- Upload projects → zips local directory and uploads (respects .gitignore-style patterns)
- Image projects → deploys a Docker image reference

Features:
- Auto-detects project from .createos.json (or --project flag)
- Real-time deployment status polling with spinner
- Prints live URL on success
- Shows build-log hint on failure
- Upload path: excludes node_modules, .git, .env, __pycache__, etc.
- Upload path: 50MB max, 10MB per-file limit
- 5-minute deployment timeout with graceful fallback

New API methods:
- TriggerLatestDeployment — POST /v1/projects/{id}/deployments/trigger-latest
- UploadDeploymentZip — POST /v1/projects/{id}/deployments/upload/zip
- GetDeployment — GET /v1/projects/{id}/deployments/{id}

Closes #3

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@BhautikChudasama BhautikChudasama merged commit 4fe3d55 into main Apr 1, 2026
1 check passed
@BhautikChudasama BhautikChudasama deleted the feat/deploy-command branch April 1, 2026 16:04
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.

Add createos deploy command

2 participants