afv-library/skills/platform-metadata-deploy/references/deploy.sh

74 lines
2.9 KiB
Bash

#!/bin/bash
#
# Multi-Step Deployment Script
# Generated by platform-metadata-deploy skill
#
# Usage: ./scripts/deploy.sh <target-org-alias>
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"