sf-deploy
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesesf-deploy: Comprehensive Salesforce DevOps Automation
sf-deploy:全面的Salesforce DevOps自动化方案
Expert Salesforce DevOps engineer specializing in deployment automation, CI/CD pipelines, and metadata management using Salesforce CLI (sf v2).
专业的Salesforce DevOps工程师,擅长使用Salesforce CLI(sf v2)实现部署自动化、CI/CD流水线搭建与元数据管理。
Core Responsibilities
核心职责
- Deployment Management: Execute, validate, and monitor deployments (metadata, Apex, LWC)
- DevOps Automation: CI/CD pipelines, automated testing, deployment workflows
- Org Management: Authentication, scratch orgs, environment management
- Quality Assurance: Tests, code coverage, pre-production validation
- Troubleshooting: Debug failures, analyze logs, provide solutions
- 部署管理:执行、验证并监控元数据、Apex、LWC的部署
- DevOps自动化:CI/CD流水线、自动化测试、部署工作流
- 组织管理:身份验证、临时组织(scratch orgs)、环境管理
- 质量保障:测试、代码覆盖率、预生产验证
- 故障排查:调试部署失败、分析日志并提供解决方案
⚠️ CRITICAL: Orchestration Order
⚠️ 重要提示:编排顺序
┌─────────────────────────────────────────────────────────────────────────────┐
│ sf-metadata → sf-flow → sf-deploy → sf-data │
│ ▲ │
│ YOU ARE HERE │
└─────────────────────────────────────────────────────────────────────────────┘Deploy order WITHIN sf-deploy: Objects/Fields → Permission Sets → Apex → Flows (Draft) → Activate Flows
| Phase | Metadata Type | Why This Order |
|---|---|---|
| 1 | Custom Objects/Fields | Everything references these |
| 2 | Permission Sets | FLS requires fields to exist |
| 3 | Apex Classes | @InvocableMethod needed before Flows |
| 4 | Flows (as Draft) | Flows reference fields and Apex |
| 5 | Activate Flows | Safe to activate after validation |
See for detailed deployment workflows and agent deployment patterns.
docs/orchestration.md┌─────────────────────────────────────────────────────────────────────────────┐
│ sf-metadata → sf-flow → sf-deploy → sf-data │
│ ▲ │
│ 当前位置 │
└─────────────────────────────────────────────────────────────────────────────┘sf-deploy内部的部署顺序:对象/字段 → 权限集 → Apex → 流程(草稿状态) → 激活流程
| 阶段 | 元数据类型 | 顺序原因 |
|---|---|---|
| 1 | 自定义对象/字段 | 所有组件都依赖这些基础元素 |
| 2 | 权限集 | 字段级安全(FLS)要求字段已存在 |
| 3 | Apex类 | 流程需要先部署包含@InvocableMethod的Apex类 |
| 4 | 流程(草稿状态) | 流程会引用字段和Apex类 |
| 5 | 激活流程 | 验证通过后再激活更安全 |
详细部署工作流与Agent部署模式请查看。
docs/orchestration.md🔑 Key Insights for Deployment
🔑 部署关键要点
Always Use --dry-run First
始终先使用--dry-run进行验证
bash
undefinedbash
undefinedCORRECT: Validate before deploying
正确操作:先验证再部署
sf project deploy start --dry-run --source-dir force-app --target-org alias
sf project deploy start --source-dir force-app --target-org alias
sf project deploy start --dry-run --source-dir force-app --target-org alias
sf project deploy start --source-dir force-app --target-org alias
WRONG: Deploying without validation
错误操作:直接部署不验证
sf project deploy start --source-dir force-app --target-org alias # Risky!
undefinedsf project deploy start --source-dir force-app --target-org alias # 存在风险!
undefinedDeploy Permission Sets After Objects
权限集需在对象部署后再部署
Common Error:
Error: In field: field - no CustomObject named ObjectName__c foundSolution: Deploy objects first, THEN permission sets referencing them.
常见错误:
Error: In field: field - no CustomObject named ObjectName__c found解决方案:先部署对象,再部署引用该对象的权限集。
Flow Activation (4-Step Process)
流程激活(四步流程)
Flows deploy as Draft by default. Activation steps:
- Deploy with
<status>Draft</status> - Verify:
sf project deploy report --job-id [id] - Edit XML: →
DraftActive - Redeploy
Why? Draft lets you verify before activating; if activation fails, flow still exists.
Common Errors: "Flow is invalid" (deploy objects first) | "Insufficient permissions" (check Manage Flow) | "Version conflict" (deactivate old version)
流程默认以草稿状态部署,激活步骤如下:
- 以状态部署流程
<status>Draft</status> - 验证部署状态:
sf project deploy report --job-id [id] - 编辑XML:将改为
DraftActive - 重新部署
原因:草稿状态可在激活前验证流程;若激活失败,流程仍会保留。
常见错误:"Flow is invalid"(需先部署对象)| "Insufficient permissions"(检查Manage Flow权限)| "Version conflict"(先停用旧版本)
FLS Warning After Deployment
部署后的FLS警告
⚠️ Deployed fields may be INVISIBLE without FLS!
After deploying custom objects/fields:
- Deploy Permission Set granting field access
- Assign Permission Set to user:
sf org assign permset --name PermSetName --target-org alias - Verify field visibility
⚠️ 部署的字段可能因FLS设置不可见!
部署自定义对象/字段后:
- 部署包含字段访问权限的权限集
- 为用户分配权限集:
sf org assign permset --name PermSetName --target-org alias - 验证字段可见性
CLI Version (CRITICAL)
CLI版本(重要)
This skill uses CLI (v2.x), NOT legacy (v1.x)
sfsfdx| Legacy sfdx (v1) | Modern sf (v2) |
|---|---|
| |
| |
本技能使用 CLI(v2.x),而非旧版(v1.x)
sfsfdx| 旧版sfdx(v1) | 新版sf(v2) |
|---|---|
| |
| |
Prerequisites
前置条件
Before deployment, verify:
bash
sf --version # Requires v2.x
sf org list # Check authenticated orgs
test -f sfdx-project.json # Valid SFDX project部署前请验证以下内容:
bash
sf --version # 需为v2.x版本
sf org list # 检查已认证的组织
test -f sfdx-project.json # 验证是否为有效的SFDX项目Deployment Workflow (5-Phase)
部署工作流(五阶段)
Phase 1: Pre-Deployment Analysis
阶段1:部署前分析
Gather via AskUserQuestion: Target org, deployment scope, validation requirements, rollback strategy.
Analyze:
- Read for package directories
sfdx-project.json - Glob for metadata:
**/force-app/**/*.{cls,trigger,xml,js,html,css} - Grep for dependencies
TodoWrite tasks: Validate auth, Pre-tests, Deploy, Monitor, Post-tests, Verify
通过询问用户收集信息:目标组织、部署范围、验证要求、回滚策略。
分析内容:
- 读取获取包目录
sfdx-project.json - 匹配元数据:
**/force-app/**/*.{cls,trigger,xml,js,html,css} - 排查依赖关系
待办任务:验证身份、预测试、部署、监控、后测试、验证
Phase 2: Pre-Deployment Validation
阶段2:部署前验证
bash
sf org display --target-org <alias> # Check connection
sf apex test run --test-level RunLocalTests --target-org <alias> --wait 10 # Local tests
sf project deploy start --dry-run --test-level RunLocalTests --target-org <alias> --wait 30 # Validatebash
sf org display --target-org <alias> # 检查连接状态
sf apex test run --test-level RunLocalTests --target-org <alias> --wait 10 # 运行本地测试
sf project deploy start --dry-run --test-level RunLocalTests --target-org <alias> --wait 30 # 执行验证Phase 3: Deployment Execution
阶段3:执行部署
Commands by scope:
bash
undefined按范围分类的命令:
bash
undefinedFull metadata
全量元数据部署
sf project deploy start --target-org <alias> --wait 30
sf project deploy start --target-org <alias> --wait 30
Specific components
特定组件部署
sf project deploy start --source-dir force-app/main/default/classes --target-org <alias>
sf project deploy start --source-dir force-app/main/default/classes --target-org <alias>
Manifest-based
基于清单的部署
sf project deploy start --manifest manifest/package.xml --target-org <alias> --test-level RunLocalTests --wait 30
sf project deploy start --manifest manifest/package.xml --target-org <alias> --test-level RunLocalTests --wait 30
Quick deploy (after validation)
快速部署(需先完成验证)
sf project deploy quick --job-id <validation-job-id> --target-org <alias>
Handle failures: Parse errors, identify failed components, suggest fixes.sf project deploy quick --job-id <validation-job-id> --target-org <alias>
处理部署失败:解析错误信息、定位失败组件、提供修复建议。Phase 4: Post-Deployment Verification
阶段4:部署后验证
bash
sf project deploy report --job-id <job-id> --target-org <alias>Verify components, run smoke tests, check coverage.
bash
sf project deploy report --job-id <job-id> --target-org <alias>验证组件状态、运行冒烟测试、检查代码覆盖率。
Phase 5: Documentation
阶段5:文档记录
Provide summary with: deployed components, test results, coverage metrics, next steps.
See examples/deployment-report-template.md for output format.
Deployment Variants: Production (full + RunAllTests), Hotfix (targeted + RunLocalTests), CI/CD (scripted + gates), Scratch (push source).
[Beta]— Runs only tests relevant to changed components (Spring '26 / API v66.0 only). Not GA; use--test-level RunRelevantTestsfor production deploys.RunLocalTests
提供部署总结,包含:已部署组件、测试结果、覆盖率指标、下一步操作建议。
输出格式示例请查看examples/deployment-report-template.md。
部署变体:生产环境(全量+RunAllTests)、热修复(定向+RunLocalTests)、CI/CD(脚本化+关卡)、临时组织(推送源码)。
[Beta版]— 仅运行与变更组件相关的测试(仅Spring '26 / API v66.0+支持)。生产部署请使用--test-level RunRelevantTests。RunLocalTests
CLI Reference
CLI参考
Deploy:
Quick: | Status:
Test: | Coverage:
Org: | | |
Metadata: |
Debug: — Show which files are ignored during deploy/retrieve (v2.117.7+)
sf project deploy start [--dry-run] [--source-dir <path>] [--manifest <xml>] [--test-level <level>]sf project deploy quick --job-id <id>sf project deploy reportsf apex test run --test-level RunLocalTestssf apex get test --code-coveragesf org listsf org displaysf org create scratch [--snapshot <name>]sf org opensf project retrieve startsf org list metadata --metadata-type <type>sf project deploy start --dev-debug部署:
快速部署: | 状态查询:
测试: | 覆盖率:
组织管理: | | |
元数据: |
调试: — 显示部署/检索过程中被忽略的文件(v2.117.7+)
sf project deploy start [--dry-run] [--source-dir <path>] [--manifest <xml>] [--test-level <level>]sf project deploy quick --job-id <id>sf project deploy reportsf apex test run --test-level RunLocalTestssf apex get test --code-coveragesf org listsf org displaysf org create scratch [--snapshot <name>]sf org opensf project retrieve startsf org list metadata --metadata-type <type>sf project deploy start --dev-debugError Handling
错误处理
| Error | Cause | Solution |
|---|---|---|
| FIELD_CUSTOM_VALIDATION_EXCEPTION | Validation rule blocking | Deactivate rules or use valid test data |
| INVALID_CROSS_REFERENCE_KEY | Missing dependency | Include dependencies in deploy |
| CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY | Trigger/validation error | Review trigger logic, check recursion |
| TEST_FAILURE | Test class failure | Fix test or code under test |
| INSUFFICIENT_ACCESS | Permission issue | Verify user permissions, FLS |
| 错误类型 | 原因 | 解决方案 |
|---|---|---|
| FIELD_CUSTOM_VALIDATION_EXCEPTION | 验证规则阻止部署 | 停用规则或使用合法测试数据 |
| INVALID_CROSS_REFERENCE_KEY | 缺少依赖组件 | 将依赖项包含在部署范围内 |
| CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY | 触发器/验证错误 | 检查触发器逻辑、排查递归问题 |
| TEST_FAILURE | 测试类执行失败 | 修复测试类或被测试代码 |
| INSUFFICIENT_ACCESS | 权限问题 | 验证用户权限、字段级安全(FLS) |
Flow-Specific Errors
流程专属错误
| Error | Cause | Solution |
|---|---|---|
| "Element X is duplicated" | Elements not alphabetically ordered | Reorder Flow XML elements |
| "Element bulkSupport invalid" | Deprecated element (API 60.0+) | Remove |
| "Error parsing file" | Malformed XML | Validate XML syntax |
| 错误类型 | 原因 | 解决方案 |
|---|---|---|
| "Element X is duplicated" | 元素未按字母顺序排列 | 重新排序Flow XML元素 |
| "Element bulkSupport invalid" | 元素已废弃(API 60.0+) | 删除 |
| "Error parsing file" | XML格式错误 | 验证XML语法 |
Failure Response
失败响应流程
- Parse error output, identify failed components
- Explain error in plain language
- Suggest specific fixes with code examples
- Provide rollback options if needed
- 解析错误输出,定位失败组件
- 用通俗语言解释错误原因
- 提供包含代码示例的具体修复方案
- 必要时提供回滚选项
Best Practices
最佳实践
- Always validate first: Use for production
--dry-run - Appropriate test levels: RunLocalTests (deploy), RunAllTests (packages)
- Code coverage: >75% for production, >90% recommended
- Use manifests: for controlled deployments
package.xml - Version control: Commit before deploying, tag releases
- Incremental deploys: Small, frequent changes over large batches
- Sandbox first: Always test before production
- Backup metadata: Retrieve before major deployments
- Quick deploy: Use for validated changesets
- 始终先验证:生产环境部署必须使用
--dry-run - 选择合适的测试级别:RunLocalTests(普通部署)、RunAllTests(包部署)
- 代码覆盖率:生产环境要求>75%,推荐>90%
- 使用清单文件:通过实现可控部署
package.xml - 版本控制:部署前提交代码、为版本打标签
- 增量部署:优先小批量频繁变更,而非大规模一次性部署
- 先在沙箱测试:生产部署前必须在沙箱验证
- 备份元数据:重大部署前先导出元数据
- 快速部署:已验证的变更集使用快速部署
Trigger Deployment Safety
触发器部署安全
💡 Seefor comprehensive guide.docs/trigger-deployment-safety.md
💡 详细指南请查看。docs/trigger-deployment-safety.md
Pre-Deployment Guardrails
部署前防护措施
Before deploying triggers, verify:
| Check | Command/Action |
|---|---|
| Trigger chain analysis | Map all triggers firing together |
| Cascade failure review | Identify atomic vs independent processes |
| Async decoupling | Use Queueable/Events for external calls |
| Savepoint usage | Verify explicit atomicity where needed |
| Test coverage | Include cascade success/failure tests |
部署触发器前请验证以下内容:
| 检查项 | 命令/操作 |
|---|---|
| 触发器链分析 | 梳理所有联动触发的触发器 |
| 级联失败风险评估 | 区分原子流程与独立流程 |
| 异步解耦 | 外部调用使用Queueable/Events |
| Savepoint使用验证 | 验证关键场景的显式原子性设置 |
| 测试覆盖率 | 包含级联成功/失败场景的测试 |
Common Trigger Cascade Risks
常见触发器级联风险
| Risk | Symptom | Solution |
|---|---|---|
| External callout in trigger | Cascade failure from HTTP timeout | Move to Queueable |
| Shared exception handling | One failure rolls back all | Isolate with try-catch or async |
| Recursive triggers | Stack overflow or DML errors | Use static flag recursion guard |
| Order-dependent triggers | Inconsistent behavior | Document and test trigger order |
| 风险 | 症状 | 解决方案 |
|---|---|---|
| 触发器中包含外部调用 | HTTP超时导致级联失败 | 迁移至Queueable |
| 共享异常处理逻辑 | 单个失败导致全部回滚 | 使用try-catch隔离或异步处理 |
| 递归触发器 | 栈溢出或DML错误 | 使用静态标志防止递归 |
| 触发器顺序依赖 | 行为不一致 | 记录并测试触发器执行顺序 |
Pre-Deployment Checklist
部署前检查清单
TRIGGER SAFETY CHECKLIST:
□ Identify all triggers in deployment
□ Map trigger chains (which triggers fire together)
□ Verify cascade behavior is intentional
□ Check for external callouts → should be async
□ Confirm savepoint usage for atomic operations
□ Test both success and failure cascade scenarios
□ Validate with --dry-run before production deploy触发器安全检查清单:
□ 识别部署中的所有触发器
□ 梳理触发器联动关系(哪些触发器会同时触发)
□ 验证级联行为是否符合预期
□ 检查外部调用是否已异步化
□ 确认关键操作的Savepoint使用
□ 测试级联成功与失败场景
□ 生产部署前用--dry-run验证Recommended Async Patterns
推荐的异步模式
apex
// BAD: Synchronous external call in trigger
trigger AccountTrigger on Account (after insert) {
ExternalService.sync(Trigger.new); // Failure cascades
}
// GOOD: Async decoupling
trigger AccountTrigger on Account (after insert) {
if (canEnqueueJob()) {
System.enqueueJob(new AccountSyncQueueable(Trigger.newMap.keySet()));
}
}apex
// 错误示例:触发器中同步调用外部服务
trigger AccountTrigger on Account (after insert) {
ExternalService.sync(Trigger.new); // 失败会导致级联回滚
}
// 正确示例:异步解耦
trigger AccountTrigger on Account (after insert) {
if (canEnqueueJob()) {
System.enqueueJob(new AccountSyncQueueable(Trigger.newMap.keySet()));
}
}CI/CD Integration
CI/CD集成
Standard pipeline workflow:
- Authenticate (JWT/auth URL)
- Validate metadata
- Static analysis (PMD, ESLint)
- Dry-run deployment
- Run tests + coverage check
- Deploy if validation passes
- Notify
See examples/deployment-workflows.md for scripts.
标准流水线工作流:
- 身份验证(JWT/认证URL)
- 元数据验证
- 静态分析(PMD、ESLint)
- 预部署验证(dry-run)
- 运行测试+覆盖率检查
- 验证通过后执行部署
- 发送通知
脚本示例请查看examples/deployment-workflows.md。
Edge Cases
边缘场景
- Large deployments: Split into batches (limit: 10,000 files / 39 MB)
- Test timeout: Increase wait time or run tests separately
- Namespace conflicts: Handle managed package issues
- API version: Ensure source/target compatibility
- 大规模部署:拆分批次(限制:10000个文件 / 39 MB)
- 测试超时:增加等待时间或单独运行测试
- 命名空间冲突:处理托管包相关问题
- API版本:确保源码与目标组织API版本兼容
Cross-Skill Dependency Checklist
跨技能依赖检查清单
Before deploying, verify these prerequisites from other skills:
| Dependency | Check Command | Required For |
|---|---|---|
| TAF Package | | TAF trigger pattern (sf-apex) |
| Custom Objects/Fields | | Apex/Flow field references |
| Trigger_Action__mdt | Check Setup → Custom Metadata Types | TAF trigger execution |
| Queues | | Flow queue assignments |
| Permission Sets | | FLS for custom fields |
Common Cross-Skill Issues:
| Error Message | Missing Dependency | Solution |
|---|---|---|
| TAF Package | Install apex-trigger-actions package |
| Custom Field or FLS | Deploy field or create Permission Set |
| Field-Level Security | Assign Permission Set to running user |
| Custom Object | Deploy object via sf-metadata first |
| Queue Metadata | Deploy queue via sf-metadata first |
部署前请验证其他技能提供的前置条件:
| 依赖项 | 检查命令/操作 | 用途 |
|---|---|---|
| TAF包 | | TAF触发器模式(sf-apex) |
| 自定义对象/字段 | | Apex/流程字段引用 |
| Trigger_Action__mdt | 检查设置 → 自定义元数据类型 | TAF触发器执行 |
| 队列 | | 流程队列分配 |
| 权限集 | | 自定义字段的FLS设置 |
常见跨技能问题:
| 错误信息 | 缺失依赖 | 解决方案 |
|---|---|---|
| TAF包 | 安装apex-trigger-actions包 |
| 自定义字段或FLS | 部署字段或创建权限集 |
| 字段级安全 | 为运行用户分配权限集 |
| 自定义对象 | 先通过sf-metadata部署对象 |
| 队列元数据 | 先通过sf-metadata部署队列 |
sf-ai-agentscript Integration (Agent DevOps)
sf-ai-agentscript集成(Agent DevOps)
Complete DevOps guide: See for comprehensive agent deployment documentation.
docs/agent-deployment-guide.md完整DevOps指南:Agent部署详细文档请查看。
docs/agent-deployment-guide.mdAgent Metadata Types
Agent元数据类型
| Metadata Type | Description |
|---|---|
| Top-level chatbot definition |
| Version configuration |
| Reasoning engine (LLM config) |
| Topic definition |
| Action definition |
| 元数据类型 | 描述 |
|---|---|
| 顶级聊天机器人定义 |
| 版本配置 |
| 推理引擎(LLM配置) |
| 主题定义 |
| 动作定义 |
Agent Pseudo Metadata Type
Agent伪元数据类型
The pseudo type syncs all agent components at once:
Agentbash
undefinedAgentbash
undefinedRetrieve agent + all dependencies from org
从组织中获取Agent及所有依赖项
sf project retrieve start --metadata Agent:[AgentName] --target-org [alias]
sf project retrieve start --metadata Agent:[AgentName] --target-org [alias]
Deploy agent metadata to org
将Agent元数据部署到组织
sf project deploy start --metadata Agent:[AgentName] --target-org [alias]
undefinedsf project deploy start --metadata Agent:[AgentName] --target-org [alias]
undefinedAgent Lifecycle Commands
Agent生命周期命令
bash
undefinedbash
undefinedActivate agent (makes available to users)
激活Agent(对用户可见)
sf agent activate --api-name [AgentName] --target-org [alias]
sf agent activate --api-name [AgentName] --target-org [alias]
Deactivate agent (REQUIRED before making changes)
停用Agent(修改前必须执行)
sf agent deactivate --api-name [AgentName] --target-org [alias]
sf agent deactivate --api-name [AgentName] --target-org [alias]
Preview agent (simulated mode - safe testing)
预览Agent(模拟模式 - 安全测试)
sf agent preview --api-name [AgentName] --target-org [alias]
sf agent preview --api-name [AgentName] --target-org [alias]
Preview agent (live mode - real Apex/Flows)
预览Agent(实时模式 - 调用真实Apex/流程)
sf agent preview --api-name [AgentName] --use-live-actions --target-org [alias]
sf agent preview --api-name [AgentName] --use-live-actions --target-org [alias]
Validate Agent Script syntax
验证Agent Script语法
sf agent validate authoring-bundle --api-name [AgentName] --target-org [alias]
undefinedsf agent validate authoring-bundle --api-name [AgentName] --target-org [alias]
undefinedFull Agent Deployment Workflow
完整Agent部署工作流
bash
undefinedbash
undefined1. Deploy Apex classes (if any)
1. 部署Apex类(如有)
sf project deploy start --metadata ApexClass --target-org [alias]
sf project deploy start --metadata ApexClass --target-org [alias]
2. Deploy Flows
2. 部署流程
sf project deploy start --metadata Flow --target-org [alias]
sf project deploy start --metadata Flow --target-org [alias]
3. Validate Agent Script
3. 验证Agent Script
sf agent validate authoring-bundle --api-name [AgentName] --target-org [alias]
sf agent validate authoring-bundle --api-name [AgentName] --target-org [alias]
4. Publish agent
4. 发布Agent
sf agent publish authoring-bundle --api-name [AgentName] --target-org [alias]
sf agent publish authoring-bundle --api-name [AgentName] --target-org [alias]
5. Preview (simulated mode)
5. 预览(模拟模式)
sf agent preview --api-name [AgentName] --target-org [alias]
sf agent preview --api-name [AgentName] --target-org [alias]
6. Activate
6. 激活Agent
sf agent activate --api-name [AgentName] --target-org [alias]
undefinedsf agent activate --api-name [AgentName] --target-org [alias]
undefinedModifying Existing Agents
修改现有Agent
⚠️ Deactivation Required: You MUST deactivate an agent before modifying topics, actions, or system instructions.
bash
undefined⚠️ 必须先停用:修改主题、动作或系统指令前,必须先停用Agent。
bash
undefined1. Deactivate
1. 停用Agent
sf agent deactivate --api-name [AgentName] --target-org [alias]
sf agent deactivate --api-name [AgentName] --target-org [alias]
2. Make changes to Agent Script
2. 修改Agent Script
3. Re-publish
3. 重新发布
sf agent publish authoring-bundle --api-name [AgentName] --target-org [alias]
sf agent publish authoring-bundle --api-name [AgentName] --target-org [alias]
4. Re-activate
4. 重新激活
sf agent activate --api-name [AgentName] --target-org [alias]
undefinedsf agent activate --api-name [AgentName] --target-org [alias]
undefinedSync Agent Between Orgs
跨组织同步Agent
bash
undefinedbash
undefined1. Retrieve from source org
1. 从源组织获取Agent
sf project retrieve start --metadata Agent:[AgentName] --target-org source-org
sf project retrieve start --metadata Agent:[AgentName] --target-org source-org
2. Deploy dependencies to target org first
2. 先将依赖项部署到目标组织
sf project deploy start --metadata ApexClass,Flow --target-org target-org
sf project deploy start --metadata ApexClass,Flow --target-org target-org
3. Deploy agent metadata
3. 部署Agent元数据到目标组织
sf project deploy start --metadata Agent:[AgentName] --target-org target-org
sf project deploy start --metadata Agent:[AgentName] --target-org target-org
4. Publish agent in target org
4. 在目标组织发布Agent
sf agent publish authoring-bundle --api-name [AgentName] --target-org target-org
sf agent publish authoring-bundle --api-name [AgentName] --target-org target-org
5. Activate in target org
5. 在目标组织激活Agent
sf agent activate --api-name [AgentName] --target-org target-org
undefinedsf agent activate --api-name [AgentName] --target-org target-org
undefinedAgent-Specific CLI Reference
Agent专属CLI参考
| Command | Description |
|---|---|
| Publish authoring bundle |
| Publish without retrieving metadata (CI/CD) |
| Activate published agent |
| Deactivate agent for changes |
| Preview agent behavior |
| Validate Agent Script syntax |
| Open in Agentforce Builder |
| Open Agentforce Studio list view (v2.121.7+) |
| Generate authoring bundle scaffolding |
| Generate without retrieving from org |
| Retrieve agent + components |
| Deploy agent metadata |
| 命令 | 描述 |
|---|---|
| 发布创作包 |
| 不获取元数据直接发布(CI/CD场景) |
| 激活已发布的Agent |
| 停用Agent以进行修改 |
| 预览Agent行为 |
| 验证Agent Script语法 |
| 在Agentforce Builder中打开 |
| 打开Agentforce Studio列表视图(v2.121.7+) |
| 生成创作包脚手架 |
| 不从组织获取元数据直接生成 |
| 获取Agent及关联组件 |
| 部署Agent元数据 |
Package Management (2GP)
包管理(2GP)
| Command | Description |
|---|---|
| Convert 1GP to 2GP package (GA, v2.92.7+) |
| Schedule push upgrade |
| Abort scheduled push |
| List push upgrade requests |
| Get push upgrade status |
| Retrieve 2GP package metadata (GA, v2.111.7+) |
| 命令 | 描述 |
|---|---|
| 将1GP转换为2GP包(正式版,v2.92.7+) |
| 安排推送升级 |
| 取消已安排的推送升级 |
| 列出推送升级请求 |
| 获取推送升级状态 |
| 获取2GP包元数据(正式版,v2.111.7+) |
Deployment Script Template
部署脚本模板
Reusable multi-step deployment script: examples/deploy.sh
Deploys in order: Objects → Permission Sets → Apex (with tests) → Flows (Draft)
可复用的多阶段部署脚本:examples/deploy.sh
按以下顺序部署:对象 → 权限集 → Apex(含测试) → 流程(草稿状态)
Generate Package Manifest
生成包清单
Auto-generate package.xml from source directory:
bash
undefined从源码目录自动生成package.xml:
bash
undefinedGenerate from source
从源码生成
sf project generate manifest --source-dir force-app --name manifest/package.xml
sf project generate manifest --source-dir force-app --name manifest/package.xml
Generate for specific metadata types
为特定元数据类型生成
sf project generate manifest
--metadata CustomObject:Account
--metadata ApexClass
--metadata Flow
--name manifest/package.xml
--metadata CustomObject:Account
--metadata ApexClass
--metadata Flow
--name manifest/package.xml
sf project generate manifest
--metadata CustomObject:Account
--metadata ApexClass
--metadata Flow
--name manifest/package.xml
--metadata CustomObject:Account
--metadata ApexClass
--metadata Flow
--name manifest/package.xml
Deploy using manifest
使用清单部署
sf project deploy start --manifest manifest/package.xml --target-org alias
**When to use manifest vs source-dir:**
| Scenario | Use | Command |
|----------|-----|---------|
| Deploy everything | `--source-dir` | `sf project deploy start --source-dir force-app` |
| Deploy specific components | `--manifest` | `sf project deploy start --manifest package.xml` |
| CI/CD pipelines | `--manifest` | Controlled, reproducible deployments |
| Development iteration | `--source-dir` | Quick local changes |
---sf project deploy start --manifest manifest/package.xml --target-org alias
**何时使用manifest vs source-dir**:
| 场景 | 选择 | 命令 |
|----------|-----|---------|
| 部署全部内容 | `--source-dir` | `sf project deploy start --source-dir force-app` |
| 部署特定组件 | `--manifest` | `sf project deploy start --manifest package.xml` |
| CI/CD流水线 | `--manifest` | 可控、可重复的部署 |
| 开发迭代 | `--source-dir` | 快速部署本地变更 |
---Notes
注意事项
- CLI: Uses only (v2) with modern flag syntax
sf - Auth: Supports OAuth, JWT, Auth URL, web login
- API: Uses Metadata API (not Tooling API)
- Async: Use to monitor; most deploys are async
--wait - Limits: Be aware of Salesforce governor limits
- CLI版本:仅使用(v2)及现代参数语法
sf - 身份验证:支持OAuth、JWT、认证URL、网页登录
- API使用:使用元数据API(而非工具API)
- 异步处理:使用参数监控部署;大部分部署为异步执行
--wait - 限制说明:注意Salesforce governor限制
License
许可证
MIT License. See LICENSE file.
Copyright (c) 2024-2025 Jag Valaiyapathy
MIT许可证。详情请查看LICENSE文件。
版权所有 (c) 2024-2025 Jag Valaiyapathy