Deployments & Rollbacks

Deploy from git push or CLI, rollback instantly, manage deployment history.

Deploy

Git Push Deploy

Connect your GitHub, GitLab, or Bitbucket repository:

rf link --repo github.com/myorg/my-app

Now every push to main triggers a deployment automatically.

CLI Deploy

rf deploy
Detecting stack...     Node.js (Next.js 16)
Building...            ████████████████████ 100% (34s)
Deploying...           Rolling update (2 instances)
Health check...        ✓ Passing

✓ Live at https://my-app-abc123.raidframe.app (v43)

Deploy Options

# Stream build and deploy logs
rf deploy --watch

# Deploy to staging
rf deploy --env staging

# Deploy a specific branch
rf deploy --branch feature-xyz

# Deploy a Docker image directly
rf deploy --image myregistry/myapp:v2.1

# Deploy without waiting
rf deploy --no-wait

# Dry run (build only, don't deploy)
rf deploy --dry-run

Deployment History

rf deployments list
ID          VERSION  STATUS     CREATED              DURATION  COMMIT
dep_f8a3    v43      ✓ active   2026-03-16 14:23     38s       abc1234 "Add user profiles"
dep_e7b2    v42      rolled back 2026-03-16 12:10    42s       def5678 "Update pricing logic"
dep_d6c1    v41      replaced   2026-03-15 18:45     35s       ghi9012 "Fix checkout bug"
dep_c5d0    v40      replaced   2026-03-15 16:30     29s       jkl3456 "Add Redis caching"
# View deployment details
rf deployments info dep_f8a3
Deployment dep_f8a3 (v43)
  Status:    Active
  Commit:    abc1234 "Add user profiles"
  Branch:    main
  Author:    [email protected]
  Built:     34s (cached: node_modules, .next)
  Deployed:  4s (rolling update)
  Instances: 2/2 healthy
  Image:     sha256:a8f3b2c1d4e5...

Rollback

Instant Rollback

Roll back to the previous deployment:

rf deployments rollback
Rolling back v43 → v41
  Restoring image: sha256:d6c1e5f4a3b2...
  Health check: ✓ Passing

✓ Rolled back to v41 (dep_d6c1)
  v42 was already rolled back, skipped to last known good.

RaidFrame automatically skips deployments that were previously rolled back.

Rollback to Specific Version

rf deployments rollback dep_c5d0

Automatic Rollback

If a deployment fails health checks, it's rolled back automatically:

Building...        ████████████████████ 100% (31s)
Deploying...       Rolling update
Health check...    ✗ Failed (3/3 attempts, HTTP 500)

⚠ Auto-rollback triggered
  Restored: v42 (dep_e7b2)
  Failed deployment: dep_g9h4 (check rf logs --deployment dep_g9h4)

Build Caching

Builds are cached at multiple levels:

  • Docker layer caching — unchanged layers are reused
  • Dependency cachingnode_modules, pip, go mod, cargo are cached between builds
  • Build output caching — Next.js .next, Go binaries, etc.

First build: ~60s. Subsequent builds with no dependency changes: ~10s.

# Clear build cache
rf builds cache clear

# View cache stats
rf builds cache info
Build Cache
  Size:  1.2 GB
  Layers: 47 cached
  Hit rate: 89% (last 30 days)
  Saved:  ~28 minutes across 42 builds

Deploy Hooks

Trigger actions before or after deployment:

deploy:
  hooks:
    pre_build:
      - npm run lint
      - npm run test
    post_deploy:
      - curl -X POST https://api.myapp.com/cache/purge
      - rf cdn purge --all

Webhook Notifications

rf deploy hooks add --event deploy.success --url https://slack.com/webhook/xxx
rf deploy hooks add --event deploy.failure --url https://pagerduty.com/webhook/xxx

Deployment Protection

Require approval before deploying to production:

rf env protect production --require-approval --approvers [email protected],[email protected]

Deployment Windows

Restrict when deployments can happen:

deploy:
  production:
    windows:
      - days: [MON, TUE, WED, THU]
        hours: "09:00-17:00"
        timezone: America/New_York
    freeze:
      - from: "2026-12-23"
        to: "2026-12-27"
        reason: "Holiday freeze"

Scheduled Deployments

Deploy at a specific time:

rf deploy --schedule "2026-03-17T02:00:00Z"
✓ Deployment scheduled for 2026-03-17T02:00:00Z (12 hours from now)
  Cancel with: rf deployments cancel dep_h0i5