P

Pro Yeet Workspace

All-in-one skill covering only, user, explicitly, asks. Includes structured workflows, validation checks, and reusable patterns for workflow automation.

SkillClipticsworkflow automationv1.0.0MIT
0 views0 copies

Yeet Workspace

A rapid deployment and code shipping skill for quickly deploying applications, services, and infrastructure using streamlined deployment workflows and zero-configuration platforms.

When to Use

Choose Yeet Workspace when:

  • Deploying applications quickly to production with minimal configuration
  • Setting up zero-config deployment pipelines for web applications
  • Shipping features rapidly with preview deployments and instant rollbacks
  • Managing multi-environment deployments (dev, staging, production)

Consider alternatives when:

  • Complex infrastructure requirements — use Terraform or Pulumi
  • Self-hosted deployment needs — use Docker and Kubernetes
  • Enterprise compliance requirements — use managed cloud services with audit trails

Quick Start

# Deploy to Vercel (zero config for Next.js) npx vercel # Deploy to Fly.io fly launch fly deploy # Deploy to Railway railway up # Deploy Docker container to Render render deploy
// Deployment automation script import { execSync } from 'child_process'; interface DeployConfig { platform: 'vercel' | 'fly' | 'railway' | 'render'; environment: 'preview' | 'staging' | 'production'; branch: string; } class DeployManager { async deploy(config: DeployConfig) { // Pre-deployment checks await this.runChecks(); // Deploy based on platform const commands: Record<string, string> = { vercel: config.environment === 'production' ? 'npx vercel --prod' : 'npx vercel', fly: 'fly deploy', railway: 'railway up', render: 'render deploy' }; console.log(`Deploying to ${config.platform} (${config.environment})...`); const output = execSync(commands[config.platform], { encoding: 'utf-8', stdio: 'inherit' }); // Post-deployment verification await this.verifyDeployment(config); return { status: 'success', environment: config.environment }; } private async runChecks() { console.log('Running pre-deploy checks...'); execSync('npm run typecheck', { stdio: 'inherit' }); execSync('npm run lint', { stdio: 'inherit' }); execSync('npm test -- --run', { stdio: 'inherit' }); } private async verifyDeployment(config: DeployConfig) { // Health check after deployment const url = this.getDeploymentUrl(config); const maxRetries = 10; for (let i = 0; i < maxRetries; i++) { try { const resp = await fetch(`${url}/api/health`); if (resp.ok) { console.log('Deployment verified successfully'); return; } } catch { /* retry */ } await new Promise(r => setTimeout(r, 3000)); } throw new Error('Deployment health check failed'); } private getDeploymentUrl(config: DeployConfig): string { // Platform-specific URL resolution return `https://${config.environment === 'production' ? 'app' : config.environment}.example.com`; } }

Core Concepts

Deployment Platform Comparison

PlatformBest ForPricing ModelSetup Complexity
VercelNext.js, React, static sitesPer-requestZero config
Fly.ioContainers, globally distributedPer-VMDockerfile
RailwayFull-stack apps, databasesResource-basedNear-zero
RenderWeb services, cron, staticPer-serviceDashboard
Cloudflare PagesStatic + edge functionsGenerous free tierMinimal
NetlifyJAMstack, forms, functionsPer-siteMinimal

CI/CD Pipeline

# .github/workflows/deploy.yml name: Deploy on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm run typecheck - run: npm run lint - run: npm test deploy-preview: needs: test if: github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} deploy-production: needs: test if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} vercel-args: '--prod'

Configuration

OptionDescriptionDefault
platformDeployment platformAuto-detect
environmentTarget environment"preview"
regionDeployment regionPlatform default
auto_deployDeploy on git pushtrue
preview_branchesBranches that get preview deployments["*"]
production_branchBranch that triggers production deploy"main"
health_check_urlPost-deploy health check endpoint"/api/health"
rollback_on_failureAuto-rollback if health check failstrue

Best Practices

  1. Always run tests before deployment as a required CI step — never deploy code that fails tests, linting, or type checking, even to preview environments
  2. Use preview deployments for every pull request so reviewers can test the actual running application, not just read code; this catches integration issues and UX problems before merging
  3. Implement health check endpoints that verify database connectivity, essential service availability, and basic functionality so deployment verification can catch broken deploys before they serve users
  4. Set up instant rollbacks so you can revert to the previous working deployment within seconds if issues are discovered after production deployment
  5. Use environment variables for all environment-specific configuration and secrets rather than hardcoding values — this ensures the same build artifact works across preview, staging, and production

Common Issues

Build failures in CI but working locally: Missing environment variables, different Node.js versions, or OS-specific dependencies cause CI-only failures. Pin exact Node.js versions in CI, ensure all required environment variables are set in CI secrets, and use lock files to ensure identical dependency versions.

Preview deployment URLs not accessible: Preview deployments sometimes fail silently or have incorrect domain configuration. Verify the deployment platform's output URL, check DNS propagation for custom domains, and ensure preview environments have necessary environment variables like API endpoints configured for the preview URL.

Database migrations failing during deployment: Deploying schema changes alongside application code can fail if migrations run before or after the app restarts. Run migrations as a separate pre-deployment step, ensure they are backward-compatible with the current running version, and test migration rollback procedures.

Community

Reviews

Write a review

No reviews yet. Be the first to review this template!

Similar Templates