#!/bin/bash # # Multi-Step Deployment Script # Generated by platform-metadata-deploy skill # # Usage: ./scripts/deploy.sh set -e # Exit on error TARGET_ORG=${1:-"myorg"} PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" echo "═══════════════════════════════════════════════════════════════════" echo " DEPLOYMENT TO: $TARGET_ORG" echo "═══════════════════════════════════════════════════════════════════" # Step 0: Pre-flight checks echo "📋 Pre-flight checks..." sf --version || { echo "❌ sf CLI not found"; exit 1; } sf org display --target-org "$TARGET_ORG" --json || { echo "❌ Cannot connect to org"; exit 1; } # Step 0.5: Dry-run validation first echo "🧪 Step 0.5: Running dry-run validation..." sf project deploy start \ --dry-run \ --source-dir "$PROJECT_DIR/force-app/main/default" \ --target-org "$TARGET_ORG" \ --wait 30 \ --json # Step 1: Deploy Custom Objects/Fields echo "📦 Step 1: Deploying objects and fields..." sf project deploy start \ --source-dir "$PROJECT_DIR/force-app/main/default/objects" \ --target-org "$TARGET_ORG" \ --wait 10 \ --json # Step 2: Deploy Permission Sets echo "📦 Step 2: Deploying permission sets..." sf project deploy start \ --source-dir "$PROJECT_DIR/force-app/main/default/permissionsets" \ --target-org "$TARGET_ORG" \ --wait 10 \ --json # Step 3: Deploy Apex (with tests) echo "📦 Step 3: Deploying Apex..." sf project deploy start \ --source-dir "$PROJECT_DIR/force-app/main/default/classes" \ --source-dir "$PROJECT_DIR/force-app/main/default/triggers" \ --target-org "$TARGET_ORG" \ --test-level RunLocalTests \ --wait 30 \ --json # Step 4: Deploy Flows (Draft) echo "📦 Step 4: Deploying flows..." sf project deploy start \ --source-dir "$PROJECT_DIR/force-app/main/default/flows" \ --target-org "$TARGET_ORG" \ --wait 10 \ --json echo "═══════════════════════════════════════════════════════════════════" echo " ✅ DEPLOYMENT COMPLETE" echo "═══════════════════════════════════════════════════════════════════" echo "" echo "Recommended Next Steps:" echo " 1. Assign permission sets: sf org assign permset --name PermSetName --target-org $TARGET_ORG" echo " 2. Activate flows after validation" echo " 3. Create test data with platform-data-manage or describe-first sf data commands" echo " 4. Run smoke tests / targeted verification"