mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-07-30 03:09:50 +08:00
74 lines
2.9 KiB
Bash
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"
|