Salesforce CLI 配置和提示

使用 Salesforce CLI 执行大多数开发和测试任务。这些任务包括 授权 Dev Hub 组织,创建临时组织,在 临时组织和 VCS,以及运行测试。

您可以在安装 Salesforce CLI 后立即开始使用它。

CLI 命令分为多个顶级主题。例如,顶级主题包含用于创建和管理的命令 组织,例如 、 和 。顶级主题包含用于管理 配置变量。orgorg listorg create sandboxorg generate passwordconfig

在每个级别运行以获取更多信息。–help

sf --help                      // lists all top-level topics
sf org --help                  // lists all the topics and commands under "org"
sf org create --help           // lists all the commands in the subtopic "org create"
sf org create sandbox --help   // detailed info about the "org create sandbox" command
sf org create sandbox -h       // quick and short info about the "org create sandbox" command

运行以下命令可查看所有可用的 Salesforce CLI 命令:

sf commands

若要查看所有命令及其标志,请运行带有标志的命令:–json

sf commands --json
  • 自动完成 CLI 命令和标志
    部分键入 Salesforce CLI 命令,然后按 Tab 键自动完成该命令。自动完成功能也适用于 Salesforce CLI 标志。
  • 从公司防火墙或 Web 代理后面使用 Salesforce CLI 如果在公司防火墙或 Web 代理
    后面的计算机上安装或更新 Salesforce CLI,有时会收到错误消息。在这种情况下,您必须进一步配置系统。
  • Windows 性能建议 遵循这些建议可提高 Salesforce CLI 在 Windows 上的性能。
  • 配置变量 您可以为当前项目或所有项目设置配置(配置)变量
    。您可以设置两种配置变量:全局变量和局部变量。全局配置变量适用于计算机上的所有项目。本地配置变量适用于特定项目。当从 Salesforce DX 项目目录中运行命令时,本地配置变量会覆盖全局配置变量。
  • 环境变量 您可以设置环境变量
    来配置 Salesforce CLI 使用的某些值。
  • API 版本和源 API 版本在 Salesforce CLI 中的工作原理 Salesforce CLI
    在向组织部署元数据或从组织检索元数据时同时使用 API 版本和源 API 版本。虽然它们听起来相同,并且通常设置为相同的值,但这两种设置的工作方式不同。
  • CLI 参数解析顺序 由于您可以通过多种方式为给定的 Salesforce CLI 命令指定参数,因此了解解析顺序非常重要。
  • 支持 JSON 响应
    Salesforce CLI 命令通常以非结构化、人类可读的格式将其输出显示到控制台 (stdout)。写入日志文件 (stderr) 的消息始终采用 JSON 格式。
  • 按任意顺序指定主题和命令 在终端或命令提示符下键入命令时,可以按任意顺序
    输入主题和命令。Salesforce CLI 确定您指的是哪个命令,并自动运行它而不会出错。
  • 日志消息和日志级别
    Salesforce CLI 将所有日志消息写入文件。CLI 调用将日志消息附加到此正在运行的日志文件中。只有错误会输出到运行 CLI 的终端或命令窗口。USER_HOME_DIR/.sf/sf.log
  • 禁用 Salesforce CLI 数据收集和指标 Salesforce 收集使用情况数据和指标
    (遥测)以帮助改进 Salesforce CLI。我们收集与使用 Salesforce CLI 和插件相关的匿名信息,例如运行了哪些命令和标志,以及性能和错误数据。

自动完成 CLI 命令和标志

部分键入 Salesforce CLI 命令,然后按 Tab 键自动完成该命令。这 自动完成功能也适用于 Salesforce CLI 标志。

您必须先安装自动完成功能,然后才能使用它。

macOS 或 Linux

  1. 在终端中,运行 .sf autocomplete
  2. 按照显示的说明进行操作。
  3. 按一个 Tab 键自动完成命令,按两个 Tab 键获取可用命令列表。 键入完整命令后,输入 ,然后输入两个 Tab 键 获取可用标志的列表。

如果自动完成功能在安装后无法立即起作用,请运行 。然后打开一个新的终端窗口。sf autocomplete –refresh-cache

PowerShell的

Windows 用户可以通过先安装 PowerShell,然后再安装 PowerShell 来使用自动完成功能。 请按照下列步骤操作。

  1. 在 PowerShell 窗口中,运行 .sf autocomplete powershell
  2. 按照显示的说明进行操作。
  3. 按一个 Tab 键自动完成命令,按两个 Tab 键获取可用命令列表。 键入完整命令后,输入 ,然后输入两个 Tab 键 获取可用标志的列表。

如果自动完成功能在安装后无法立即起作用,请运行 。然后打开新的 PowerShell 窗口。sf autocomplete –refresh-cache

从公司防火墙或 Web 代理后面使用 Salesforce CLI

如果您在公司防火墙后面的计算机上安装或更新 Salesforce CLI,或者 Web 代理时,您有时会收到错误消息。在这种情况下,您必须进一步配置您的 系统。

当您在后面安装 Salesforce CLI 后运行命令时,您会收到此类错误 防火墙或 Web 代理。此错误来自 Linux 计算机,但 Windows 和 macOS 用户 有时会看到类似的错误。

@salesforce/cli: Updating CLI... !
 ▸  'ECONNRESET': tunneling socket could not be established, cause=connect EHOSTUNREACH 0.0.23.221:8080 - Local (10.126.148.39:53107)

若要解决此问题,请从终端或 Windows 命令提示符运行以下命令。 替换为您的 Web 代理用户名和密码。如果你的 代理不需要这些值,请省略它们。此外,请替换为公司代理的 URL 和端口。username:pwdproxy.company.com:8080

npm config set https-proxy https://username:pwd@proxy.company.com:8080
npm config set proxy https://username:pwd@proxy.company.com:8080

然后将 HTTP_PROXY 或 HTTPS_PROXY 环境变量设置为代理的完整 URL。为 例如,在 UNIX 上:

export HTTP_PROXY=https://username:pwd@proxy.company.com:8080
export HTTPS_PROXY=https://username:pwd@proxy.company.com:8080

在 Windows 上 机器:

set HTTP_PROXY=https://username:pwd@proxy.company.com:8080
set HTTPS_PROXY=https://username:pwd@proxy.company.com:8080

如果您仍然看到错误

您的代理需要额外的证书颁发机构

如果设置了代理环境变量,但仍然看到错误消息,则可能是 您的代理需要额外的证书颁发机构 (CA)。询问您的 IT 部门在哪里 以查找或下载证书。

将此环境变量设置为指向 CA 文件:NODE_EXTRA_CA_CERTS。

您的企业网络阻止了 Salesforce 主机

您的公司网络可能阻止 Salesforce 主机进行更新或 安装 Salesforce CLI。请与您的 IT 部门联系,将以下网址添加到您的许可名单中:

  • https://developer.salesforce.com/media/salesforce-cli
  • https://registry.npmjs.org

Windows 性能建议

请遵循以下建议来提高 Salesforce CLI 的性能 窗户。

警告

我们建议您在制作之前咨询您的安全管理员 这些建议的配置更改中的任何一个。为您的 Salesforce DX 项目使用本地文件系统,而不是基于云的文件系统。当您的 Salesforce DX 项目和相关文件位于 本地文件系统。基于云的文件系统,例如 OneDrive、Google Drive 和 Dropbox,不断监视文件系统中的所有文件和目录。作为 结果,如果您在这些文件系统之一中创建 Salesforce DX 项目, 它可能会限制 Salesforce CLI 的性能。若要避免此问题,请移动 您的项目目录远离这些系统。使用官方安装程序安装 Salesforce CLI,并从 Windows 中排除 sf 可执行文件 辩护人。

  • Windows Defender 会不断重新扫描可执行文件以查找潜在威胁。此扫描可能会对速度较慢的计算机产生明显的性能影响。
  • 要排除 Salesforce CLI,请使用可执行文件 从 developer.salesforce.com 和 请按照下列步骤操作:sf
    1. 向 Windows 添加排除项 安全性。
    2. 当系统提示您选择文件夹时,请选择 。C:\Program Files\Salesforce CLI

从 Windows Defender 中排除项目文件夹。Windows Defender 也可能不断重新扫描您的项目文件夹,从而导致 负面表现。若要排除项目文件夹,请按照下列步骤操作。从其他安全性中排除 sf 可执行文件 软件。一些公司使用比 Windows Defender 更广泛的安全软件,并且这种安全性 软件可能会导致 Salesforce CLI 执行缓慢。与内部 IT 部门合作 部门排除可执行文件 来自所有安全软件。sf关闭内存密集型程序。Salesforce CLI 可能执行缓慢,因为其他程序(如 Google Chrome 或 VS) 代码占用了过多的内存。尝试重新启动这些程序以释放 记忆。

配置变量

您可以为当前项目或所有项目设置配置(配置)变量 项目。您可以设置两种配置变量:全局变量和局部变量。全局配置变量 应用于计算机上的所有项目。本地配置变量适用于特定项目。 当从 Salesforce DX 中运行命令时,本地配置变量会覆盖全局变量 项目目录。

要为当前项目设置配置变量:

sf config set name <value>

对于本地配置变量,您必须从 Salesforce DX 项目中发出命令 目录。

要为所有项目设置配置变量,请执行以下操作:

sf config set name <value> --global

您可以在任何位置或任何 Salesforce DX 项目中发出全局命令,但它们适用于 您运行的所有 Salesforce CLI 命令。

查看使用该命令设置的局部和全局配置变量。输出列出了 从中运行命令的项目目录和所有全局变量。config list

sf config list
List Config
==========================================================
| Name                Value                       Location 
| ─────────────────── ─────────────────────────── ──────── 
| org-instance-url    https://test.salesforce.com Local    
| org-max-query-limit 20000                       Local    
| target-dev-hub      DevHub                      Local

要返回一个或多个先前设置的配置变量,请使用 。为此命令指定 JSON 输出以便于分析通常很有用 在持续集成 (CI) 环境中。例如,要返回 和 的值:config gettarget-orgtarget-dev-hub

sf config get target-org target-dev-hub --json

要取消设置配置变量,请运行以下命令。例如,要取消设置配置变量:config unsetorg-instance-url

sf config unset org-instance-url

注意

或者,您可以将所有 CLI 配置变量设置为环境变量。环境 变量覆盖配置变量。

配置变量列表

org-api-版本特定项目或所有项目的 API 版本。通常,Salesforce CLI 假定你使用的 CLI 版本与 Dev Hub 组织相同。这个例子 将所有项目的 API 版本(全局)设置为 57.0。

sf config set org-api-version 57.0 --global

是 请确保不要将此配置变量与具有类似名称的 sourceApiVersion 项目选项混淆。有关更多信息,请参阅在 Salesforce CLI 中 API 版本和源 API 版本的工作原理 信息。

环境变量:SF_ORG_API_VERSION

SF_ORG_API_VERSION=57.0

组织自定义元数据模板指定本地目录或克隆的 GitHub 存储库,其中包含 命令使用的默认自定义代码模板。GitHub URL 指向以下任一根目录: 包含您的模板或存储库中包含 模板。例如:project generate

sf config set org-custom-metadata-templates https://github.com/mygithubacct/salesforcedx-templates

环境变量:SF_ORG_CUSTOM_METADATA_TEMPLATES

SF_ORG_CUSTOM_METADATA_TEMPLATES=https://github.com/mygithubacct/salesforcedx-templates

目标组织默认情况下,所有命令都针对其运行的组织的用户名或别名。

sf config set target-org test-scratch-org@example.com

环境变量:SF_TARGET_ORG

SF_TARGET_ORG=test-scratch-org@example.com

目标开发中心默认 Dev Hub 组织的用户名或别名。

sf config set target-dev-hub my-dev-hub@devhub.org

环境变量:SF_TARGET_DEV_HUB

SF_TARGET_DEV_HUB=my-dev-hub@devhub.org

target-devops-center(仅限 DevOps Center 命令)安装 DevOps Center 的组织的用户名或别名。

sf config set target-devops-center myDevOpsCenterOrg@example.com

disable-telemetry默认情况下,Salesforce CLI 收集使用信息、用户环境信息、 和崩溃报告。此选项允许您选择 外。

sf config set disable-telemetry true

环境 变量: SF_DISABLE_TELEMETRYorg-instance-url (英文)托管组织的 Salesforce 实例的 URL。缺省值为 。我们建议您将 此配置变量设置为您组织的 My Domain 登录 URL。您可以找到 My Domain “设置”中“我的域”页面上的登录 URL。https://login.salesforce.com

sf config set org-instance-url https://yoda.my.salesforce.com

环境 变量: SF_ORG_INSTANCE_URL

SF_ORG_INSTANCE_URL=https://yoda.my.salesforce.com

组织最大查询限制Salesforce CLI 命令返回的 Salesforce 记录的最大数量。违约 值为 10,000。

例如,假设您在具有 15,000 个角色的 Salesforce 组织上运行。默认情况下 该命令仅显示 10,000 个角色。将显示一条消息,警告您检索到的命令 只有部分角色。要查看所有这些变量,请将此配置变量设置为更大的 数。sf org list metadata -m Role

sf config set org-max-query-limit 20000

环境变量:SF_ORG_MAX_QUERY_LIMIT

SF_ORG_MAX_QUERY_LIMIT=200000

组织元数据 rest-deploy如果 ,Salesforce CLI 使用元数据 REST API 用于部署。默认情况下,Salesforce CLI 使用 SOAP。使用 REST 的部署不是 受适用于 SOAP 的 39-MB.zip 文件大小限制的约束 部署。true

sf config set org-metadata-rest-deploy true

环境变量:SF_ORG_METADATA_REST_DEPLOY

环境变量

您可以设置环境变量来配置 Salesforce CLI 的某些值 使用。

Salesforce CLI 环境变量

环境变量将覆盖配置变量。设置环境变量 只有您正在运行的命令,才能附加变量:

SF_ORG_API_VERSION=57.0 sf org create scratch -<options>

FORCE_OPEN_URL指定运行 时在浏览器中打开的网页。例如,要打开 Lightning Experience,请将 自。org openlightning

等效于 的标志。–pathorg openFORCE_SHOW_SPINNER设置为在 运行异步 CLI 命令时的命令行。缺省值为 。truefalseFORCE_SPINNER_DELAY指定微调器的速度(以毫秒为单位)。默认值为 60。SF_ACCESS_TOKEN使用命令时指定访问令牌。如果未设置此环境变量,则命令 提示您输入访问令牌。对于持续集成 (CI) 脚本很有用。org login access-token

SF_APPLY_REPLACEMENTS_ON_CONVERT设置为测试字符串替换,而不使用 实际将文件部署到组织。相反,请运行以将文件转换为元数据 API 格式,然后检查 文件以查看将要部署的内容。trueproject convert source

请参阅之前替换代码中的字符串 部署了解详细信息。

SF_AUDIENCE_URL覆盖用于 JWT 身份验证的 aud (audience) 字段 以便它与您所在组织的授权服务器 URL 的预期值匹配 登录。例如,对于生产组织,和/或对于 沙盒。https://MyDomainName.my.salesforce.comhttps://login.salesforce.comhttps://MyDomainNameSandboxName.sandbox.my.salesforce.comhttps://test.salesforce.com

例:

SF_AUDIENCE_URL=https://MyDomainName.my.salesforce.com

SF_CODE_COVERAGE_REQUIREMENT指定在运行时或与标志一起显示为绿色的代码覆盖率百分比。apex run test apex get test–code-coverage

如果 Apex 测试的代码覆盖率百分比等于或高于 此设置显示为绿色。如果百分比较低,则显示为红色。 此环境变量仅适用于人类可读的输出。默认值为 70%.

例:

SF_CODE_COVERAGE_REQUIREMENT=75

SF_CONTAINER_MODE当设置为 时,通常会打开 org 在浏览器中,例如 或 ,而是输出组织的 URL,而不是 打开浏览器。当设置为(默认值 值),这些命令会在浏览器中打开组织。trueorg openorg login webfalse

此环境变量很有用 在无头环境中,例如 Docker 或持续集成。SF_CONTENT_TYPE设置为 时,指定所有 CLI 命令 JSON格式的输出结果。如果将环境变量设置为任何其他值, 或取消设置它,CLI 命令将输出其结果,如 标志。JSON

例:

SF_CONTENT_TYPE=JSON

SF_CUSTOM_ORG_METADATA_TEMPLATES

指定本地目录或克隆的 GitHub 存储库,其中包含 命令使用的默认自定义代码模板。GitHub URL 指向以下任一根目录: 包含您的模板或存储库中包含 模板。project create

例:

SF_CUSTOM_ORG_METADATA_TEMPLATES=https://github.com/mygithubacct/salesforcedx-templates

SF_DISABLE_AUTOUPDATE 或 SF_AUTOUPDATE_DISABLE(var 均有效)

设置为 以禁用 CLI.默认情况下,CLI 会定期检查并安装更新。trueSF_DISABLE_DNS_CHECK设置为停止 Salesforce CLI 命令 需要组织检查组织是否已连接。例如,该命令需要 Dev Hub 组织。这 默认值为 (Always Check.)trueorg create scratchfalse这 如果您在运行某些 Salesforce 时遇到此错误,环境变量很有用 命令行界面 命令。

DomainNotFound: The org cannot be found

第一 尝试设置 SF_DNS_TIMEOUT 环境变量以增加秒数 Salesforce CLI 等待响应。如果这不起作用,请尝试禁用 完全使用 SF_DISABLE_DNS_CHECK 环境变量进行检查。

SF_DISABLE_SOURCE_MEMBER_POLLING设置为 以禁用对组织的轮询 SourceMember 对象。trueproject deploy|retrieve

这些命令将 SourceMember 对象轮询到 跟踪部署或部署后本地源与组织之间的更改 检索完成。但是,如果您有大型元数据部署,则轮询可以 花点时间,甚至暂停一下。有时你根本不需要源跟踪, 例如在持续集成 (CI) 作业中。这些用例非常适合 设置此环境变量。

环境变量适用于两者 临时组织和沙箱。

警告

禁用 SourceMember 时 轮询,CLI 对本地源和 组织元数据不同步。因此,命令的后续运行是不可靠的,并且 由您来同步您的源。要重置源跟踪,请使用以下命令。project deploy|retrieveproject reset trackingSF_DISABLE_TELEMETRY设置为 以禁用 CLI 收集 使用情况信息、用户环境信息和崩溃报告。trueSF_DNS_TIMEOUT指定需要组织等待的 Salesforce CLI 命令的秒数 用于检查组织是否已连接时的响应。例如,该命令需要 Dev Hub 组织。如果 命令在这段时间内没有收到响应,它们会超时。默认值为 3.org create scratch如果在运行某些 Salesforce 命令行界面 命令。

DomainNotFound: The org cannot be found

第一 尝试设置 SF_DNS_TIMEOUT 环境变量以增加秒数 Salesforce CLI 等待响应。如果这不起作用,请尝试禁用 完全使用 SF_DISABLE_DNS_CHECK 环境变量进行检查。

SF_DOMAIN_RETRY指定 CLI 等待 Lightning Experience 自定义的时间(以秒为单位) 域来解析并在新创建的临时组织中可用。

默认 值为 240(4 分钟)。将变量设置为 0 以绕过 Lightning Experience 完全自定义域检查。SF_HIDE_RELEASE_NOTES设置为静音自动显示 运行 时的发行说明。这 缺省值为 。truesf updatefalse

例:

SF_HIDE_RELEASE_NOTES=true

SF_HIDE_RELEASE_NOTES_FOOTER设置为使样板页脚静音 关于在运行 时显示发行说明。缺省值为 。truesf updatefalse

例:

SF_HIDE_RELEASE_NOTES_FOOTER=true

SF_IMPROVED_CODE_COVERAGE将 Apex 测试结果的范围限定为在测试运行期间输入的类,当运行 和 。设置为以改进代码 覆盖。apex run testapex get testtrueSF_JSON_TO_STDOUT当 Salesforce CLI 命令失败时发送消息,而不是 。设置此项 环境变量 to 对 脚本用例。stdoutstderrtrue

例:

SF_JSON_TO_STDOUT=true

SF_LOG_LEVEL设置 CLI 写入日志的消息级别 文件。

例:

SF_LOG_LEVEL=debug

SF_LOG_ROTATION_PERIODSalesforce CLI 轮换日志文件的时间段。轮换日志文件 指制作文件的备份副本,然后清除当前日志文件 重新开始。例如,如果设置为 ,则 Salesforce CLI 每天午夜轮换日志文件。如果设置为 ,则文件每 2 周轮换一次。有关其他时间段选项,请参阅此表中的条目。这 缺省值为 。1d2wperiod1d

例:

SF_LOG_ROTATION_PERIOD=2w

SF_LOG_ROTATION_COUNT轮换日志文件时要保留的备份文件数。缺省值为 。查看SF_LOG_ROTATION_PERIOD了解更多信息 信息2

例:

SF_LOG_ROTATION_COUNT=10

SF_MDAPI_TEMP_DIR在运行某些 CLI 时将文件(元数据格式)放在指定目录中 命令,例如 .挡 由于多种原因,这些文件可能很有用。您可以调试在 命令执行。您可以在以下情况下使用生成的包.xml 运行后续命令,或作为创建清单的起点 包括您关心的所有元数据 大约。project retrieve start

SF_MDAPI_TEMP_DIR=/users/myName/myDXProject/metadata

SF_NEW_VERSION_CHECK_FREQ一个数字,指定显示有关 新 Salesforce CLI 版本的可用性。默认情况下,每个 CLI 命令执行 检查是否有新的 Salesforce CLI 版本可用,并打印出警告 消息(如果找到)。使用此环境变量 with 更改消息的频率 显示。要完全禁用版本检查,请使用 。SF_NEW_VERSION_CHECK_FREQ_UNITSF_SKIP_NEW_VERSION_CHECK

默认值为 ,表示显示警告消息 每次找到新版本时。0

例如,要查看警告消息 1 一天的时间:

SF_NEW_VERSION_CHECK_FREQ=1
SF_NEW_VERSION_CHECK_FREQ_UNIT=days

SF_NEW_VERSION_CHECK_FREQ_UNIT显示警告消息的频率的时间单位 新 Salesforce CLI 版本的可用性。默认情况下,每个 CLI 命令执行 检查是否有新的 Salesforce CLI 版本可用,并打印出警告 消息(如果找到)。使用此环境变量 with 更改消息的频率 显示。要完全禁用版本检查,请使用 。SF_NEW_VERSION_CHECK_FREQSF_SKIP_NEW_VERSION_CHECK

可能的值为 、 、 、 、 和。缺省值为 。dayshoursminutessecondsmillisecondsminutes

例如,要查看警告消息 每天一次:

SF_NEW_VERSION_CHECK_FREQ=1
SF_NEW_VERSION_CHECK_FREQ_UNIT=days

SF_NETWORK_MUTEX_PORT将 SF_USE_NETWORK_MUTEX设置为 时指定本地网络服务器的端口,以便在安装或更新时启用该选项 Salesforce 命令行界面。trueyarn–mutex network

仅当您同时将 SF_USE_NETWORK_MUTEX。默认值为 31997。SF_NPM_REGISTRY将 URL 设置为专用 npm 服务器,其中发布的所有包都是专用的。 我们仅支持不需要的存储库 认证。

例:

SF_NPM_REGISTRY=http://mypkgs.myclient.com/npm/my_npm_pkg

Verdaccio 是 轻量级专用 npm 代理注册表的示例。SF_ORG_API_VERSION特定项目或所有项目的 API 版本。通常,Salesforce CLI 假定你使用的 CLI 版本与开发人员中心相同。SF_ORG_INSTANCE_URL托管组织的 Salesforce 实例的 URL。缺省值为 。我们建议 将此值设置为组织的 My Domain 登录 URL。您可以找到 My Domain “设置”中“我的域”页面上的登录 URL。https://login.salesforce.comSF_ORG_MAX_QUERY_LIMITCLI 命令返回的最大 Salesforce 记录数。默认值 是 10,000。

例:

SF_ORG_MAX_QUERY_LIMIT=200000

SF_ORG_METADATA_REST_DEPLOY设置为使 Salesforce CLI 使用 用于部署的元数据 REST API。默认情况下,Salesforce CLI 使用 SOAP。部署 使用 REST 不受 39 MB .zip 文件大小限制的约束,该限制 适用于 SOAP 部署。trueSF_PRECOMPILE_ENABLE设置为在 运行测试。此变量与命令一起使用。缺省值为 。trueapex run testfalse

重要

Apex 测试预编译的持续时间可能不一致。如 结果,相同的 Apex 测试的运行有时很快,有时则需要时间 外。我们建议您仅在 Apex 测试(不预编译)激活多个 消耗许多系统资源的并发 Apex 编译。trueSF_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_CREATE对于 ,禁用自动更新到 sfdx-project.json 文件。package createSF_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_VERSION_CREATE对于 ,禁用自动 对 sfdx-project.json 文件的更新。package version createSF_SKIP_NEW_VERSION_CHECK设置为禁用 Salesforce CLI 版本 检查。默认情况下,每个 CLI 命令执行都会检查是否有新的 Salesforce CLI 版本可用,如果找到警告消息,则打印出警告消息。 虽然此消息很有用,但它通常是不需要的,尤其是在持续集成中 (CI) 环境。缺省值为 。truefalse要继续检查新的 CLI 版本,但更改显示的频率 警告消息,请使用 和 环境 变量。SF_NEW_VERSION_CHECK_FREQSF_NEW_VERSION_CHECK_FREQ_UNITSF_SOURCE_MEMBER_POLLING_TIMEOUT设置为您希望命令在命令之前继续轮询 SourceMember 对象的秒数 超时。该命令轮询 SourceMember 对象,用于跟踪本地源和 部署完成后的组织。Salesforce CLI 根据 它部署的组件。使用此环境变量覆盖计算出的 暂停。project deploy startproject deploy startproject deploy start

例如,如果部署在 3 分钟后超时,请尝试将 超时 5 分钟 (300 秒):

SF_SOURCE_MEMBER_POLLING_TIMEOUT=300

SF_SOURCE_TRACKING_BATCH_SIZE在部署或检索期间设置源跟踪的文件批大小。默认值 是 8,000 (Windows) 或 15,000 (Linux/macOS)。

此环境变量在以下情况下很有用 部署或检索包含许多源代码跟踪文件的大型项目,以及 超出操作系统打开文件限制。虽然部署或检索可能 成功完成,在这种情况下,源跟踪可能会遇到错误。也 增加打开文件限制,例如使用命令 (Linux/macOS),或将环境变量设置为数字 明显低于ulimit -Hn <number>SF_SOURCE_TRACKING_BATCH_SIZEulimit -Hn.SF_TARGET_DEV_HUB指定默认 Dev Hub 组织的用户名,因此不必使用该标志。覆盖配置值的值。–target-dev-hubtarget-dev-hub

示例 将其设置为 别名:

SF_TARGET_DEV_HUB=myDevHub

例 将其设置为组织 用户名:

SF_TARGET_DEV_HUB=mydevhuborg@example.com

SF_TARGET_ORG指定默认组织的用户名,因此您不必使用该标志。覆盖配置变量的值。–target-orgtarget-org

设置示例 它到一个 别名:

SF_TARGET_ORG=myscratchorg

例 将其设置为 用户名:

SF_TARGET_ORG=test-xhquykly9fhl@example.com

SF_USE_GENERIC_UNIX_KEYCHAIN(仅限 Linux 和 macOS)如果需要,请设置为 使用通用 UNIX 钥匙串,而不是 Linux 库或 macOS 钥匙串。在使用 在 CI 环境中使用 ssh 或“无头”的 Salesforce CLI。truelibsecretSF_USE_NETWORK_MUTEX设置为 以在安装或更新时启用该选项 Salesforce 命令行界面。默认值为 (其中 启用该选项。trueyarn–mutex networkfalse–mutex file

Salesforce 命令行界面 插件安装使用。如果你 在安装或更新过程中遇到错误,请尝试将此环境变量设置为 打开本地网络以管理 并发实例。这种行为更 可靠,有时可以修复安装错误。此本地网络的默认端口 服务器是 31997。将 SF_NETWORK_MUTEX_PORT 环境变量设置为使用不同的 港口。yarntrueyarn

有关更多信息,请参阅 yarn 文档。SF_USE_PROGRESS_BAR设置为禁用进度 酒吧。project deploy startfalse

例子:

SF_USE_PROGRESS_BAR=false.

常规环境变量

HTTP_PROXY如果您在 防火墙或 Web 代理后面的计算机,请设置此环境变量。用 公司代理的 URL 和端口,用于 例:

http://username:pwd@proxy.company.com:8080

HTTPS_PROXY如果您在 防火墙或 Web 代理后面的计算机,请设置此环境变量。用 公司代理的 URL 和端口,用于 例:

http://username:pwd@proxy.company.com:8080

NODE_EXTRA_CA_CERTS安装自签名证书。指示指向 证书文件名。然后运行 .sf update

有关详细信息,请参见 NODE_EXTRA_CA_CERTS=file。NODE_TLS_REJECT_UNAUTHORIZED要允许 Node.js 在证书链中使用自签名证书, 表明。0

API 版本和源 API 版本在 Salesforce CLI 中的工作原理

Salesforce CLI 在部署或 向组织检索元数据或从组织检索元数据。虽然它们听起来相同,并且通常设置为相同 值,这两个设置的工作方式不同。

为简单起见,让我们使用本主题中的术语 和 ,并首先定义每个术语 方法。apiVersionsourceApiVersionapi版本该值决定了 HTTPS 请求或响应apiVersion

更深入地挖掘,指的是用于为 HTTPS 提供服务的核心元数据 API 版本 请求或响应。将元数据源部署到组织时,Salesforce CLI 会设置对象的值,并使用 具有 SOAP 或 REST API 的 HTTPS 请求。因为目前没有 REST 用于元数据检索的 API,Salesforce CLI 使用在对象上设置的值来创建 URL 用于 SOAP 端点。apiVersionapiVersionConnectionapiVersionConnectionsourceApiVersion该值决定了形状 HTTPS 请求或响应中的元数据sourceApiVersion

Salesforce CLI 在清单文件中设置元素时使用该值 ()。在以下情况下,该文件包含在 HTTPS 请求或响应中 分别部署或检索。sourceApiVersion<version>package.xmlpackage.xml

以下示例显示了这两个设置如何协同工作:

  • 检索:假设在 22 年夏季向元数据类型添加了一个新字段 release,即 API 版本。如果设置为 ,然后执行该命令,则检索到的元数据将不包含此新字段。然而 设置为的相同检索会返回带有新字段的元数据。55.0sourceApiVersion54.0project retrieve startsourceApiVersion55.0
  • 部署:再次假设在 API 版本中将新字段添加到元数据类型中。如果设置为并尝试 部署包含此新字段的本地元数据文件时,部署将失败。自 使用新字段成功部署元数据,必须设置为或更大。55.0sourceApiVersion54.0sourceApiVersion55.0

Salesforce CLI 设置的优先级

有多种方法可以设置 和 ,以及 Salesforce CLI 确定的多种方式 如果尚未显式设置它们,则为它们的值。使用以下优先级列表可以 确定环境中这两个设置的值。设置在列表的更高位置 优先于较低的。请参阅本节后面的示例以了解这是如何实现的 优先级会影响元数据的部署和检索。apiVersionsourceApiVersionapiVersion:优先顺序

  1. –api-version命令标志。
  2. SF_ORG_API_VERSION环境变量。
  3. org-api-version本地配置变量。
  4. org-api-version全局配置 变量。
  5. 目标组织支持的最高 API 版本。

sourceApiVersion:优先顺序

  1. <version>元素 ( )。package.xml
  2. sourceApiVersion属性。sfdx-project.json
  3. –api-version命令标志。
  4. SF_ORG_API_VERSION环境变量。
  5. org-api-version本地配置变量。
  6. org-api-version全局配置 变量。
  7. 目标组织支持的最高 API 版本。

部署显示设置优先级的示例

这些示例设置了各种用例,然后在部署后显示结果。设置:设置为使用本地配置变量 ()。在文件中设置为。apiVersion55.0sf config set org-api-version=55.0sourceApiVersion54.0sfdx-project.json命令sf project deploy start –source-dir force-app

结果:Salesforce CLI 将部署请求发送到 API 版本端点。清单中随 请求的值为 ,这意味着 正在部署的元数据源处于 API 版本形状中。55.0<version>54.054.0设置:设置为使用本地配置变量 ()。在文件中设置为。apiVersion55.0sf config set org-api-version=55.0sourceApiVersion54.0sfdx-project.json命令sf project deploy start –source-dir force-app –api-version=56.0

结果:Salesforce CLI 发送部署 请求到 API 版本终端节点。清单中 随请求一起发送的值为 ,其中 表示正在部署的元数据源处于 API 版本形状中。56.0<version>54.054.0设置:设置为使用本地配置变量 ()。这 SF_ORG_API_VERSION环境变量设置为 。不是 中定义。apiVersion55.0sf config set org-api-version=55.056.0sourceApiVersionsfdx-project.json命令sf project deploy start –source-dir force-app

结果:Salesforce CLI 将部署请求发送到 API 版本端点。清单中随 请求的值为 ,这意味着 正在部署的元数据源处于 API 版本形状中。56.0<version>56.056.0设置:设置为使用本地配置变量 ()。在文件中设置为。清单文件中的元素已设置 自。apiVersion55.0sf config set org-api-version=55.0sourceApiVersion54.0sfdx-project.json<version>53.0命令sf project deploy start –manifest ./package.xml

结果:Salesforce CLI 将部署请求发送到 API 版本终结点。清单中随 请求的值为 ,这意味着 正在部署的元数据源处于 API 版本形状中。55.0<version>53.053.0设置:无。组织支持的最高 API 版本为56.0命令sf project deploy start –source-dir force-app

结果:Salesforce CLI 将部署请求发送到 API 版本端点。清单中随 请求的值为 ,这意味着 正在部署的元数据源处于 API 版本形状中。56.0<version>56.056.0

检索显示设置优先级的示例

这些示例设置了各种用例,然后在检索后显示结果。设置:设置为使用本地配置变量 ()。在文件中设置为。apiVersion55.0sf config set org-api-version=55.0sourceApiVersion54.0sfdx-project.json命令sf project retrieve start –source-dir force-app

结果:Salesforce CLI 将检索请求发送到 API 版本 SOAP 端点。清单中随 请求的值为 ,这意味着 要检索的元数据源处于 API 版本形状中。55.0<version>54.054.0设置:设置为使用本地配置变量 ()。在文件中设置为。apiVersion55.0sf config set org-api-version=55.0sourceApiVersion54.0sfdx-project.json命令sf project retrieve start –source-dir force-app –api-version 56.0

结果:Salesforce CLI 发送 检索对 API 版本 SOAP 的请求 端点。元素 随请求一起发送的清单的值为 ,这意味着要检索的元数据源处于 API 版本形状中。56.0<version>54.054.0设置:设置为使用本地配置变量 ()。这 SF_ORG_API_VERSION环境变量设置为 。不是 中定义。apiVersion55.0sf config set org-api-version=55.056.0sourceApiVersionsfdx-project.json命令sf project retrieve start –source-dir force-app

结果:Salesforce CLI 将检索请求发送到 API 版本 SOAP 端点。清单中随 请求的值为 ,这意味着 要检索的元数据源处于 API 版本形状中。56.0<version>56.056.0设置:设置为使用本地配置变量 ()。在文件中设置为。清单文件中的元素已设置 自。apiVersion55.0sf config set org-api-version=55.0sourceApiVersion54.0sfdx-project.json<version>53.0命令sf project retrieve start –manifest ./package.xml

结果:Salesforce CLI 将检索请求发送到 API 版本 SOAP 端点。清单中随 请求的值为 ,这意味着 要检索的元数据源处于 API 版本形状中。55.0<version>53.053.0设置:无。组织支持的最高 API 版本为56.0命令sf project retrieve start –source-dir force-app

结果:Salesforce CLI 将检索请求发送到 API 版本 SOAP 端点。清单中随 请求的值为 ,这意味着 要检索的元数据源处于 API 版本形状中。56.0<version>56.056.0

CLI 参数解析顺序

由于您可以通过多种方式为给定的 Salesforce CLI 命令指定参数, 了解解析顺序很重要。

Salesforce CLI 解析命令行标志和参数、定义文件、环境 变量和设置按此顺序排列,这意味着列表顶部的项目采用 优先级低于以下项目:

  • 命令行标志,例如 .–target-org
  • 在命令行中指定的文件中列出的选项。一个例子是临时组织 文件中的定义,您可以使用标志 指定。如果在命令行中指定一个标志,例如 ,其值与 定义文件时,命令行标志优先。–definition-fileorg create scratch–edition
  • 环境变量,例如 SF_TARGET_ORG。
  • 局部配置变量,例如 或 。自 查看本地配置变量,从项目目录运行。target-orgtarget-dev-hubsf config list
  • 全局 CLI 配置变量。要查看全局配置变量,请从任意 目录。sf config list –global

请记住,命令行标志位于优先级列表的顶部。例如,假设您 将 SF_TARGET_ORG 环境变量设置为 。如果指定何时运行命令,则 使用用户名连接到组织。myorg@mydomain.com–target-org myotherorg@myotherdomain.commyotherorg@myotherdomain.com

同样,假设您将配置变量设置为 。如果 指定在运行命令时连接到组织 替换为用户名。target-orgmyorg@mydomain.com–target-org myotherorg@myotherdomain.commyotherorg@myotherdomain.com

支持 JSON 响应

Salesforce CLI 命令通常将其输出显示在控制台 (stdout) 中 非结构化、人类可读的格式。写入日志文件 (stderr) 的消息始终采用 JSON 格式。

要以 JSON 格式查看控制台输出,请指定特定 CLI 命令的标志。–json

sf org display --json

大多数 CLI 命令都支持 JSON 输出。若要确认,请运行带有标志的命令以查看支持的标志。该标志列在“全局标志”下。–help–json

要获取对所有 Salesforce CLI 命令的 JSON 响应而不每次都指定标志,请设置 SF_CONTENT_TYPE 环境 变量。–json

export SF_CONTENT_TYPE=JSON

按任意顺序指定主题和命令

在终端或命令提示符下键入命令时,可以输入主题和 命令以任意顺序排列。Salesforce CLI 确定您指的是哪个命令并自动运行 它没有错误。

例如,假设您想使用 JWT 登录组织,但忘记了确切的命令。所有这些命令都可以工作,而不会返回错误:Command not found

sf login org jwt <flags>
sf org login jwt <flags>
sf jwt org login <flags>

如果您只记得命令的一部分,请仍然运行部分命令以查看所有命令的列表 包含部件的命令。使用箭头突出显示您想要的那个,然后按 返回选择它。

例如,当您键入 时,您会看到以下内容 对话框中,您可以选择所需的命令:sf list

sf list
? Which of these commands do you mean (Use arrow keys)
❯ community list template         Retrieve the list of templates available in your org. 
  env list                        List the environments you’ve created or logged into. 
  env logdrain list               List log drains connected to a specified environment. 
  env var list                    List your environment's config vars in a table. 
  org list shape                  List all org shapes you’ve created. 
  org list snapshot               List scratch org snapshots. 
  package installed list          List the org’s installed packages.

若要缩小一长串可能的命令范围,请提供一个标志。例如,如果运行 ,则仅显示 和 命令,因为它们是唯一具有该标志的命令。sf list –allenv listorg list–all

每个命令仍然有一个规范签名,我们在示例中使用该签名来组织 Salesforce CLI 命令参考。–help

日志消息和日志级别

Salesforce CLI 将所有日志消息写入文件。CLI 调用将日志消息附加到此 运行日志文件。只有错误会输出到运行的终端或命令窗口 CLI.

USER_HOME_DIR/.sf/sf.log

重要

USER_HOME_DIR/.sf 目录中的文件是 由 Salesforce CLI 在内部使用。请勿删除或编辑它们。

日志消息的缺省级别为 。您可以设置 日志级别设置为以下级别之一,按信息从少到多的顺序列出。这 级别是累积的:对于级别,日志文件 还包括 、 和 级别的消息。warndebuginfowarnerror

  • error
  • warn
  • info
  • debug
  • trace
  • fatal

使用 SF_LOG_LEVEL 环境变量全局设置所有 CLI 命令的日志级别。 例如,在 UNIX 上:

export SF_LOG_LEVEL=debug

注意

Salesforce CLI 收集有关其使用情况的诊断信息,并将其报告给 Salesforce,以便开发团队可以调查问题。信息类型 包括命令持续时间和命令调用计数。

轮换日志文件

Salesforce CLI 使用轮换日志文件。默认情况下,每天午夜 Salesforce CLI 创建日志文件的备份副本,然后清除其条目以重新开始。 备份将与当天的日志一起保留过去两天。此行为 确保当前日志文件不会变得太大。

您可以使用以下环境变量更改默认行为:

  • SF_LOG_ROTATION_PERIOD:创建新日志文件的频率,例如默认的 值为一天 () 或两周。1d2w
  • SF_LOG_ROTATION_COUNT:要保留的备份文件数。默认值为 2。

例如,假设您选择的轮换周期为 2 周,计数为 2。这些 值可确保您拥有 当前日志。

禁用 Salesforce CLI 数据收集和指标

Salesforce 收集使用情况数据和指标(遥测)以帮助改进 Salesforce CLI。 我们收集与使用 Salesforce CLI 和插件相关的匿名信息,例如 运行了命令和标志,以及性能和错误数据。

我们使用这些数据来改进 CLI,方法是查看命令执行的趋势以及 CLI 如何 已配置。我们还研究错误数据以改进 CLI 并在我们的 工作(和你的)。使用 CLI 时,会自动注册遥测。

如果希望选择退出遥测,请将配置变量设置为 。disableTelemetrytrue

sf config set disable-telemetry=true --global

或者,您可以通过设置环境变量来选择退出:。SF_DISABLE_TELEMETRY=true

卸载 Salesforce CLI 或插件

卸载 Salesforce CLI 会将其从计算机中完全删除。

macOS 或 Linux

在终端中输入所有这些命令以删除 Salesforce CLI。命令卸载 (v7) 和 (v1 和 v2)。sfdxsf

sudo rm -rf /usr/local/sfdx
sudo rm -rf /usr/local/lib/sfdx
sudo rm -rf /usr/local/bin/sfdx
sudo rm -rf ~/.local/share/sfdx ~/.config/sfdx ~/.cache/sfdx
sudo rm -rf ~/Library/Caches/sfdx
sudo rm -rf /usr/local/sf
sudo rm -rf /usr/local/bin/sf
sudo rm -rf ~/.local/share/sf ~/.config/sf ~/.cache/sf
sudo rm -rf ~/Library/Caches/sf

窗户

以下步骤将卸载 (v7) 和 (v1 和 v2):sfdxsf

  1. 选择“开始”>“控制面板”>“程序”>“程序和功能”。
  2. 选择 @salesforce/cli,然后单击卸载
  3. 在主目录中,删除以下两个目录:
    • .config\sfdx
    • .config\sf

如果仍安装 Salesforce CLI,请删除以下目录:

  • %LOCALAPPDATA%\sfdx
  • %LOCALAPPDATA%\sf

npm

  1. 要卸载 (v7),请从终端或命令运行此命令 提示:sfdxnpmnpm uninstall sfdx-cli --global自 卸载(v1 或 v2),运行此命令 命令:sfnpm uninstall @salesforce/cli --global
  2. 在主目录中,删除这两个目录。
    • Library/Caches/sfdx(在 Windows 上:Library\Caches\sfdx)
    • Library/Caches/sf(在 Windows 上:Library\Caches\sf)

删除授权和日志文件

卸载 Salesforce CLI 后,您的计算机仍具有特定于 CLI 使用情况的数据,例如 作为日志文件和有关您已登录或创建的组织的授权信息。 如果您以后重新安装 Salesforce CLI,保留这些文件很有用,因为您不会 必须重新授权这些组织,才能查看旧日志。但是,如果您想删除 这些文件,也运行这些命令。

在 macOS 或 Linux 上:

sudo rm -rf ~/.sfdx
sudo rm -rf ~/.sf

在 Windows 上,删除家中的这些目录 目录:

  • .sfdx
  • .sf

卸载插件

使用命令卸载 您之前安装的插件。plugins:uninstall

例如,假设您以前安装了该插件的特定版本,但现在您 想要返回到最新版本。卸载插件将带您回到核心 与 CLI 捆绑在一起的版本。从终端或 Windows 命令输入此命令 提示:auth

sf plugins:uninstall auth

如果插件是独立的,并且未与 CLI 捆绑在一起,则卸载它会将其删除 来自 Salesforce CLI。

使用 Docker 映像运行 Salesforce CLI

Salesforce 在 Docker Hub 上发布 Salesforce CLI 的 Docker 容器映像。我们 遵循与我们的安装程序和软件包相同的发布流程。每周我们都会发布一个 当周候选发布 (.接下来的一周,我们将图像重新标记为 .您可以运行 或 CLI 版本,或者 特定编号版本。

npmlatest-rc)latestlatestlatest-rc

对于每个 Salesforce CLI 版本,我们提供两种风格:

  • slim – 使用 TAR 文件和 OpenJDK 11 安装在 Linux 上的 CLI。
  • full – 在 Linux 上安装的 CLI,在完整的 Node.js 安装中使用 npm,以及 OpenJDK 11 以及其他实用程序,例如 .jq

请参阅此网页或下表 确定要使用的映像的名称。

Salesforce CLI 版本类型Docker Hub 映像名称
Slim 最新版本salesforce/cli:latest-slim
完整最新版本salesforce/cli:latest-full
Slim 候选版本salesforce/cli:latest-rc-slim
完整候选版本salesforce/cli:latest-rc-full
超薄特定版本,例如 2.0.1salesforce/cli:2.0.1-slim
完整特定版本,例如 2.0.1salesforce/cli:2.0.1-full

例如,要拉取并运行精简的 CLI 候选发布映像,请执行以下操作:

docker pull salesforce/cli:latest-rc-slim
docker run -it salesforce/cli:latest-rc-slim

然后,您可以运行 Salesforce CLI 命令,例如:

sf version

要退出 Salesforce CLI Docker 容器,请执行以下操作:

exit

您还可以在容器运行后从容器外部远程执行命令,并且 知道容器 ID:

docker exec -it 8b1e2696a243 bin/bash sf version

Salesforce CLI 插件

Salesforce CLI 由一个名为 npm 包和多个插件(也称为 npm 包)组成,其中包含 命令。Salesforce CLI 提供的大多数核心功能都来自插件。

@salesforce/cli

安装 Salesforce CLI 时会自动安装某些插件。这些核心插件 包含支持源代码驱动开发的命令,例如:

  • 创建和管理临时组织和沙箱:plugin-org 插件包含以下命令:和org create scratchorg delete sandbox
  • 在组织和本地项目之间部署和检索元数据:plugin-deploy-retrieve 插件包含 和 等命令。project deploy startproject retrieve preview
  • 授权组织:plugin-auth 插件包含 和 等命令。org login weborg logout
  • 创建和管理临时组织用户:plugin-user 插件包含 和 等命令。org create userorg generate password

有些插件只是在您需要时安装,而不是自动包含 在 Salesforce CLI 安装中。在“实时”(JIT) 中运行命令时 插件,Salesforce CLI 首次安装插件的最新版本 ,然后运行该命令。插件安装会自动发生,尽管我们显示 一条小消息,这样你就知道发生了什么。从那时起,运行包含的任何命令 像往常一样在插件中。当您下次使用 时更新 Salesforce CLI,如果 JIT 插件发布了新版本,则它也会更新。 这些 JIT 插件包含大多数 CLI 用户通常不使用的专用命令, 如:sf update

  • 创建和管理第二代软件包:plugin-packaging 插件包含 和 等命令。package version createpackage install
  • 创建和管理自定义元数据类型:plugin-custom-metadata 包含 和 等命令。cmdt generate objectcmdt generate records
  • 创建和管理临时组织快照和形状:plugin-signups 包含 和 等命令。org create shapeorg delete snapshot
  • 创建和管理 Experience Cloud 站点:plugin-community 插件包含 和 等命令。community createcommunity publish

要确定插件是核心插件还是 JIT,请检查 聚合器插件:@salesforce/cli

  • 核心插件列在本节中。oclif:plugins
  • JIT 插件列在本节中。oclif:jitPlugins

请参阅 Salesforce CLI 状态页面,了解核心和 JIT 插件及其 GitHub 的完整列表 存储库及其状态。

您还可以安装更多插件,例如 CRM Analytics,以合并其他 Salesforce 功能添加到您的开发环境中。你也可以开发自己的插件来添加你的 Salesforce CLI 的自定义功能。请参阅 Salesforce CLI 插件开发人员指南

默认情况下,安装 Salesforce 时会安装最新版本的核心插件 第一次使用 CLI。同样,当您将 CLI 更新到最新版本时,核心 插件以及随后安装的任何 JIT 插件也会更新。

要确定 CLI 中当前安装的插件版本,请运行:

sf plugins --core

该命令显示以下示例输出等信息。

@oclif/plugin-autocomplete 3.0.1 (core)
@oclif/plugin-commands 3.0.6 (core)
@oclif/plugin-help 6.0.5 (core)
@oclif/plugin-not-found 3.0.3 (core)
@oclif/plugin-plugins 4.1.0 (core)
@oclif/plugin-search 1.0.6 (core)
@oclif/plugin-update 4.1.3 (core)
@oclif/plugin-version 2.0.6 (core)
@oclif/plugin-warn-if-update-available 3.0.2 (core)
@oclif/plugin-which 3.0.8 (core)
@salesforce/cli 2.17.10 (core)
apex 2.3.20 (core)
auth 2.8.26 (core)
data 2.6.3 (core)
deploy-retrieve 1.20.0 (core)
info 3.0.1 (core)
limits 3.0.1 (core)
login 2.0.1 (core)
marketplace 1.0.2 (core)
org 2.11.8 (core)
packaging 1.27.1
schema 3.0.1 (core)
settings 2.0.2 (core)
sobject 0.2.15 (core)
source 2.11.0 (core)
telemetry 3.1.0 (core)
templates 55.5.18 (core)
trust 3.0.1 (core)
user 2.3.42 (core)

Uninstalled JIT Plugins:
community 2.4.9
custom-metadata 2.2.12
dev 1.3.2
devops-center 1.2.4
env 3.0.1
functions 1.22.9
signups 1.5.6
@salesforce/sfdx-plugin-lwc-test 1.1.1
@salesforce/sfdx-scanner 3.18.0

如示例输出中所示,如果插件的名称旁边有,则它是与 CLI 捆绑的版本。如果安装特定版本的 插件,或者它作为 JIT 插件自动安装,其版本号或标签是 而是显示。例如,命令是 包含在 JIT 插件和示例中 输出指示已安装版本。(core)packagepackaging1.27.1

输出的末尾还显示 尚未安装的可用 JIT 插件。plugins –core

  • 安装其他版本的 Salesforce CLI 插件
    有时您想使用特定版本的插件。例如,假设 Salesforce 修复了命令中的一个错误。该修复程序已在关联的插件中发布,但 Salesforce 尚未将该插件版本包含在当前的 Salesforce CLI 中。但是,您希望在本地开发环境中测试 bug 修复。按照以下步骤安装具有修复程序的插件版本。apex run
  • 自动
    安装受信任的未签名插件 当您使用命令安装插件时,Salesforce CLI 首先验证其数字签名。如果插件提供有效的签名,CLI 将安装它。否则,Salesforce CLI 不会安装它,直到您回答警告提示并确认您了解风险。当您在命令行中以交互方式安装插件时,此过程效果很好,但可能会阻止批处理作业完成。要在不提示的情况下自动安装插件(即使未签名),请在本地文件系统上创建一个允许列表文件并添加您信任的插件。sf plugins install
  • 发现 Salesforce 插件
    查看这些与特定 Salesforce 功能配合使用的其他插件。这些插件由 Salesforce 创建。
  • 快速卸载所有非核心插件
    有时,您希望快速卸载首次安装 CLI 后安装的所有非核心 Salesforce CLI 插件。

安装其他版本的 Salesforce CLI 插件

有时您想使用特定版本的插件。例如,假设 Salesforce 修复了命令中的一个错误。该修复程序具有 已在相关插件中发布,但 Salesforce 尚未包含该插件版本 在当前的 Salesforce CLI 中。但是,您希望在本地开发中测试错误修复 环境。按照以下步骤安装具有 修复。

apex run

  1. 通过运行 which 命令来确定包含该命令的插件。此示例显示 apex run 命令位于 plugin-apex 插件中。sf which apex run === apex run plugin: @salesforce/plugin-apex
  2. 使用 Salesforce 查找插件的存储库 CLI 状态页面。然后导航到其 GitHub 存储库,例如 @salesforce/plugin-apex,其中列出了所有版本和标记。
  3. 安装包含错误修复的版本。例如,要安装 apex 插件版本 2.2.22,请运行以下命令:sf plugins install apex@2.2.22前面的示例使用插件的短名称,如输出中所示 之。您也可以使用插件的 长名称,这是插件的 package.json 文件中的属性。sf plugins –corenamesf plugins install @salesforce/plugin-apex@2.2.22什么时候 您现在运行 ,插件条目显示新安装的版本 而不是.sf plugins –coreapex(core)apex 2.2.21 (2.2.22)
  4. 完成测试后,通过以下方式返回使用插件的当前版本 卸载标记的版本。sf plugins uninstall apex重要当您使用标记(例如 )安装特定插件版本时,您将一直使用该标记,直到您 显式卸载它。2.2.22

自动安装受信任的未签名插件

当您使用该命令安装插件时,Salesforce CLI 首先验证其数字签名。如果插件 提供有效的签名,CLI 将安装它。否则,Salesforce CLI 不会安装它 直到您回答警告提示并确认您了解风险。这个过程 当您在命令行中以交互方式安装插件时,效果很好,但可能会阻止批处理 完成作业。要在不提示的情况下自动安装插件,即使未签名, 在本地文件系统上创建一个允许列表文件,并添加您信任的插件。

sf plugins install

警告

安装插件并在终端中运行其命令之一后, 命令以您的用户权限运行。因此,该命令可以读取加密数据, 与您经过身份验证的任何 Salesforce 组织通信,或删除您家中的文件 目录。仅安装您信任的未签名和未经验证的插件。

  1. 创建一个名为 unsignedPluginAllowList.json 的文件,并将其放在 这些目录:
    • (Linux 和 macOS):$HOME/.config/sf
    • (视窗)根据您的 Windows 配置,C:\Users\username\.config\sf 或 %LOCALAPPDATA%\sf
  2. 将您信任的插件的名称添加到 JSON 文件中的简单字符串数组中。 例如:[ "sfdx-templates", "salesforce-cmdt", ... ]

发现 Salesforce 插件

查看这些与特定 Salesforce 功能配合使用的其他插件。这些插件 由 Salesforce 创建。ISV 技术支持插件

ISVTE 插件是一个按需技术布道者。它会扫描您的包元数据 和代码,并提供有针对性的反馈,以帮助您改进应用并使其面向未来。 反馈包括详细的元数据清单、有关功能或 要考虑使用的技术、启用资源和安装限制。这 反馈还包括最佳做法、合作伙伴警报、改进 合作伙伴 Trailblazer 分数等。虽然它是为 ISV 和 OEM 合作伙伴设计的, 任何在平台上开发的人都可以使用它。

安装插件时,系统会要求您确认其未签名。答。此行为是预期的。yes

请参阅 GitHub 获取文档和更多内容 信息。CRM Analytics 插件

CRM Analytics 是一个基于云的平台,用于连接来自多个来源的数据, 创建该数据的交互式视图,并在应用程序中共享这些视图。

使用 CRM Analytics CLI 插件通过 Analytics Studio 创建临时组织,该 可用于开发和测试源代码。该插件包含调用 用于管理 CRM Analytics 资产的 Analytics REST API 端点的子集 编程。创建和迭代开发 CRM Analytics 模板。更新和 删除应用、仪表板、镜头和数据流。使用历史记录命令恢复以前的 仪表板和数据流的版本。管理嵌入式的自动安装生命周期 模板化应用。

请参阅使用 Analytics 插件进行开发,了解 Salesforce CLI 提供文档和更多信息。Salesforce 代码分析器插件

Salesforce Code Analyzer 插件是用于源静态分析的统一工具 代码,使用多种语言(包括 Apex),具有一致的命令行界面 和报告输出。我们目前支持 PMD 规则引擎、ESLint 和 RetireJS。

当扫描程序发现问题时,该插件会创建“规则违规”。 开发人员使用此信息作为反馈来修复其代码。集成此插件 添加到您的持续集成 (CI) 解决方案中,以持续执行规则和 确保高质量的代码。

有关文档和详细信息,请参阅 GitHub。

快速卸载所有非核心插件

有时,您想快速卸载所有非核心 Salesforce CLI 插件 在首次安装 CLI 之后安装。

非核心插件的示例包括:

  • 使用该命令显式安装的第三方插件。plugins install
  • 运行其中一个命令时自动安装的 JIT 插件。
  • 与命令链接的本地插件。plugins link

要卸载所有非核心插件,请运行此命令。

sf plugins reset

命令完成后,您只剩下核心 Salesforce CLI 插件,就好像您一样 刚刚从头开始安装了 CLI。

Salesforce CLI 疑难解答

以下是 Salesforce CLI 错误及其修复方法的列表。

  • 使用“医生
    ”解决问题 使用命令快速收集 Salesforce CLI 配置数据并运行诊断测试。使用该命令可以轻松生成信息文件,您可以将其附加到 GitHub 问题或提供给 Salesforce 客户支持。doctor
  • 错误:使用 ENOENT
    命令失败 最近安装 Salesforce CLI 后,当您运行诸如 .project generate

使用医生解决问题

使用命令快速收集 Salesforce CLI 配置数据并运行诊断测试。使用命令轻松生成 您可以附加到 GitHub 问题或提供给 Salesforce 客户的信息文件 支持。

doctor

在没有标志的情况下运行,该命令首先显示基本信息,例如您是否处于 最新的 CLI 版本。然后,它会将您的配置和详细诊断写入 JSON 文件。使用标志 以指定其他目录。–output-dir

sf doctor --output-dir diagnostic-files

使用标志在 调试模式;医生将两者写入单独的文件。将命令封装在双引号中。–commandstdoutstderr*.log

sf doctor --command "org list --all"

要在特定插件上运行诊断测试,而不是 CLI 本身,请使用标志。如果插件没有听医生的话, 然后,您会收到警告,并且没有数据。–plugin

sf doctor --plugin @salesforce/plugin-source

若要创建 GitHub 问题,请使用标志,在提示符处输入标题和浏览器窗口 自动打开,显示部分填充的 GitHub 问题。输入其余信息 关于您的具体问题,请单击提交新问题,然后 Salesforce CLI 团队会收到有关您的问题的警报。–create-issue

CLI 医生已准备好诊断您的所有问题!

错误:命令失败,使用 ENOENT

最近安装 Salesforce CLI 后,当您运行以下命令时,您会收到此错误 如。

project generate

ERROR running project generate:  Command failed with ENOENT: npm root -g --prefix /Users/johndoe/Documents/sf_workspaces/.yo-repository --loglevel error
spawnSync npm ENOENT

答:安装 节点.js。

CLI 弃用策略

例如,Salesforce 在底层 API 时弃用 CLI 命令和标志 变化。

Salesforce CLI 弃用策略为:

  • Salesforce 可以随时弃用命令或标志。
  • 当您运行已弃用的命令时,Salesforce 会为 至少 4 个月。
  • Salesforce 在弃用后 4 个月或更长时间删除已弃用的命令或标志 首先出现警告。
  • 如果使用已弃用但尚未删除的命令或标志,则会收到警告 指定人类可读时的消息 输出。如果指定 JSON 输出,则警告将显示为属性。消息 包括何时删除命令或标志的插件版本。命令帮助 在适当的时候还包括弃用信息。stderr
  • 如果可能,Salesforce 会提供已弃用命令的功能替代方法,或者 旗。
  • Salesforce 在版本中宣布了新的和即将弃用的命令和标志 笔记。

后续步骤

请继续阅读,了解安装 Salesforce CLI 后要执行的操作。

查看示例库中的示例。图库包含 示例应用程序,显示您可以在 Salesforce 平台上构建的内容。他们是 不断更新以纳入最新功能和最佳实践。

使用快速入门快速提升 Salesforce CLI 上速:Salesforce DX Trailhead 项目。然后,使用“与包开发一起构建应用”跟踪直接进入开发阶段。

想要更直观的开发人员体验?我们为您提供保障!查看适用于 VS Code 的 Salesforce 扩展, 它基于 Salesforce CLI 构建。

阅读 Salesforce DX 文档:

  • Salesforce DX 开发人员指南,了解如何管理和 在整个生命周期内在 Salesforce Platform 上开发应用程序。
  • Salesforce CLI 命令参考,获取完整列表 CLI 命令及其使用方法。
  • Salesforce CLI 插件开发人员指南,了解如何 为 Salesforce CLI 开发您自己的插件。

发展路径

Salesforce CLI 是一个功能强大的工具,可用于在 许多不同的方式。以下是一些常见的途径,以及获得所需的步骤 开始并就下一步做什么提出建议。入门:使用 Scratch Orgs 进行开发临时组织是 Salesforce 代码的源代码驱动和一次性部署,并且 元数据。Scratch 组织在 开发过程,并促进自动化测试和持续集成。

  1. 作为管理员用户,在 Developer Edition、试用版或生产组织(如果您是 客户)或您的业务组织(如果您是 AppExchange) 合作伙伴)。如果您没有组织,请注册免费的 Developer Edition Salesforce 开发人员上的组织 网站。
  2. 如果希望开发团队创建临时组织,请将其添加到开发人员中心组织。
  3. (可选)在开发人员中心中打开 Einstein 功能,以消除在 scratch 中启用聊天机器人功能的手动步骤 组织。
  4. 从 GitHub 克隆示例 Salesforce DX 项目 并尝试最常见的 CLI 命令。然后查看 Salesforce DX 开发人员指南并了解 Salesforce DX 项目 配置、临时组织、同步代码和其他开发人员 主题。

入门:开发第二代托管包作为 AppExchange 合作伙伴,使用第二代托管打包 (2GP) 来组织 您的源代码,构建小型模块化包,与您的版本集成 控制系统,并更好地使用您的自定义 Apex 代码。

  1. 作为管理员用户,在 Developer Edition、试用版或生产组织(如果您是 客户)或您的业务组织(如果您是 AppExchange) 合作伙伴)。如果您没有组织,请注册免费的 Developer Edition Salesforce 开发人员上的组织 网站。
  2. 在开发人员中心中,启用第二代 包装。
  3. 如果希望开发团队创建 2GP 托管包,请将其添加到开发人员中心 组织。
  4. 阅读有关 2GP 托管包以及如何创建它们的所有信息 Salesforce DX 开发人员指南。

入门:使用沙盒沙盒是可用于开发的 Salesforce 组织的副本, 测试和训练,而不会影响 生产组织。您可以在生产组织中启用源跟踪,以便开发人员 Developer Pro 沙盒会自动跟踪生产组织和 本地开发工作区。

  1. 启用源跟踪 你的沙盒。
  2. 了解如何使用 Salesforce CLI 通过以下方式创建、管理和开发沙盒 阅读 Salesforce DX 开发人员指南。

Salesforce CLI 设置指南

准备工作

Salesforce CLI 是一个命令行界面,可简化开发和构建 与您的 Salesforce 组织合作时的自动化。使用它来创建和管理组织, 将源文件与组织同步,创建和安装软件包等。

重要

你还在使用(v7)吗? 如果是这样,请参见从 sfdx (v7) 移动到 sf (v2)。sfdx

Salesforce CLI 基于 oclif,这是一个用于构建命令行的开源框架 Node.js 中的接口。在本地计算机或持续集成 (CI) 上运行它 系统。它支持安装自定义插件。

我们每周都会发布新版本的 CLI 和插件。阅读每周发行说明,了解最近和 即将到来的更改。

系统要求

在开始之前,请查看这些系统要求以充分利用 Salesforce CLI 和开发人员工具。操作系统Salesforce CLI 支持以下操作系统。

  • Windows – Windows 8.1 和 Windows Server 2012(64 位和 32 位)或 后
  • Mac—macOS 10.11 或更高版本(Intel 和 M1)
  • Linux – Ubuntu 20.04

代码编辑器或 IDE您可以使用任何代码编辑器。建议使用 Visual Studio Code (VS Code) 并安装适用于 VS Code 的 Salesforce 扩展 专为在 Salesforce Platform 上进行开发而设计。

注意

如果您使用 适用于 VS Code 的 Salesforce 扩展,请记住,某些 CLI 命令 在命令面板中不可用。如果在 VS Code,在集成终端中运行它。开启 API 系统权限Salesforce CLI 需要启用 API 的系统权限,该权限提供 以编程方式访问组织的信息。如果无法运行 CLI 命令,请您的 Salesforce 管理员启用此权限。版本控制系统您可以使用任何版本控制系统 (VCS)。我们建议您使用 GitHub 利用 GitHub 存储库中的示例。节点.js我们将 Node.js 捆绑在每个特定于操作系统的 Salesforce CLI 中 安装。我们包含具有活动 LTS 状态的 Node.js 版本,并与 Node.js 发布计划。如果您更喜欢使用 安装 Salesforce CLI,我们建议您也使用 Active LTS 版本 节点.js。npm

Salesforce CLI 版本支持

Salesforce 仅支持最新版本的 Salesforce CLI。请参阅 Salesforce CLI 发行说明,了解 最新版本信息。

Salesforce CLI 发行说明

使用发行说明了解 Salesforce 的最新更新和更改 命令行界面。

我们每周发布 Salesforce CLI 的新版本。阅读每周发行说明,了解新功能、更改和错误修复 在当前版本和候选版本中。

从 sfdx (v7) 移动到 sf (v2)

如果您当前正在使用 (v7),我们高度 建议移至 (v2)。搬家很简单:你 首先卸载 (v7),然后安装 (v2)。移动后,CLI 命令 在终端或持续集成 (CI) 脚本中运行将继续像以前一样工作。

sfdxsfsfdxsf

重要

您必须先卸载 (v7) 安装 (v2),也可以获取安装 错误。此要求适用于所有安装方法:npm、特定于操作系统的安装程序和 TAR 文件。sfdxsf

确定 (v7) 是否安装在 您的计算机,请在终端(macOS 和 Linux)或命令提示符下运行此命令 (视窗):sfdx

sfdx version
sfdx-cli/7.208.10 darwin-arm64 node-v18.16.0

如果显示的版本开始 如图所示,则 (v7) 已安装在您的计算机上。sfdx-cli/7sfdx

本文档中的各节说明如何将三种安装方法移至 (v2):、macOS 或 Windows 安装程序和 TAR 文件。选择适用于您的环境的部分。如果 您不确定最初如何安装 (v7), 阅读此文档。你是 使用 Docker?阅读我们更新的 Docker 说明,了解如何 获取 (v2) 映像。sfnpmsfdxsf

npm

  1. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  2. 使用以下命令卸载 (v7):sfdxnpm uninstall sfdx-cli --global
  3. 验证您是否已通过以下方式卸载 (v7) 运行命令。如果您卸载了 正确地,该命令失败。例如,在 macOS操作系统:sfdxsfdx versionsfdx version -bash: sfdx: command not found
  4. 使用此命令安装 (v2)。sfnpm install @salesforce/cli --global如果你 已安装 (v1),此命令将更新 它到 v2。sf
  5. 验证是否已通过以下方式安装 (v2) 运行以下命令:sfsf version @salesforce/cli/2.0.1 darwin-arm64 node-v18.16.0版本以 开头。以下命令还 返回相同的版本,因为现在是别名 自:@salesforce/cli/2sfdxsfsfdx version @salesforce/cli/2.0.1 darwin-arm64 node-v18.16.0

恭喜,你已成功迁移到 (v2)!sf

macOS 或 Windows 安装程序

安装程序是指 Windows 或 macOS 安装程序文件。.exe.pkg

  1. 卸载当前的 sfdx (v7) 安装。截至 2021 年 10 月,如果您最初安装了 Salesforce CLI 使用特定于操作系统的安装程序,您实际上得到了两个可互操作的 CLI(又名 可执行文件)捆绑在一起:(v7) 和 (v1)。卸载 Salesforce CLI 时,它会 删除这两个可执行文件。sfdxsf
  2. 打开终端 (macOS) 或命令提示符 (Windows)。
  3. 验证您是否已通过以下方式卸载 (v7) 运行命令。如果您卸载了 正确地,该命令失败。例如,在 macOS操作系统:sfdxsfdx versionsfdx version -bash: sfdx: command not found
  4. 使用以下安装程序链接安装 (v2):sf
    • macOS操作系统
      • 苹果芯片
      • 英特尔CPU
    • 窗户
      • 64 倍
      • x86的
  5. 验证是否已通过以下方式安装 (v2) 运行以下命令:sfsf version @salesforce/cli/2.0.1 darwin-arm64 node-v18.16.0版本以 开头。以下命令还 返回相同的版本,因为现在是别名 自:@salesforce/cli/2sfdxsfsfdx version @salesforce/cli/2.0.1 darwin-arm64 node-v18.16.0

恭喜,你已成功迁移到 (v2)!sf

TAR文件

Salesforce CLI 分发 TAR 文件,您可以在所有受支持的操作上安装这些文件 系统。

  1. 卸载当前的 sfdx (v7) 安装。截至 2021 年 10 月,如果您最初安装了 Salesforce CLI 使用 TAR 文件,您实际上得到了两个可互操作的 CLI(又名可执行文件) 捆绑在一起:(v7) 和 (v1)。卸载 Salesforce CLI 时,它会删除 两个可执行文件。sfdxsf
  2. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  3. 验证您是否已通过以下方式卸载 (v7) 运行命令。如果您卸载了 正确地,该命令失败。例如,在 macOS操作系统:sfdxsfdx versionsfdx version -bash: sfdx: command not found
  4. 安装 sf (v2)。
  5. 验证是否已通过以下方式安装 (v2) 运行以下命令:sfsf version @salesforce/cli/2.0.1 darwin-arm64 node-v18.16.0版本以 开头。以下命令还 返回相同的版本,因为现在是别名 自:@salesforce/cli/2sfdxsfsfdx version @salesforce/cli/2.0.1 darwin-arm64 node-v18.16.0

恭喜,你已成功迁移到 (v2)!sf

更新持续集成 (CI) 脚本

如果您在持续集成 (CI) 系统中使用 Salesforce CLI,请将您的脚本更新为 使用 (v2)。sfnpm如果您的 CI 脚本使用 安装 Salesforce CLI,请更新它们以使用此命令安装 (v2):npmsf

npm install @salesforce/cli --global

警告

更新 CI 脚本时,如果它包含以下命令以安装 (v7),则必须将其删除:sfdx

npm install sfdx-cli --global

如果你 保留这两个命令,则安装命令 (v2) 将返回错误,并且脚本将失败。sfTAR文件如果您的 CI 脚本使用 TAR 文件安装 Salesforce CLI,请将下载 URL 更新为 指向 (v2) 下载。例如,更改 此 URL:sf

https://developer.salesforce.com/media/salesforce-cli/sfdx/channels/stable/sfdx-linux-x64.tar.gz

自 这 网址:

https://developer.salesforce.com/media/salesforce-cli/sf/channels/stable/sf-linux-x64.tar.gz

请参阅使用 TAR 文件安装 CLI,了解所有操作系统的 URL。

迁移到 sf (v2) 后

以下是您搬家后需要注意的几件事。

  • 通过在终端(macOS 和 Linux) 或命令提示符 (Windows)。sf autocomplete --refresh-cache打开一个新的 终端以使更改生效。自动完成功能在您之前无法正常工作 重新生成其缓存。
  • 每个 CLI 命令执行、Salesforce CLI 的 VS Code 调用和 CI 脚本都有效 在 (v7) 和 (v2) 中相同。如果发现差异,请打开 GitHub 问题。sfdxsf
  • 您可以使用 或 运行命令;它们现在是一样的。例如,这两个命令 处决是一样的。sfdxsfsf project deploy start sfdx project deploy start里面的所有东西都可以在 中使用,并且相同 名称和标志。sfdxsf

为什么要搬家?

sf(v2) 已于 2023 年 7 月 12 日正式发布。 当时,我们停止发布对 (v7) 的更新 和 (v1)。获取新的 Salesforce CLI 功能和错误 修复,您必须使用 (v2)。sfdxsfsf

此外,(v7) 的大小是 (v2) 的两倍,因为它还包括 (v1)。要减小 Salesforce CLI 安装和下载的大小, 我们建议您迁移到 (v2)。sfdxsfsfsf

排查 npm 错误:代码 EEXIST

如果您尝试在不先卸载 (v7) 的情况下使用 (v2) 进行安装,则会出现以下错误:sfnpmsfdx

npm ERR! code EEXIST
npm ERR! path /Users/user/.nvm/versions/node/v18.16.0/bin/sfdx
npm ERR! EEXIST: file already exists
npm ERR! File exists: /Users/user/.nvm/versions/node/v18.16.0/bin/sfdx
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/user/.npm/_logs/2023-06-28T22_16_15_181Z-debug-0.log

当 (v2) 正式发布时,在持续集成 (CI) 系统中也会遇到此错误。如果您的 CI 脚本 已经用于安装 (v7) 和 (v1), 并且您不更新脚本,错误可能会从 7 月 12 日开始自动发生, 2023.sfnpmsfdxsf

若要解决此问题,请从脚本中删除此命令。

npm install sfdx-cli --global

保留此命令,该命令将安装 (v2)。sf

npm install @salesforce/cli --global

返回 sfdx (v7)

我们预计您没有任何理由返回 (v7)。但是,如果您必须返回,请按照下列步骤操作。sfdx

  1. 卸载 sf (v2)。
  2. 安装 (v7)。sfdx对于 ,在终端(macOS 和 Linux)中运行此命令,或者 命令提示符 (视窗)。npmnpm install sfdx-cli --global为 安装程序和 TAR 文件,请参阅 (v7) JSON 文件,其中列出了每个受支持操作系统的最新下载 URL。 有关详细信息,请参阅本主题。sfdx注意截至 2023 年 7 月 12 日,下载 Salesforce CLI 的网页已更新为 仅下载 (v2)。sf
  3. 在 CI 脚本中,返回命令或 您之前使用的 TAR 下载 URL。npm

安装 Salesforce CLI

使用特定于操作系统的工件在计算机上安装 Salesforce CLI,例如 与 macOS 一样,TAR 文件或使用 .

.pkgnpm

选择一种方法在计算机上安装。例如,不要在同时使用两者的 macOS 上安装 文件和 . 两种方式安装它可能会导致计算机上出现令人困惑的路径问题,有时没有 一个明显的错误,因此难以诊断。.pkgnpm

  • 在 macOS 上安装 CLI 使用 .pkg 文件在 macOS
    上安装 Salesforce CLI。
  • 在 Windows 上安装 CLI 使用 .exe 文件在 Windows
    上安装 Salesforce CLI。
  • 使用 TAR 文件安装 CLI Salesforce CLI 分发可在所有受支持的操作系统上安装的 TAR 文件
  • 使用 npm
    安装 CLI 如果您在计算机上安装了 Node.js,则可以用于安装 Salesforce CLI。此方法允许您从命令行安装 Salesforce CLI,对于持续集成 (CI) 用例特别有用。npm
  • 安装旧版本的 Salesforce CLI 我们建议您始终使用 Salesforce CLI
    的最新版本或候选版本。但是,我们也理解有时您需要旧版本的 CLI。
  • 验证安装并获取版本信息
    要确保您已正确安装 Salesforce CLI,请运行以下命令以查看可用命令的版本和列表。

在 macOS 上安装 CLI

使用 .pkg 文件在 macOS 上安装 Salesforce CLI。

  1. 下载 .pkg 文件。
  2. 运行 .pkg 文件,例如双击它 查找器,并回答所有提示。
  3. 安装完成后,重新启动终端窗口或 IDE 以确保 Salesforce CLI 可用。

另见

  • 验证安装并获取版本信息
  • 禁用 CLI 的自动更新

在 Windows 上安装 CLI

使用 .exe 文件在 Windows 上安装 Salesforce CLI。

  1. 下载 .exe 文件。
  2. 运行 .exe 文件,例如双击它 Windows 资源管理器,并回答所有提示。(可选)在“选择组件”窗口中,如果需要 Microsoft Defender 防病毒软件 若要在扫描时排除已安装的 Salesforce CLI 文件,请选择“将 %LOCALAPPDATA%\sf 添加到 Windows Defender 排除项”。此选项最初被取消选择,因为我们想要默认的 Windows 安装更安全。但从防病毒扫描中排除 CLI 文件 提高了 Salesforce CLI 的性能,这就是我们为您提供选项的原因。与 关心。
  3. 安装完成后,重新启动命令提示符、PowerShell 窗口或 IDE 以确保 Salesforce CLI 可用。

警告

Salesforce CLI 在本机 Windows 命令提示符下效果最佳 (cmd.exe) 和 Microsoft Windows PowerShell。 我们不建议将 Salesforce CLI 与 Linux 终端模拟器(如 Windows 10)一起使用 适用于 Linux、cygwin 或 MinGW 的子系统,因为对 bug 的支持有限。

使用 TAR 文件安装 CLI

Salesforce CLI 分发 TAR 文件,您可以在所有受支持的操作上安装这些文件 系统。

使用此表查找适用于您的操作系统的 TAR 文件(.tar.gz 或 .tar.xz)的未版本控制 URL。当我们发布新版本时 每周,我们还会更新这些 URL,以便它们指向最新的 版本。非版本控制的 URL 对于 CI 用例特别有用。该表还包括 清单 URL,显示每个文件的版本控制 URL。

操作系统tar文件清单
Linux操作系统sf-linux-x64.tar.gzsf-linux-x64.tar.xzsf-linux-arm.tar.gzsf-linux-arm.tar.xzsf-linux-arm64.tar.gzsf-linux-arm64.tar.xzsf-linux-x64-buildmanifestsf-linux-arm-build清单sf-linux-arm64-buildmanifest
macOS操作系统sf-darwin-x64.tar.gz (英特尔CPU)sf-darwin-x64.tar.xz (英特尔 CPU)sf-darwin-arm64.tar.gz (苹果芯片)sf-darwin-arm64.tar.xz (苹果芯片)sf-darwin-x64-buildmanifest (英特尔 CPU)sf-darwin-arm64-buildmanifest (Apple 芯片)
窗户sf-win32-x64.tar.gzsf-win32-x64.tar.xzsf-win32-x86.tar.gzsf-win32-x86.tar.xzsf-win32-x64-buildmanifestsf-win32-x86-buildmanifest

重要

我们强烈建议您使用 安装程序或安装 Salesforce Windows 上的 CLI。但是,如果您决定使用 Windows TAR 文件,则必须首先安装 一个单独的程序,如 7Zip,用于提取文件内容。npm

在这些示例中,假设您正在 Linux 上和主目录的子目录中安装 Salesforce CLI。cli/sf

  1. 打开终端窗口。
  2. 下载这些 TAR 文件之一。或者,在终端中运行 wget 以获取 TAR 文件。wget https://developer.salesforce.com/media/salesforce-cli/sf/channels/stable/sf-linux-x64.tar.xz
  3. 创建要安装 Salesforce CLI 的目录。mkdir ~/cli/sf
  4. 解压缩 TAR 文件的内容:tar xJf sf-linux-x64.tar.xz -C ~/cli/sf --strip-components 1-C解压缩 ~/cli/sf 目录中的内容,同时删除根路径组件。–strip-components 1注意此示例仅显示 Linux 上命令的一组可能标志。对于您操作的其他选项 系统,请参阅文档。tartar
  5. 更新 PATH 环境变量以包含 Salesforce CLI bin 目录。例如,为当前终端设置它 会期:export PATH=~/cli/sf/bin:$PATH要永久更新 PATH,请将相应的条目添加到 shell 的 配置文件。例如,如果您使用 Bash shell,请将以下行添加到 ~/.bashrc 或 ~/.bash_profile 文件中:PATH=~/cli/sf/bin:$PATH

使用 npm 安装 CLI

如果您在计算机上安装了 Node.js,则可以用于安装 Salesforce CLI。此方法允许您安装 命令行中的 Salesforce CLI,对于持续集成特别有用 (CI) 用例。

npm

如果您没有管理员权限,则此安装方法是一个不错的选择 您的工作站,或者如果组策略阻止 CLI 安装和更新。安装 Salesforce CLI 不需要 root 权限。npm

  1. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  2. 确保 Node.js 的长期支持(活动 LTS)版本安装在 计算机。要安装 LTS 版本,请转到 https://nodejs.org/en/download/。要检查 您的版本号,请从终端或命令提示符运行以下命令:node --version
  3. 要安装 Salesforce CLI,请运行以下命令。npm install @salesforce/cli --global如果您在使用 macOS 或 Linux 安装 Salesforce CLI 时收到权限错误,我们不建议使用 .请参阅修复 npm 权限。npmsudo

安装旧版本的 Salesforce CLI

我们建议您始终使用 Salesforce 的最新版本或候选版本 但是,我们也知道有时您需要旧版本的 CLI。

安装

如果您使用安装程序安装了 Salesforce CLI,请使用该标志更新到旧版本。例如,要更新到版本,请在终端(macOS 和 Linux)或 命令提示符 (Windows)。–version2.0.1

sf update --version 2.0.1

使用该标志列出所有可用的较旧 您可以更新到的版本。输出还显示是否已经有一个本地 复制或必须下载。–available

sf update --available

用于选择版本 交互。–interactive

使用此命令可返回到当前 版本。

sf update stable

npm

要更新到旧版本的 Salesforce CLI,请使用 在包名称后指定版本。例如,要更新 to version ,在终端 (macOS 和 Linux) 或命令提示符 (Windows)。npm @<version>@salesforce/cli2.0.1

npm install @salesforce/cli@2.0.1 --global

若要返回到当前版本,请运行此命令。

npm install @salesforce/cli --global

请参阅 Salesforce CLI npmjs.com 页面,了解所有列表 版本。我们保留了所有旧版本的 @salesforce/cli 和 sfdx-cli(已弃用)npm 包。

TAR文件

我们发布 JSON 文件,其中列出了最新版本的安装程序的下载 URL,以及 每个受支持的操作系统的 TAR 文件。我们不断向列表中添加新版本; 版本在列表中保留 20 周。我们保留 TAR 和安装程序文件本身 至少 40 周。

SF (V2)

操作系统文件类型TAR 压缩类型链接到 JSON 文件
Linux ARMTARgzsf-linux-arm-tar-gz.json
Linux ARMTARxzsf-linux-arm-tar-xz.json
Linux操作系统 64TARgzsf-linux-x64-tar-gz.json文件
Linux操作系统 64TARxzsf-linux-x64-tar-xz.json
窗户 64TARgzsf-win32-x64-tar-gz.json
窗户 64TARxzsf-win32-x64-tar-xz.json
视窗 x86TARgzsf-win32-x86-tar-gz.json
视窗 x86TARxzsf-win32-x86-tar-xz.json
macOS (英特尔 CPU)TARgzsf-darwin-x64-tar-gz.json
macOS (英特尔 CPU)TARxzsf-darwin-x64-tar-xz.json
macOS(Apple 芯片)TARgzsf-darwin-arm64-tar-gz.json
macOS(Apple 芯片)TARxzsf-darwin-arm64-tar-xz.json
窗户 64安装sf-x64-exe.json文件
视窗 x86安装sf-x86-exe.json文件
macOS (英特尔 CPU)安装sf-x64-pkg.json文件
macOS(Apple 芯片)安装sf-arm64-pkg.json文件

sfdx (v7) – 已弃用

注意

自 2023 年 7 月 12 日起,我们不再更新 (v7)。 我们保留这些旧版本只是出于历史原因。sfdx

操作系统文件类型TAR 压缩类型链接到 JSON 文件
Linux ARMTARgzsfdx-linux-arm-tar-gz.json
Linux ARMTARxzsfdx-linux-arm-tar-xz.json
Linux操作系统 64TARgzsfdx-linux-x64-tar-gz.json
Linux操作系统 64TARxzsfdx-linux-x64-tar-xz.json
窗户 64TARgzsfdx-win32-x64-tar-gz.json
窗户 64TARxzsfdx-win32-x64-tar-xz.json
视窗 x86TARgzsfdx-win32-x86-tar-gz.json
视窗 x86TARxzsfdx-win32-x86-tar-xz.json
macOS (英特尔 CPU)TARgzsfdx-darwin-x64-tar-gz.json
macOS (英特尔 CPU)TARxzsfdx-达尔文-x64-tar-xz.json
macOS(Apple 芯片)TARgzsfdx-darwin-arm64-tar-gz.json
macOS(Apple 芯片)TARxzsfdx-darwin-arm64-tar-xz.json
窗户 64安装sfdx-x64-exe.json文件
视窗 x86安装sfdx-x86-exe.json文件
macOS (英特尔 CPU)安装sfdx-x64-pkg.json文件
macOS(Apple 芯片)安装sfdx-arm64-pkg.json文件

验证安装并获取版本信息

要确保您已正确安装 Salesforce CLI,请运行以下命令以 查看可用命令的版本和列表。要查看已安装的 Salesforce CLI 版本,请运行以下命令 终端(macOS 和 Linux)或命令提示符 (Windows) 中的命令。

sf --version

这 命令返回有关版本的详细信息,例如以下示例 输出。

@salesforce/cli/2.17.10 darwin-x64 node-v20.9.0

要查看已安装的核心插件及其版本,请运行此命令 命令。

sf plugins --core

该命令显示以下示例输出等信息。

@oclif/plugin-autocomplete 3.0.1 (core)
@oclif/plugin-commands 3.0.6 (core)
@oclif/plugin-help 6.0.5 (core)
@oclif/plugin-not-found 3.0.3 (core)
@oclif/plugin-plugins 4.1.0 (core)
@oclif/plugin-search 1.0.6 (core)
@oclif/plugin-update 4.1.3 (core)
@oclif/plugin-version 2.0.6 (core)
@oclif/plugin-warn-if-update-available 3.0.2 (core)
@oclif/plugin-which 3.0.8 (core)
@salesforce/cli 2.17.10 (core)
apex 2.3.20 (core)
auth 2.8.26 (core)
data 2.6.3 (core)
deploy-retrieve 1.20.0 (core)
info 3.0.1 (core)
limits 3.0.1 (core)
login 2.0.1 (core)
marketplace 1.0.2 (core)
org 2.11.8 (core)
schema 3.0.1 (core)
settings 2.0.2 (core)
sobject 0.2.15 (core)
source 2.11.0 (core)
telemetry 3.1.0 (core)
templates 55.5.18 (core)
trust 3.0.1 (core)
user 2.3.42 (core)

Uninstalled JIT Plugins:
community 2.4.9
custom-metadata 2.2.12
dev 1.3.2
devops-center 1.2.4
env 3.0.1
functions 1.22.9
packaging 1.27.1
signups 1.5.6
@salesforce/sfdx-plugin-lwc-test 1.1.1
@salesforce/sfdx-scanner 3.18.0

查看所有可用的 Salesforce CLI 命令,运行此命令 命令。

sf commands

这 命令列表包括别名命令,例如 -style 命令 别名为 。force:apex:executesfdxapex run

自 显示 Salesforce CLI 版本的发行说明 当前安装在您的计算机上,请运行此命令 命令。

sf whatsnew

更新 Salesforce CLI

如果要确保运行的是最新版本的 Salesforce CLI,可以 手动更新它。

确定 Salesforce CLI 的安装方式

由于更新 Salesforce CLI 的方法因您是否使用了 安装程序或 npm,您必须先知道如何安装,然后才能更新。万一你 忘记了,这里有两种方法可以确定您如何安装 Salesforce CLI:

  • 在终端(macOS 和 Linux)中运行,或者 命令提示符 (Windows)。如果 Salesforce CLI 更新,则您安装了 安装。如果该命令返回此警告或类似警告,则您安装了 npm:sf updatesf update › Warning: Use "npm update --global @salesforce/cli" to update npm-based installations. @salesforce/cli: Updating CLI... not updatable
  • 如果已安装 Node.js,请运行 .如果显示的列表包含条目 ,则您使用 安装了 Salesforce CLI。npm list -g –depth 0@salesforce/cli@<version>npm

如果您使用安装程序安装了 Salesforce CLI

要安装最新的 Salesforce CLI 和插件版本,请在终端中运行此命令 (macOS) 或命令提示符 (Windows):

sf update

默认情况下,CLI 会定期检查并安装更新。要禁用自动更新, 将环境变量设置为 。SF_AUTOUPDATE_DISABLEtrue

当您更新 Salesforce CLI 时,我们会自动显示该版本的发行说明 您正在更新,以便了解新增、更改和修复的功能。沉默 显示中,将 和环境变量设置为 。SF_HIDE_RELEASE_NOTESSF_HIDE_RELEASE_NOTES_FOOTERtrue

如果您使用 npm 安装了 Salesforce CLI

自动更新选项不可用。当 CLI 的新版本可用时,运行 终端(macOS 和 Linux)或命令提示符中的此命令 (视窗):

npm install --global @salesforce/cli
  • 更新到 CLI 候选发布版或 Nightly
    我们每周发布一个新版本的 CLI。同时,我们还发布了 CLI 的候选版本,其中包含我们计划在下一个每周版本中包含的更改。将候选版本视为 Salesforce 沙盒预览的 CLI 版本。如果您想查看即将推出的功能,可以更新到候选版本。或者继续关注当前和官方版本。或者来回走动。由你决定!
  • 禁用 CLI 的自动更新 当您运行命令时,Salesforce CLI
    会检查您是否拥有最新版本。否则,CLI 会自动更新。您可以使用环境变量禁用此自动更新。

更新到 CLI 候选发布版或每晚更新

我们每周发布新版本的 CLI。同时,我们还发布了一个版本 CLI 的候选者,其中包含我们计划在下一个每周版本中包含的更改。 将候选版本视为 Salesforce 沙盒预览的 CLI 版本。您可以 如果您想查看即将推出的功能,请更新到候选版本。或者保持当前状态 并正式发布。或者来回走动。由你决定!

我们还每天发布夜间版本。Nightly 版本包括所有 我们的库和插件。如果您想尝试一天前合并的修复程序,请尝试 安装夜间构建。与候选版本类似,每日构建有助于改进 Salesforce CLI 的稳定性,在问题进入稳定版之前捕获问题 释放。

虽然最新的(稳定)版本是最可靠的,但我们鼓励用户也测试一下 发布候选版本和夜间构建,并向我们的 GitHub 报告问题 问题存储库。建议针对 当前版本和候选版本,用于识别潜在的中断性变更 在它们发生之前。

要显示已安装的 Salesforce CLI 的版本,请从终端运行此命令 (macOS 和 Linux)或命令提示符 (Windows)。该版本未指示它是否为发布 候选版本或夜间版本,因此请查看发行说明以获取当前版本号。

sf version

使用安装程序进行更新

安装程序使用当前 release,用于候选版本和夜间生成。stablestable-rcnightly

如果您已安装 Salesforce CLI 并且正在使用当前版本,请在 终端(macOS 和 Linux)或命令提示符 (Windows) 切换到版本 候选人。

sf update stable-rc

同样地 运行以下命令以安装 nightly 建。

sf update nightly

要卸载 候选发布或夜间构建并返回到当前版本,运行此 命令。

sf update stable

使用 npm 安装

Npm 安装使用当前版本、候选版本和夜间构建的标记。latestlatest-rcnightly

要使用 npm 安装候选版本,请在终端(macOS 和 Linux)中运行此命令,或者 命令提示符 (Windows)。

npm install --global @salesforce/cli@latest-rc

同样地 运行以下命令以安装 nightly 建。

npm install --global @salesforce/cli@nightly

自 卸载候选发布版本或夜间构建并返回到当前版本,运行此命令 命令。

npm install --global @salesforce/cli@latest

要查看当前与 npm 标记关联的 Salesforce CLI 版本,请运行以下命令 命令。

npm view @salesforce/cli dist-tags --json

从 TAR 文件安装

Salesforce CLI 分发 TAR 文件 候选版本和夜间版本,可以安装在所有受支持的操作上 系统。下载 URL 类似于用于安装当前 释放,但使用 or 通道而不是通道。stable-rcnightlystable

例如,到发行版的 Linux TAR 文件 候选人,在终端(macOS 和 Linux)或命令提示符 (Windows) 中运行此命令, 从频道下载。wgetstable-rc

wget https://developer.salesforce.com/media/salesforce-cli/sf/channels/stable-rc/sf-linux-x64.tar.xz

这 命令下载每晚 建。

wget https://developer.salesforce.com/media/salesforce-cli/sf/channels/nightly/sf-linux-x64.tar.xz

其他 而不是使用其他渠道,安装候选版本或 从 TAR 文件进行夜间构建与安装当前 释放。

禁用 CLI 的自动更新

当您运行命令时,Salesforce CLI 会检查您是否拥有最新版本。如果 不会,CLI 会自动更新。您可以使用以下命令禁用此自动更新 环境变量。

要保留当前版本的 CLI 并禁用自动更新,请将环境变量设置为 。环境变量的设置方式因 不同的操作系统。有关如何操作的说明,请参阅操作系统供应商的帮助 设置环境变量。SF_AUTOUPDATE_DISABLEtrue

持续集成

持续集成 (CI) 是一种软件开发实践,开发人员在其中 定期将他们的代码更改集成到源代码存储库中。确保新代码 不引入错误,自动构建和测试在开发人员签入之前或之后运行 变化。

许多第三方 CI 工具可供您选择。Salesforce DX 轻松集成 添加到这些工具中,以便您可以为 Salesforce 设置持续集成 应用。

  • 使用 CircleCI 进行持续集成 CircleCI
    是一种常用的集成工具,它与您现有的版本控制系统集成,以将增量更新推送到您指定的环境。CircleCI 可以用作基于云的或本地工具。这些说明演示了如何使用 GitHub、CircleCI 和 Dev Hub 组织进行持续集成。
  • 使用 Jenkins 进行持续集成
    Jenkins 是一个开源的、可扩展的自动化服务器,用于实现持续集成和持续交付。您可以轻松地将 Salesforce DX 集成到 Jenkins 框架中,以针对临时组织自动测试 Salesforce 应用程序。
  • 与 Travis CI 的持续集成
    Travis CI 是一种基于云的持续集成 (CI) 服务,用于构建和测试 GitHub 上托管的软件项目。
  • 组织开发模型
    的示例 CI 存储库 通过从您选择的供应商处克隆示例存储库,快速开始使用 CI。每个存储库都有一个示例配置文件和一个包含分步信息的综合 README.md。
  • 包开发模型
    的示例 CI 存储库 通过克隆所选供应商的示例存储库,快速开始使用 CI。每个存储库都有一个示例配置文件和一个包含分步信息的综合 README.md。

使用 CircleCI 进行持续集成

CircleCI 是一种常用的集成工具,可与您现有的集成 版本控制系统,用于将增量更新推送到您指定的环境。CircleCI系列 可用作基于云的或本地工具。这些说明演示了如何使用 GitHub、CircleCI 和 Dev Hub 组织,用于持续集成。

  • 为 CircleCI 配置环境
    在集成现有 CircleCI 框架之前,请配置开发人员中心组织和 CircleCI 项目。
  • 将 CircleCI 连接到您的 DevHub
    授权 CircleCI 通过连接的应用程序将内容推送到您的 Dev Hub。

为 CircleCI 配置环境

在集成现有的 CircleCI 框架之前,请配置开发人员中心组织和 CircleCI 项目。

  1. 使用 CircleCI 设置 GitHub 存储库。您可以按照 CircleCI 网站上的注册步骤访问您的代码 在 GitHub 上。
  2. 安装 Salesforce CLI(如果您还没有)。
  3. 如果尚未操作,请遵循使用 JWT 流为 Dev Hub 组织授权组织。
  4. 加密服务器密钥。
    1. 首先,生成密钥和初始化向量 (iv) 以在本地加密 server.key 文件。CircleCI 使用 key 和 iv 来 在生成环境中解密服务器密钥。在包含 server.key 文件的目录中运行以下命令。 对于值,请输入您自己选择的单词 以创建唯一密钥。<passphrase>openssl enc -aes-256-cbc -k <passphrase> -P -md sha1 -nosalt键和 iv 值显示在输出中。key=****24B2 iv =****DA58
    2. 请注意 key 和 iv 值,稍后需要用到它们。
    3. 使用新生成的密钥加密 server.key 文件,然后 IV 值。在包含 server.key 文件的目录中运行以下命令,将 <key> 和 <iv> 替换为上一步中的值。openssl enc -nosalt -aes-256-cbc -in server.key -out server.key.enc -base64 -K <key> -iv <iv>注意key 和 iv 值仅使用一次,并且不要使用它们来加密超过 server.key 的值。虽然您可以重复使用此对来加密其他 事情,这样做被视为违反安全规定。每次在步骤 a 中运行命令时,都会生成新的键和 iv 值。在 换句话说,你不能重新生成同一对。如果丢失这些值,则必须 生成新的并再次加密。

接下来,将 server.key.enc 的密钥、iv 和内容存储为 CircleCI UI 中受保护的环境变量。这些值被认为是机密的,因此 采取适当的预防措施来保护它们。

将 CircleCI 连接到您的 DevHub

授权 CircleCI 通过连接的应用程序将内容推送到您的开发人员中心。

  1. 确保您已安装 Salesforce CLI。通过运行 sf version 进行检查,并确认您看到的是版本信息。如果你 未安装,请参阅安装 Salesforce CLI。
  2. 确认您可以从包含 server.key 文件的目录中执行基于 JWT 的授权。从包含 您的 server.key(替换 <your_consumer_key> 并在指示的位置<your_username>值)。sf org login jwt --client-id <your_consumer_key> --jwt-key-file server.key --username <your_username> --set-default-dev-hub
  3. 使用页面顶部的 Fork 链接将 sfdx-circleci 存储库分叉到你的 GitHub 帐户中。
  4. 为此项目创建一个本地目录,并将分叉的存储库本地克隆到新的 目录。将 <git_username> 替换为你自己的 GitHub 用户名。git clone https://github.com/<git_username>/sfdx-circleci.git
  5. 从基于 JWT 的授权连接的应用中检索生成的使用者密钥。从 设置,在“快速查找”框中,输入“应用”,然后选择“应用 经理。在已连接旁边的行菜单中选择查看 应用程序。
  6. 在 CircleCI UI 中,您会看到一个名为 sfdx-circleci 的项目。在项目设置中,存储 名为 HUB_CONSUMER_KEY 的 CircleCI 环境变量中的使用者密钥。有关更多信息,请参阅 CircleCI 文档在 项目。
  7. 将用于访问 Dev Hub 的用户名存储在 CircleCI 环境变量中 使用 CircleCI UI 命名HUB_SFDX_USER
  8. 将加密服务器密钥中的密钥和 iv 值存储在 CircleCI 环境变量中 分别命名为 DECRYPTION_KEY和 DECRYPTION_IV。完成环境变量的设置后,您的 项目屏幕如下图所示。注意在包含 server.key 文件的目录中,使用命令删除 server.key。切勿在公共场所存放密钥或证书。rm server.key

你准备好了!现在,当您提交并推送更改时,您的更改将启动一个 CircleCI 构建。

为存储库做贡献

如果您发现任何问题或改进此存储库的机会,请修复它们!随意 为这个项目做贡献,分叉这个仓库,然后将 内容。进行更改后,通过发送拉取请求与社区共享这些更改。 有关参与的详细信息,请参阅如何发送拉取请求 到 GitHub 项目。

报告问题

如果您发现此演示中有任何问题无法修复,请随时在此存储库的问题部分报告。

使用 Jenkins 进行持续集成

Jenkins 是一个开源的、可扩展的自动化服务器,用于实现连续 集成和持续交付。您可以轻松地将 Salesforce DX 集成到 Jenkins 中 框架,用于针对临时组织自动测试 Salesforce 应用程序。

为了集成 Jenkins,我们假设:

  • 您熟悉 Jenkins 的工作原理。您可以通过多种方式配置和使用 Jenkins。我们 专注于将 Salesforce DX 集成到 Jenkins 多分支管道中。
  • 运行 Jenkins 服务器的计算机有权访问版本控制 系统和包含 Salesforce 应用程序的存储库。
  • 为 Jenkins 配置环境
    在将 Dev Hub 和临时组织集成到现有 Jenkins 框架之前,请配置 Jenkins 环境。我们的示例假定你使用的是包开发模型。
  • Jenkinsfile 演练
    示例 Jenkinsfile 演示如何将 Dev Hub 和临时组织集成到 Jenkins 作业中。此示例使用 Jenkins 多分支管道。每个 Jenkins 设置都是不同的。本演练介绍自动测试 Salesforce 应用程序的方法之一。本演练重点介绍了用于创建临时组织、上传代码和运行测试的 Salesforce CLI 命令。
  • 示例 Jenkinsfile
    Jenkinsfile 是一个文本文件,其中包含 Jenkins Pipeline 的定义。此 Jenkinsfile 展示了如何集成 Salesforce CLI 命令,以使用 scratch 组织自动测试 Salesforce 应用程序。

为 Jenkins 配置环境

在将 Dev Hub 和 Scratch 组织集成到现有的 Jenkins 框架之前, 配置 Jenkins 环境。我们的示例假定你正在包中工作 发展模式。

  1. 在开发人员中心组织中,按照基于 JWT 的授权流所述创建连接的应用。此步骤包括获取或创建私钥和数字证书。在保存连接的 应用程序。您需要使用者密钥来设置 Jenkins 环境。也有可用的 用于对数字证书进行签名的私钥文件。
  2. 在运行 Jenkins 服务器的计算机上,执行以下操作。
    1. 下载并安装 Salesforce CLI。
    2. 使用 Jenkins 管理员凭据将私钥文件存储为 Jenkins 机密文件 接口。记下新条目的 ID。稍后在 Jenkinsfile 中引用此凭据条目。
    3. 在 Jenkins 环境中设置以下变量。
      • SF_USERNAME – Dev Hub 组织的用户名,例如 juliet.capulet@myenvhub.com。
      • SF_INSTANCE_URL – 托管 Dev Hub 的 Salesforce 实例的登录 URL 组织。默认值为 https://login.salesforce.com。我们建议您更新 此值设置为 Dev Hub 组织的 My Domain 登录 URL。您可以找到一个组织的 “设置”中“我的域”页面上的“我的域”登录 URL。
      • SF_CONSUMER_KEY – 创建连接后返回的使用者密钥 开发人员中心组织中的应用。
      • SERVER_KEY_CREDENTALS_ID – 您的私钥文件的凭证 ID 存储在 Jenkins 管理员凭据界面中。
      • PACKAGE_NAME – 包的名称,例如“我的包”。
      • PACKAGE_VERSION-软件包的版本,以 04t 开头。
      • TEST_LEVEL – 包的测试级别,例如 RunLocalTests。
      这些环境变量的名称只是建议。您可以使用任何名称作为 只要你在 Jenkinsfile 中指定它。您还可以选择设置SF_AUTOUPDATE_DISABLE 变量以禁用 Salesforce 命令行界面。CLI 自动更新可能会干扰 Jenkins 的执行 工作。true
  3. 设置您的 Salesforce DX 项目,以便您可以创建临时组织。
  4. (可选)将自定义工具插件安装到 Jenkins 控制台中,并创建一个自定义 引用 Salesforce CLI 的工具。Jenkins 演练假定您创建了一个 /usr/local/bin 目录中名为 toolbelt 的自定义工具,该目录是 Salesforce CLI 的安装目录。

Jenkinsfile 演练

示例 Jenkinsfile 展示了如何将 Dev Hub 和 Scratch 组织集成到 Jenkins 作业。此示例使用 Jenkins 多分支管道。每个 Jenkins 设置都是 不同。本演练介绍自动测试 Salesforce 的方法之一 应用。本演练重点介绍了用于创建临时组织的 Salesforce CLI 命令。 上传代码并运行测试。

本演练依赖于 sfdx-jenkins-package Jenkinsfile。我们假设你熟悉 Jenkinsfile、Jenkins Pipeline DSL 和 Groovy 编程语言的结构。这 演练演示如何使用 Salesforce CLI 实现 Jenkins 管道,以及 临时组织。有关所使用的命令,请参阅 CLI 命令参考。

此工作流与 Jenkinsfile 阶段最接近。

  • 定义变量
  • 查看源代码
  • 将所有阶段包装在 withCredentials 命令中
  • 将所有阶段包装在 withEnv 命令中
  • 授权 Dev Hub 组织并创建临时组织
  • 推送源并分配权限集
  • 运行 Apex 测试
  • 删除临时组织
  • 创建程序包
  • 创建临时组织并显示信息
  • 安装包、运行单元测试和删除临时组织

定义变量

使用关键字定义所需的变量 通过 Salesforce CLI 命令。为每个变量分配相应的环境变量 您之前在 Jenkins 环境中设置。def

def SF_CONSUMER_KEY=env.SF_CONSUMER_KEY
def SERVER_KEY_CREDENTALS_ID=env.SERVER_KEY_CREDENTALS_ID
def TEST_LEVEL='RunLocalTests'
def PACKAGE_NAME='0Ho1U000000CaUzSAK'
def PACKAGE_VERSION
def SF_INSTANCE_URL = env.SF_INSTANCE_URL ?: "https://MyDomainName.my.salesforce.com"

定义变量,但不要设置其 价值。你稍后再做。SF_USERNAME

def SF_USERNAME

虽然不是必需的,但我们假设你使用 Jenkins 全局工具配置来 创建指向 CLI 安装目录。在 Jenkinsfile 中,使用 tool 命令将变量的值设置为此自定义工具。toolbelttoolbelt

def toolbelt = tool 'toolbelt'

现在,您可以使用 在 Jenkinsfile 中引用 Salesforce CLI 可执行文件。${toolbelt}/sf

查看源代码

在测试代码之前,请从版本控制中获取相应的版本或分支 系统 (VCS) 存储库。在此示例中,我们使用 Jenkins 命令。我们假设 Jenkins 管理员已经 配置环境以访问正确的 VCS 存储库并检出正确的 分支。checkout scm

stage('checkout source') {
        // when running in multi-branch job, one must issue this command
        checkout scm
  }

将所有阶段包装在 withCredentials 命令中

您之前使用 凭据接口。因此,您必须使用 Jenkinsfile 正文中的命令来访问机密文件。该命令允许您命名凭据条目,然后 从凭据存储中提取,并通过变量提供给包含的代码。 使用时,将所有阶段放在其 代码块。withCredentialswithCredentialswithCredentials

此示例将 JWT 密钥文件的凭据 ID 存储在变量 中。您之前定义了 并将其设置为其 相应的环境变量。该命令从以下位置获取密钥文件的内容 凭据存储并将内容放置在临时位置。位置 存储在变量 中。你 将变量与命令一起使用以指定 私钥安全。SERVER_KEY_CREDENTALS_IDSERVER_KEY_CREDENTALS_IDwithCredentialsserver_key_fileserver_key_fileorg login jwt

withCredentials([file(credentialsId: SERVER_KEY_CREDENTALS_ID, variable: 'server_key_file')])
   # all stages will go here 
}

将所有阶段包装在 withEnv 命令中

运行 Jenkins 作业时,了解文件的存储位置会很有帮助。那里 是需要注意的两个主要目录:工作区目录和主页 目录。工作区目录对于每个作业都是唯一的,而主目录是 所有工作都一样。

该命令将 JWT 密钥文件存储在 作业期间的 Jenkins 工作区。但是,Salesforce CLI 命令将身份验证文件存储在主目录中;这些 身份验证文件在作业持续时间之外保留。withCredentialsauth

运行单个作业时,此设置不会出现问题,但在运行时可能会导致问题 多个作业。因此,如果使用同一个 Dev Hub 运行多个作业,会发生什么情况,或者 其他 Salesforce 用户?当 CLI 尝试以用户身份连接到开发人员中心时,你 经过身份验证时,无法刷新令牌。为什么?CLI 尝试使用 JWT 密钥 其他工作区中不再存在的文件,而不考虑当前作业。withCredentials

如果使用 设置主目录以匹配工作区目录,则每个作业的身份验证文件都是唯一的。 为每个作业创建唯一的身份验证文件也更安全,因为每个作业只能访问 它创建的身份验证文件。withEnv

使用 时,将所有阶段都放在其代码中 块withEnv

withEnv(["HOME=${env.WORKSPACE}"]) {
   # all stages will go here 
}

注意

如果不使用管道或在管道阶段之外运行命令,请添加主页 脚本的环境规范:。export HOME=$WORKSPACE

授权 Dev Hub 组织并创建临时组织

此示例使用两个 阶段:一个阶段用于授权开发人员中心组织,另一个阶段用于创建临时 组织。sfdx-jenkins-package

// -------------------------------------------------------------------------
// Authorize the Dev Hub org with JWT key and give it an alias.
// -------------------------------------------------------------------------

stage('Authorize DevHub') {   
    rc = command "${toolbelt}/sf org login jwt --instance-url ${SF_INSTANCE_URL} --client-id ${SF_CONSUMER_KEY} --username ${SF_USERNAME} --jwt-key-file ${server_key_file} --set-default-dev-hub --alias HubOrg"
    if (rc != 0) {
        error 'Salesforce dev hub org authorization failed.'
    }
}


// -------------------------------------------------------------------------
// Create new scratch org to test your code.
// -------------------------------------------------------------------------

stage('Create Test Scratch Org') {
    rc = command "${toolbelt}/sf org create scratch --target-dev-hub HubOrg --set-default --definition-file config/project-scratch-def.json --alias ciorg --wait 10 --duration-days 1"
    if (rc != 0) {
        error 'Salesforce test scratch org creation failed.'
    }
}

用于授权开发人员中心组织。org login jwt

此步骤只需运行一次,但我们建议您将其添加到 Jenkinsfile 中,并在每次授权时进行授权 运行 Jenkins 作业。这样,您始终可以确保 Jenkins 作业不会中止 由于缺乏授权。授权多个通常没有什么坏处 时间,但请记住,临时组织版本的API调用限制仍然存在 适用。

使用命令的标志 提供有关你正在授权的开发人员中心组织的信息。的值 、 和 标志是 SF_CONSUMER_KEY、HubOrg 和 SF_INSTANCE_URL 环境变量 之前分别定义。标志的值是您在上一节中使用 命令。该标志指定此 HubOrg 是用于创建临时组织的默认 Dev Hub 组织。org login jwt–client-id–username–instance-url–jwt-key-fileserver_key_filewithCredentials–set-default-dev-hub

注意

最佳做法是为每个 Jenkins 作业提供唯一的身份验证文件 使用包装器。但这是可能的 改为在 Jenkins 计算机上授权 Dev Hub。优点是你的 在计算机上为运行的任何 Jenkins 作业集中设置身份验证。这 缺点是安全性:每个作业都可以访问所有经过身份验证的用户,无论 你希望他们或不愿意。withEnv

如果确实要在 Jenkins 上对 Dev Hub 进行身份验证If you do want to auth to auth to your Dev Hub on your Jenkins 机器,请按照下列步骤操作:

  • 在 Jenkins 计算机上,以 Jenkins 用户身份,使用 任何命令。org login
  • 在 Jenkinsfile 中,删除 、 、 和语句。withCredentialswithEnvorg login jwt

使用 CLI 命令创建 一个临时组织。在此示例中,CLI 命令使用 config/project-scratch-def.json 文件(相对于 项目目录)以创建临时组织。该标志将输出指定为 JSON 格式。该标志将新的临时组织设置为 违约。org create scratch–json–set-default

解析命令的 JSON 输出的 Groovy 代码提取自动生成的用户名 组织创建的一部分。使用此用户名,存储在 SF_USERNAME 变量中,用于 使用推送源、分配权限集等的 CLI 命令。org create scratch

推送源并分配权限集

让我们用元数据填充您的新临时组织。此示例使用命令部署源 到组织。源代码包括构成 Salesforce 的所有部分 application:Apex 类和测试类、权限集、布局、触发器、 自定义对象等。project deploy start

// -------------------------------------------------------------------------
// Push source to test scratch org.
// -------------------------------------------------------------------------

stage('Push To Test Scratch Org') {
    rc = command "${toolbelt}/sf project deploy start --target-org ciorg"
    if (rc != 0) {
        error 'Salesforce push to test scratch org failed.'
    }
}

回想一下包含输出的自动生成的用户名的 SF_USERNAME 变量 通过前面的命令 阶段。该代码使用此变量作为标志的参数,以指定 新的 Scratch 组织。org create scratch–target-org

该命令将部署所有 它在项目中找到的与 Salesforce 相关的文件。将 .forceignore 文件添加到存储库以列出 您不希望推送到组织的文件。project deploy start

运行 Apex 测试

现在,您的源代码和测试源代码已推送到临时组织,请运行命令以运行 Apex 测试。apex run test

// -------------------------------------------------------------------------
// Run unit tests in test scratch org.
// -------------------------------------------------------------------------

stage('Run Tests In Test Scratch Org') {
    rc = command "${toolbelt}/sf apex run test --target-org ciorg --wait 10 --result-format tap --code-coverage --test-level ${TEST_LEVEL}"
    if (rc != 0) {
        error 'Salesforce unit test run in test scratch org failed.'
    }
}

您可以为 CLI 指定各种标志 命令。在示例中:apex run test

  • 该标志运行所有测试 在临时组织中,源自已安装的托管软件包的测试除外。 您还可以指定运行 仅本地测试,运行 仅某些 Apex 测试或套件,或运行组织中的所有测试。–test-level ${TEST_LEVEL}RunLocalTestsRunSpecifiedTestsRunAllTestsInOrg
  • 该标志指定 命令输出采用 Test Anything Protocol (TAP) 格式。测试结果 写入文件仍采用 JUnit 和 JSON 格式。–result-format tap
  • 该标志指定用户名 用于访问 Scratch 组织(SF_USERNAME 中的值)。–target-org ciorg

该命令将其测试结果写入 JUnit 格式。apex run test

删除临时组织

Salesforce 保留在临时文件后指定天数内删除临时组织的权利 已创建。您还可以在管道中创建一个阶段,用于显式删除 测试完成后的 scratch 组织。此清理可确保更好地管理您的 资源。org delete scratch

// -------------------------------------------------------------------------
// Delete package install scratch org.
// -------------------------------------------------------------------------

stage('Delete Package Install Scratch Org') {
    rc = command "${toolbelt}/sf org delete scratch --target-org installorg --no-prompt"
    if (rc != 0) {
        error 'Salesforce package install scratch org deletion failed.'
    }
}

创建程序包

现在,让我们创建一个包。如果您不熟悉包装,则可以将包装视为 使用元数据填充的容器。它包含一组相关功能, 自定义项和架构。您可以使用包将元数据从一个 Salesforce 组织移动到 另一个。创建包后,添加元数据并创建新的包版本。

// -------------------------------------------------------------------------
// Create package version.
// -------------------------------------------------------------------------

stage('Create Package Version') {
    if (isUnix()) {
        output = sh returnStdout: true, script: "${toolbelt}/sf package version create --package ${PACKAGE_NAME} --installation-key-bypass --wait 10 --json --target-dev-hub HubOrg"
    } else {
        output = bat(returnStdout: true, script: "${toolbelt}/sf package version create --package ${PACKAGE_NAME} --installation-key-bypass --wait 10 --json --target-dev-hub HubOrg").trim()
        output = output.readLines().drop(1).join(" ")
}

    // Wait 5 minutes for package replication.
    sleep 300

    def jsonSlurper = new JsonSlurperClassic()
    def response = jsonSlurper.parseText(output)

    PACKAGE_VERSION = response.result.SubscriberPackageVersionId

    response = null

    echo ${PACKAGE_VERSION}
}

创建临时组织并显示信息

还记得您之前创建临时组织的时候吗?现在让我们创建一个临时组织进行安装 您的包,并显示有关该暂存组织的信息。

// -------------------------------------------------------------------------
// Create new scratch org to install package to.
// -------------------------------------------------------------------------

stage('Create Package Install Scratch Org') {
    rc = command "${toolbelt}/sf org create scratch --target-dev-hub HubOrg --set-default --definition-file config/project-scratch-def.json --alias installorg --wait 10 --duration-days 1"
    if (rc != 0) {
        error 'Salesforce package install scratch org creation failed.'
    }
}


// -------------------------------------------------------------------------
// Display install scratch org info.
// -------------------------------------------------------------------------

stage('Display Install Scratch Org') {
    rc = command "${toolbelt}/sf org display --target-org installorg"
    if (rc != 0) {
        error 'Salesforce install scratch org display failed.'
    }
}

安装包、运行单元测试和删除临时组织

最后,在临时组织中安装软件包,运行单元测试,然后删除 scratch org. 就是这样!

// -------------------------------------------------------------------------
// Install package in scratch org.
// -------------------------------------------------------------------------

stage('Install Package In Scratch Org') {
    rc = command "${toolbelt}/sf package install --package ${PACKAGE_VERSION} --target-org installorg --wait 10"
    if (rc != 0) {
        error 'Salesforce package install failed.'
    }
}


// -------------------------------------------------------------------------
// Run unit tests in package install scratch org.
// -------------------------------------------------------------------------

stage('Run Tests In Package Install Scratch Org') {
    rc = command "${toolbelt}/sf apex run test --target-org installorg --result-format tap --code-coverage --test-level ${TEST_LEVEL} --wait 10"
    if (rc != 0) {
        error 'Salesforce unit test run in pacakge install scratch org failed.'
    }
}


// -------------------------------------------------------------------------
// Delete package install scratch org.
// -------------------------------------------------------------------------

stage('Delete Package Install Scratch Org') {
    rc = command "${toolbelt}/sf org delete scratch --target-org installorg --no-prompt"
    if (rc != 0) {
        error 'Salesforce package install scratch org deletion failed.'
    }
}

示例 Jenkinsfile

Jenkinsfile 是一个文本文件,其中包含 Jenkins 流水线的定义。此 Jenkinsfile 展示了如何集成 Salesforce CLI 命令以自动测试 Salesforce 使用 Scratch 组织的应用程序。

Jenkinsfile 演练主题使用此 sfdx-jenkins-package Jenkinsfile 作为示例。

#!groovy

import groovy.json.JsonSlurperClassic

node {

    def SF_CONSUMER_KEY=env.SF_CONSUMER_KEY
    def SF_USERNAME=env.SF_USERNAME
    def SERVER_KEY_CREDENTALS_ID=env.SERVER_KEY_CREDENTALS_ID
    def TEST_LEVEL='RunLocalTests'
    def PACKAGE_NAME='0Ho1U000000CaUzSAK'
    def PACKAGE_VERSION
    def SF_INSTANCE_URL = env.SF_INSTANCE_URL ?: "https://login.salesforce.com"

    def toolbelt = tool 'toolbelt'


    // -------------------------------------------------------------------------
    // Check out code from source control.
    // -------------------------------------------------------------------------

    stage('checkout source') {
        checkout scm
    }


    // -------------------------------------------------------------------------
    // Run all the enclosed stages with access to the Salesforce
    // JWT key credentials.
    // -------------------------------------------------------------------------
    
    withEnv(["HOME=${env.WORKSPACE}"]) {
        
        withCredentials([file(credentialsId: SERVER_KEY_CREDENTALS_ID, variable: 'server_key_file')]) {

            // -------------------------------------------------------------------------
            // Authorize the Dev Hub org with JWT key and give it an alias.
            // -------------------------------------------------------------------------

            stage('Authorize DevHub') {
                rc = command "${toolbelt}/sf org login jwt --instance-url ${SF_INSTANCE_URL} --client-id ${SF_CONSUMER_KEY} --username ${SF_USERNAME} --jwt-key-file ${server_key_file} --set-default-dev-hub --alias HubOrg"
                if (rc != 0) {
                    error 'Salesforce dev hub org authorization failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Create new scratch org to test your code.
            // -------------------------------------------------------------------------

            stage('Create Test Scratch Org') {
                rc = command "${toolbelt}/sf org create scratch --target-dev-hub HubOrg --set-default --definition-file config/project-scratch-def.json --alias ciorg --wait 10 --duration-days 1"
                if (rc != 0) {
                    error 'Salesforce test scratch org creation failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Display test scratch org info.
            // -------------------------------------------------------------------------

            stage('Display Test Scratch Org') {
                rc = command "${toolbelt}/sf org display --target-org ciorg"
                if (rc != 0) {
                    error 'Salesforce test scratch org display failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Push source to test scratch org.
            // -------------------------------------------------------------------------

            stage('Push To Test Scratch Org') {
                rc = command "${toolbelt}/sf project deploy start --target-org ciorg"
                if (rc != 0) {
                    error 'Salesforce push to test scratch org failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Run unit tests in test scratch org.
            // -------------------------------------------------------------------------

            stage('Run Tests In Test Scratch Org') {
                rc = command "${toolbelt}/sf apex run test --target-org ciorg --wait 10 --result-format tap --code-coverage --test-level ${TEST_LEVEL}"
                if (rc != 0) {
                    error 'Salesforce unit test run in test scratch org failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Delete test scratch org.
            // -------------------------------------------------------------------------

            stage('Delete Test Scratch Org') {
                rc = command "${toolbelt}/sf org delete scratch --target-org installorg --no-prompt"
                if (rc != 0) {
                    error 'Salesforce test scratch org deletion failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Create package version.
            // -------------------------------------------------------------------------

            stage('Create Package Version') {
                if (isUnix()) {
                    output = sh returnStdout: true, script: "${toolbelt}/sf package version create --package ${PACKAGE_NAME} --installation-key-bypass --wait 10 --json --target-dev-hub HubOrg"
                } else {
                    output = bat(returnStdout: true, script: "${toolbelt}/sf package version create --package ${PACKAGE_NAME} --installation-key-bypass --wait 10 --json --target-dev-hub HubOrg").trim()
                    output = output.readLines().drop(1).join(" ")
                }

                // Wait 5 minutes for package replication.
                sleep 300

                def jsonSlurper = new JsonSlurperClassic()
                def response = jsonSlurper.parseText(output)

                PACKAGE_VERSION = response.result.SubscriberPackageVersionId

                response = null

                echo ${PACKAGE_VERSION}
            }


            // -------------------------------------------------------------------------
            // Create new scratch org to install package to.
            // -------------------------------------------------------------------------

            stage('Create Package Install Scratch Org') {
                rc = command "${toolbelt}/sf org create scratch --target-dev-hub HubOrg --set-default --definition-file config/project-scratch-def.json --alias installorg --wait 10 --duration-days 1"
                if (rc != 0) {
                    error 'Salesforce package install scratch org creation failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Display install scratch org info.
            // -------------------------------------------------------------------------

            stage('Display Install Scratch Org') {
                rc = command "${toolbelt}/sf org display --target-org installorg"
                if (rc != 0) {
                    error 'Salesforce install scratch org display failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Install package in scratch org.
            // -------------------------------------------------------------------------

            stage('Install Package In Scratch Org') {
                rc = command "${toolbelt}/sf package install --package ${PACKAGE_VERSION} --target-org installorg --wait 10"
                if (rc != 0) {
                    error 'Salesforce package install failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Run unit tests in package install scratch org.
            // -------------------------------------------------------------------------

            stage('Run Tests In Package Install Scratch Org') {
                rc = command "${toolbelt}/sf apex run test --target-org installorg --result-format tap --code-coverage --test-level ${TEST_LEVEL} --wait 10"
                if (rc != 0) {
                    error 'Salesforce unit test run in pacakge install scratch org failed.'
                }
            }


            // -------------------------------------------------------------------------
            // Delete package install scratch org.
            // -------------------------------------------------------------------------

            stage('Delete Package Install Scratch Org') {
                rc = command "${toolbelt}/sf org delete scratch --target-org installorg --no-prompt"
                if (rc != 0) {
                    error 'Salesforce package install scratch org deletion failed.'
                }
            }
        }
    }
}

def command(script) {
    if (isUnix()) {
        return sh(returnStatus: true, script: script);
    } else {
        return bat(returnStatus: true, script: script);
    }
}

与 Travis CI 的持续集成

Travis CI 是一种基于云的持续集成 (CI) 服务,用于构建和测试托管在 GitHub 上的软件项目。

有关设置 Travis CI 的帮助,请参阅:

  • 组织开发模型的示例 Travis CI 存储库
  • 包开发模型的示例 Travis CI 存储库

组织开发模型的示例 CI 存储库

通过从您选择的供应商处克隆示例存储库,快速开始使用 CI。 每个存储库都有一个示例配置文件和一个全面的 README.md 分步信息。

这些示例存储库支持组织开发模型。此模型使用 Salesforce CLI、 源代码管理系统和应用程序生命周期中的沙盒。要确定这是否 模型适合您,请完成组织开发模型模块,赢取徽章。

供应商链接到 GitHub 存储库
AppVeyorhttps://github.com/forcedotcom/sfdx-appveyor-org
https://github.com/forcedotcom/sfdx-bamboo-org
位桶https://github.com/forcedotcom/sfdx-bitbucket-org
CircleCI系列https://github.com/forcedotcom/sfdx-circleci-org
GitLab的https://github.com/forcedotcom/sfdx-gitlab-org
詹金斯https://github.com/forcedotcom/sfdx-jenkins-org
特拉维斯CIhttps://github.com/forcedotcom/sfdx-travisci-org

包开发模型的示例 CI 存储库

通过从您选择的供应商处克隆示例存储库,快速开始使用 CI。 每个存储库都有一个示例配置文件和一个全面的 README.md 分步信息。

这些示例存储库支持包开发模型。此模型使用 Salesforce CLI、源代码控制系统、用于开发的临时组织以及用于测试和 分期。要确定此型号是否适合您,请前往并通过以下方式获得徽章 完成包开发模型模块。

供应商链接到 GitHub 存储库
AppVeyorhttps://github.com/forcedotcom/sfdx-appveyor-package
https://github.com/forcedotcom/sfdx-bamboo-package
位桶https://github.com/forcedotcom/sfdx-bitbucket-package
CircleCI系列https://github.com/forcedotcom/sfdx-circleci-package
GitLab的https://github.com/forcedotcom/sfdx-gitlab-packageCI/CD 模板 Salesforce/Apex 应用程序:https://gitlab.com/sfdx/sfdx-cicd-template
詹金斯https://github.com/forcedotcom/sfdx-jenkins-package
特拉维斯CIhttps://github.com/forcedotcom/sfdx-travisci-package

Salesforce DX 疑难解答

以下是一些帮助您解决问题的提示。

  • CLI 版本信息 使用这些命令可查看有关 Salesforce CLI 的版本信息
  • 错误:未找到
    默认开发中心 由于授权问题,当您尝试创建临时组织时,您会看到此错误。
  • 组织授权失败后无法工作
    有时,您尝试使用 Salesforce CLI 或 IDE 授权 Dev Hub 组织或临时组织,但未成功登录到该组织。端口对于杂散授权过程保持打开状态,并且您不能使用 CLI 或 IDE。若要继续,请手动结束该过程。
  • 错误:使用者密钥已被获取
    假设你在已创建连接应用的组织上运行。当您尝试将检索到的源部署到其他组织时,部署失败并显示错误。发生了什么事?project retrieve startThe consumer key is already taken

CLI 版本信息

使用以下命令可查看有关 Salesforce CLI 的版本信息。

sf plugins --core      // Version of the CLI and all installed plug-ins
sf --version     // CLI version

错误:未找到默认开发中心

当您尝试创建临时组织时,由于授权问题,您会看到此错误。

假设你使用该标志成功授权了开发人员中心组织。与组织关联的用户名是默认用户名 Dev Hub 用户名。然后,您可以在不使用该标志的情况下成功创建临时组织。但是,当您尝试创建一个临时组织时 再次使用相同的CLI命令时,您会收到以下错误:–set-default-dev-hub–target-dev-hub

Error (1): No default dev hub found. Use -v or --target-dev-hub to specify an environment.

发生了什么事?

:您不再位于运行 authorization 命令的目录中。这 使用标志的目录很重要。–set-default-dev-hub

如果从项目目录的根目录运行 authorization 命令,则会在本地设置配置变量。价值 仅当从同一项目目录运行命令时才适用。如果更改为 不同的目录并运行,本地 默认 Dev Hub 组织的设置不再适用,并且出现错误。target-dev-huborg create scratch

通过执行下列操作之一来解决问题。

  • 全局设置,以便可以从任何目录运行。target-dev-huborg create scratchsf config set target-dev-hub=<devhubusername> --global
  • 从同一项目目录运行,其中 你已授权开发人员中心组织。org create scratch
  • 使用 标志 with 从任何目录运行它。–target-dev-huborg create scratchsf target-dev-hub --definition-file <file> --target-dev-hub <devhubusername> --alias my-scratch-org
  • 若要检查是否已全局或本地设置配置值,请使用此命令并检查 “位置”列。sf config list

组织授权失败后无法工作

有时,您尝试使用 Salesforce CLI 或 一个 IDE,但您没有成功登录到组织。港口仍然对流浪者开放 授权过程,并且您不能使用 CLI 或 IDE。若要继续,请结束该过程 手动地。

macOS 或 Linux

要从 macOS 或 Linux 上失败的组织授权中恢复,请使用终端终止 在端口 1717 上运行的进程。

  1. 在终端中,运行:lsof -i tcp:1717
  2. 在结果中,找到使用该端口的进程的 ID。
  3. 跑:kill -9 <the process ID>

窗户

要从 Windows 上失败的组织授权中恢复,请使用任务管理器结束节点 过程。

  1. 按 Ctrl+Alt+Delete,然后单击“任务管理器”。
  2. 选择“进程”选项卡。
  3. 找到名为 的进程。Node注意如果您是 Node.js 开发人员,则可以使用此进程运行多个进程 名字。
  4. 选择要结束的进程,然后单击“结束” 过程

错误:使用者密钥已被获取

假设您在一个组织上运行 你已在其中创建已连接的应用。当您尝试将检索到的源部署到 不同的组织,部署失败并显示错误。发生了什么事?

project retrieve startThe consumer key is already taken

连接的应用包括网站或应用用来标识自身的使用者密钥 Salesforce的。使用者密钥在整个 Salesforce 生态系统中必须是唯一的。什么时候 您尝试部署检索到的 (和未更改的) 源文件与 将应用连接到新组织时,由于使用者密钥重复,部署失败。

有几个选项可以解决此问题。

  • 在部署源之前,从项目中删除连接的应用源文件 到新组织。因此,不会创建连接的应用。连接的应用程序 源文件的名称类似于 。force-app/main/default/connectedApps/MyConnApp.connectedApp-meta.xml
  • 更新已连接应用的文件,并将元素的值更改为唯一值。这是 显示元素的示例连接应用文件的代码片段。<consumerKey><consumerKey><?xml version="1.0" encoding="UTF-8"?> <ConnectedApp xmlns="http://soap.sforce.com/2006/04/metadata"> <contactEmail>john@doecompany.com</contactEmail> <contactPhone>5556789</contactPhone> <label>MyConnApp</label> <oauthConfig> <callbackUrl>http://localhost:1717/OauthRedirect</callbackUrl> <consumerKey>3MVG9PG9sFc71i9n55UWbx2</consumerKey> <isAdminApproved>false</isAdminApproved> ...

Salesforce DX 的限制

以下是您在使用 Salesforce DX 时可能遇到的一些已知问题。

有关最新的已知问题,请访问 Trailblazer Community 的已知问题页面。

Salesforce 命令行界面

如果与客户端密码一起使用,则授权失败auth:web:login描述: 如果您使用客户端 ID 和客户端密码运行,则无法使用 Salesforce CLI 发出 命令发送到临时组织,因为授权文件不正确 创建。auth:web:login

解决方法: 在没有客户端的情况下使用基于 Web 的流程 ID 和客户端密钥,或使用基于 JWT 的流程向组织授权。 有关开发说明,请参阅《Salesforce DX 开发人员指南》中的授权 Hub 和 Scratch 组织授权方法。Windows Defender 暂停 CLI 安装描述:在 Windows 上安装 Salesforce CLI 时, 你会看到 Windows Defender 警告。此消息是预期的,因为我们 更新了安装程序的代码签名证书。

解决方法:若要忽略此消息,请单击“运行” 反正。无法使用 Salesforce CLI 导入记录类型描述:运行命令时,我们不支持 RecordType。data:tree:import

解决方法:没有。对 Windows 上 Shell 环境的有限支持描述: Salesforce CLI 在命令提示符 () 和 Powershell 上进行了测试。有已知的 Cygwin 和 Min-GW 环境中的问题,以及 Windows 子系统的问题 Linux (WSL)。将来可能会测试和支持这些环境 释放。现在,请改用受支持的 shell。cmd.exe

解决方法: 没有。该命令不 完成执行force:apex:test:run描述: 在某些情况下,该命令不会完成执行。例子 这些情况包括 Apex 测试或 Apex 测试中的编译错误 当另一个预编译正在进行时触发另一个预编译。force:apex:test:run

解决方法: 通过键入 control-C 停止命令执行。如果命令是 作为持续集成 (CI) 作业的一部分,请尝试设置环境 变量。SFDX_PRECOMPILE_DISABLE=true

Dev Hub 和 Scratch 组织

Salesforce CLI 有时无法识别 Scratch 组织 社区描述:有时(但并非在所有情况下)Salesforce CLI 不承认与社区一起创建临时组织 特征。您无法使用 CLI 打开临时组织,即使 暂存组织在开发人员中心中列出。

解决方法:你可以试试这个 解决方法,尽管它并不能在所有情况下解决问题。删除 暂存组织,然后使用 CLI 创建新的暂存组织。 删除和重新创建临时组织将计入您的每日临时记录 组织限制。拉取社区并部署社区时出错描述:发生此错误是因为临时组织没有 所需的访客许可证。

解决方法:在您的临时组织中 定义文件,如果指定了 Communities 功能,则还要指定 站点功能。

源管理

错误:删除自定义标签后未找到任何结果force:source:status描述:在暂存中删除自定义标签后,该命令将返回错误 组织。force:source:statusNo Results Found

解决方法:选项#1:如果您只有一个或两个划痕 组织,您可以通过其 生成的用户名,请使用此解决方法。在 你的 DX project/.sfdx/org 目录,仅删除 受影响的临时组织所在的文件夹。

选项#2:如果你有 与您的 DX 项目相关的几个临时组织,而您不知道 要删除哪个临时组织的本地数据,请使用此解决方法。删除 Your DX project/.sfdx/org 目录。此目录包含所有 与项目相关的临时组织。当您运行下一个 source-tracking 命令,用于此组织或其他临时组织 (, , 或 ),CLI 将重建 该组织的源跟踪信息。source:pushsource:pullsource:status

删除 目录(在选项 #1 或选项 #2 之后),再次运行。force:source:status错误:名为“Account.PersonAccount”的“RecordType”类型的实体不能是 发现描述: 尽管您可以在临时打开个人帐户 组织,将该功能添加到您的临时组织定义中,运行或导致错误,source:pushsource:pull

解决方法: 没有。force:source:convert 不会将安装后脚本添加到包 .xml描述:如果运行 ,package.xml 不包含帖子 安装脚本。force:source:convert解决方法:若要解决此问题,请选择以下选项之一 方法:

  • 手动将元素添加到元数据目录中的 package.xml 中 产生<postInstallClass>force:source:convert
  • 手动将元素添加到发布组织中的包中,或者 要将软件包部署到的组织。

必须在对象的元数据文件中手动启用源跟踪描述:如果您在标准或自定义设备上启用 Feed 跟踪 对象,然后运行 , Feed 跟踪未启用。force:source:pull

解决方法:在您的 Salesforce 中 DX项目,手动启用标准或自定义的Feed跟踪 对象在其元数据文件 (-meta.xml) 中添加 .<enableFeeds>true</enableFeeds>无法将查找筛选器推送到临时组织描述: 执行命令推送关系源时 字段,有时会收到以下错误:force:source:push

duplicate value found: <unknown> duplicates value on record with id: <unknown> at line num, col num.

解决方法: 没有。

部署

部署时编译可能会增加临时组织中的部署时间描述: 如果您的 Apex 代码部署时间很慢,您的临时组织可能会 有设置 设置为 。enableCompileOnDeploytrue解决方法:要将其关闭,请将其设置为 ( default) 或从 Scratch 组织中删除该设置 定义。

false

{
  "orgName": "ekapner Company",
  "edition": "Developer",
  "features": [],
  "settings": {
    "lightningExperienceSettings": {
          "enableS1DesktopEnabled": true
      },
      "apexSettings": {
          "enableCompileOnDeploy": false
      }
  }
}

托管的第一代软件包

在临时组织中安装软件包时,不会执行任何测试描述: 如果将测试作为连续测试的一部分 集成过程中,当您在 Scratch 组织。

解决方法: 您可以在 软件包已安装。CLI 中用于托管包密码的新术语描述: 使用 CLI 将安装密钥添加到软件包版本或 要安装受密钥保护的软件包版本,密钥的参数名称为 。当您查看 Salesforce 用户界面中的托管包版本,相同的包 属性称为“密码”。在 API 中,对应的字段名称, “password”,保持不变。–installationkey

解决方法: 没有。

托管的第二代软件包

无法为托管软件包指定修补程序版本描述: 由四部分组成的软件包版本号包括一个补丁段,定义 作为 major.minor.patch.build。但是,您不能为 第二代托管包。如果设置了修补程序,则软件包创建将失败 包描述符中的数字。我们计划为 Winter ’20 版本中的托管包。

解决方法: 始终设置 版本号的补丁段,设置为 0。例如,1.2.0.1 是 有效,但 1.2.1.1 无效。受保护的自定义元数据和自定义设置对开发人员可见 临时组织(如果已安装的软件包共享命名空间)描述: 将机密存储在 使用受保护的自定义元数据或受保护的第二代包 自定义设置。您可以使用 相同的命名空间。但是,当您在临时组织中安装这些软件包时, 这些机密对于在 具有共享命名空间的 Scratch 组织。将来,我们可能会添加一个 “package-protected” 关键字来防止访问这些中的包机密 情况。

解决方法: 没有。

解锁套餐

受保护的自定义元数据和自定义设置对开发人员可见 临时组织(如果已安装的软件包共享命名空间)描述: 在解锁的密钥中存储密钥时要小心 使用受保护的自定义元数据或受保护的自定义设置的包。你 可以创建多个具有相同命名空间的解锁包。但是,当 您在临时组织中安装这些软件包,这些密钥对 在临时组织工作的任何开发人员,共享 命名空间。将来,我们可能会在 在这些情况下阻止访问包机密。

解决方法: 没有。

ref

开发解锁包

包是一个顶级容器,用于保存有关应用或 package:包名称、描述和关联的命名空间。

您可以在 sfdx-project.json 项目配置文件的包描述符部分中提供包详细信息。

  • 创建和更新已解锁的包 准备好测试或共享包时,请使用命令创建包
    sf package create
  • 创建已解锁包
    的新版本 包版本是包内容和相关元数据的固定快照。通过包版本,可以管理更改,并跟踪每次发布或部署一组特定更改时的不同之处。
  • 未锁定包的代码覆盖率 在升级和发布已解锁的包
    之前,Apex 代码必须满足至少 75% 的代码覆盖率要求。您只能在临时组织和沙盒中安装不符合代码覆盖率要求的软件包版本。
  • 释放解锁的软件包 每个新的软件包
    版本在创建时都标记为 beta。在开发软件包时,您可以先创建多个软件包版本,然后再创建准备在生产组织中发布和安装的版本。
  • 更新已解锁的包版本 您可以从命令行更新包版本
    的大多数属性。例如,您可以更改包版本名称或说明。一个重要的例外是无法更改发布状态。
  • 未锁定软件包中的硬删除组件 当这些组件从未锁定的软件包中删除时,它们将在软件包
    升级期间从目标安装组织中硬删除。
  • 删除已解锁的包或包版本 使用 和 删除不再需要的包和包版本
    sf package version deletesf package delete
  • 查看软件包详细信息
    从命令行查看以前创建的软件包和软件包版本的详细信息。

创建和更新已解锁的软件包

准备好测试或共享包时,请使用命令创建包。

sf package create

如果您使用的是命名空间,请在 sfdx-project.json 文件中指定包命名空间。若要了解详细信息,请参阅了解命名空间。

若要创建包,请转到项目目录。名称成为包 alias,它会自动添加到项目文件中。您可以选择指定一个 活跃的 Dev Hub 组织用户接收 Apex gacks 的电子邮件通知,并安装, 升级或卸载与程序包关联的失败。

sf package create --name "Expenser App" --package-type Unlocked --path  \
"expenser-main" --target-dev-hub my-hub --error-notification-username me@devhub.org

输出与此示例类似。

sfdx-project.json has been updated.
Successfully created a package. 0HoB00000004CzHKAU
=== Ids
NAME        VALUE
──────────  ──────────────────
Package Id  0HoB00000004CzHKAU

更新程序包

要更新名称、描述或用户以接收 现有包,请使用此 命令。

sf package update --package "Expense App" --name "Expense Manager App" \
--description "New Description" --error-notification-username me2@devhub.org

注意

你 创建 包。

创建已解锁包的新版本

包版本是包内容和相关元数据的固定快照。 通过包版本,您可以管理更改并跟踪每次发布时的不同之处 或部署一组特定的更改。

在创建包版本之前,请先验证包详细信息,例如包 sfdx-project.json 文件中的名称、依赖项以及主要版本号、次要版本号和修补程序版本号。验证所需的元数据 更改或添加新的包版本位于包的主目录中。

我每天可以创建多少个包版本?

运行此命令以查看每天可以创建多少个包版本以及有多少个 你还剩下。

sf limits api display

查找 Package2VersionCreates 条目。

NAME                                   REMAINING  MAXIMUM
─────────────────────────────────────  ─────────  ─────────
Package2VersionCreates                  23         50

创建包版本

使用此命令创建包版本。指定软件包别名或 ID (0Ho)。 还可以包括一个临时定义文件,该文件包含特征列表和 设置包版本所依赖的元数据。

sf package version create --package "Expenser App" --installation-key “HIF83kS8kS7C” \
--definitionfile config/project-scratch-def.json --wait 10

注意

创建包版本时,请指定在非异步模式下运行命令的时间。如果 在该时间内创建包版本时,sfdx-project.json 文件会自动更新为 包版本信息。否则,必须手动编辑项目文件。–wait

创建包版本可能是一个长时间运行的过程,具体取决于 包大小和其他变量。您可以轻松查看状态和监控 进展。

sf package version create report --package-create-request-id 08cxx00000000YDAAY

输出显示有关请求的详细信息。

=== Package Version Create Request 
NAME                            VALUE
─────────────────────────────   ────────────────────
Version Create Request Id       08cB00000004CBxIAM 
Status                          InProgress 
Package Id                      0HoB00000004C9hKAE 
Package Version Id              05iB0000000CaaNIAS
Subscriber Package Version Id   04tB0000000NOimIAG
Tag                             git commit id 08dcfsdf
Branch 
CreatedDate                     2018-05-08 09:48
Installation URL
https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000NOimIAG

您可以在 的初始输出中找到请求 ID (08c)。sf package version create

根据包的大小和其他变量,创建请求可以采用 几分钟。当有多个待处理的创建包请求时 版本,您可以使用此命令查看所有请求的列表。

sf package version create list --created-last-days 0

显示每个请求的详细信息,如下所示(ID 和标签被截断)。

=== Package Version Create Requests [3] 
ID     STATUS  PACKAGE2 ID PKG2 VERSION ID SUB PKG2 VER ID TAG BRANCH CREATED DATE === 
08c... Error   0Ho...      
08c... Success 0Ho... 05i... 04t...                                   2017-06-22 12:07 
08c... Success 0Ho... 05i... 04t...                                   2017-06-23 14:55

使用关键字 NEXT 确保包版本号是唯一的

若要确保版本号是唯一的,请在 sfdx-project.json 文件中设置版本号时使用关键字 NEXT。

例如。“versionNumber”: “1.2.0.NEXT”

如果您不使用 NEXT,并且您也忘记更新版本 sfdx-project.json 文件中的数字,即新的包版本 使用与以前的包版本相同的编号。虽然我们不强制执行 包版本号的唯一性,每个包版本都分配了一个唯一的 订阅者包版本 ID(以 04t 开头)。

  • 通过创建和指定组织配置
    来简化未锁定的包开发 如果包的元数据依赖于一组复杂的功能、设置或许可证,则很难在临时组织定义文件中以声明方式指定这些依赖项。相反,请创建生产组织或其他开发组织的组织形状,并在临时组织定义文件中指定该源组织的 ID。在包创建过程中,我们会在构建和验证包的元数据时模拟源组织的环境。
  • 在未锁定的打包中使用分支 在源代码管理系统 (SCS)
    中使用分支的开发团队通常会根据特定代码分支中的元数据生成包版本。
  • 跳过验证以快速迭代未锁定的包开发 通过在包版本创建期间跳过对依赖项、包祖先和元数据的验证,更高效地迭代包开发
    。跳过验证可减少创建新包版本所需的时间,但只能将已验证的包版本提升为已发布状态。
  • 在 Salesforce 版本转换期间,为解锁的包定位特定版本
    在主要的 Salesforce 版本转换期间,您可以指定 或 在创建包版本时。通过指定软件包的发布版本,您可以测试即将推出的功能、运行回归测试并为客户提供支持,而不管他们的组织使用的是哪个 Salesforce 版本。以前,您只能创建与您的 Dev Hub 组织所在的 Salesforce 版本相匹配的软件包版本。previewprevious

通过创建和指定组织形状来简化解锁包开发

如果包的元数据依赖于一组复杂的功能, 设置或许可证,可能很难在 临时组织定义文件。相反,请创建生产组织的组织形状或其他组织形状 development org,并在临时组织定义文件中指定该源组织的 ID。在 包创建时,我们会在构建和验证 包的元数据。

在使用此功能之前,请熟悉 Org Shape for Scratch Orgs 的工作原理。

然后在源组织中启用临时组织设置,生成组织形状,然后 编辑临时组织定义文件以包含组织名称和 15 个字符的源组织 同上。

{
  "orgName": "Acme",
  "sourceOrg": "00DB1230400Ifx5"
}

在解锁的包装中使用分支

在源代码管理系统 (SCS) 中使用分支的开发团队,通常 基于特定代码分支中的元数据生成包版本。

若要确定包版本基于 SCS 中的哪个分支,请标记包版本 与分支名称一起使用属性 Salesforce CLI 命令。–branch

sf package version create –branch featureA

您可以指定任何字母数字值(最多 240 个字符)作为分支名称。

您还可以在 sfdx-project.json 文件的包目录部分中指定分支名称。

"packageDirectories": [
     {
        "path": "util",
        "default": true,
        "package": "pkgA",
        "versionName": "Spring ‘21",
        "versionNumber": "4.7.0.NEXT",
        "branch": "featureA"
     }]

指定分支时,该包版本的包别名会自动 附加分支名称。您可以在 sfdx.project.json 文件中查看包别名。

"packageAliases": {
    "pkgA@1.0.0.4-featureA":"04tB0000000IB1EIAW"}

请记住,版本号在每个分支内递增,而不是在分支之间递增。为 例如,可以有两个或多个版本号为 1.3.0.1 的 beta 包版本。

分行名称包版本别名
特征ApkgA@1.3.0-1-功能A
特征BpkgA@1.3.0-1-功能B
未指定pkgA@1.3.0-1

尽管多个 beta 包版本可以具有相同的版本号,但可以有 对于给定的 major.minor.patch 软件包版本,只有一个已提升和发布的软件包版本。

包依赖项和分支

默认情况下,您的包可以依赖于同一分支中的其他包。为 基于其他分支中的包依赖,在 sfdx.project.json 文件。

指定包依赖关系使用此格式
使用 branch 属性"dependencies": [ { "package": "pkgB", "versionNumber": "1.3.0.LATEST", "branch": "featureC" }]
使用最新提升和发布的包版本"dependencies": [ { "package": "pkgB", "versionNumber": "2.1.0.RELEASED" }]
如果您的包具有关联的分支,但依赖包没有 分支"dependencies": [ { "package": "pkgB", "versionNumber": "1.3.0.LATEST", "branch": "" }]
使用包别名"dependencies": [ { "package": "pkgB@2.1.0-1-featureC" }]

跳过验证,快速迭代解锁包开发

通过跳过依赖项的验证,更高效地迭代包开发, 包上级,以及包版本创建期间的元数据。跳过验证会减少 创建新的包版本所需的时间,但只能升级已验证的包版本 设置为释放状态。

sf package version create --skip-validation

在工具 API 中,使用 Package2VersionCreateRequest 对象上的 SkipValidation 字段。

注意

不能同时指定跳过验证和代码覆盖率,因为代码覆盖率是 在验证期间计算。

在 Salesforce 版本转换期间,为已解锁的软件包定位特定版本

在主要的 Salesforce 版本转换期间,您可以指定或何时 创建包版本。通过指定包的发布版本,可以进行测试 即将推出的功能,运行回归测试,并为客户提供支持,无论使用哪种 Salesforce 释放他们的组织已开启。以前,您只能创建与 Salesforce 发布您的开发人员中心组织。

previewprevious要基于预览版或以前的 Salesforce 发行版创建包版本,请创建 一个临时组织定义文件,其中包括:

{
    "release": "previous"
}

{
    "release": "preview"
}

在 sfdx-project.json 文件中,将 设置为与包版本的发布版本相对应 创建。如果以以前的版本为目标,则接受低于当前版本的任何值。sourceApiVersionsourceApiVersion然后,在创建软件包版本时,指定临时组织定义 文件。

sf package version create --package pkgA --definition-file config/project-scratch-def.json

预览开始日期是升级沙盒实例的时间。预览结束日期是所有 实例位于 GA 版本上。

解锁包的代码覆盖率

在升级和发布未锁定的软件包之前,Apex 代码必须满足 最低 75% 的代码覆盖率要求。可以安装不符合代码的包版本 仅在临时组织和沙盒中的覆盖率要求。

重要

之前已提升为已发布状态的已解锁包版本 Winter ’21 不受代码覆盖率要求的约束。

要使用 Salesforce CLI 计算代码覆盖率,请在运行命令时使用该参数。–code-coveragesf package version create

在计算代码覆盖率时,包版本创建可能需要更长的时间才能完成,因此 考虑在开发周期中何时包含代码覆盖率参数。您可以选择 跳过代码覆盖率,并且可以通过指定参数来跳过所有验证。您可以升级包版本 仅当它们经过验证并满足代码覆盖率要求时。–skip-validation

查看包版本的代码覆盖率信息,使用参数或 Salesforce 命令行界面。sf package version list –verbosesf package version report

我们不会计算依赖于组织的解锁包的代码覆盖率。

释放解锁的软件包

每个新的软件包版本在创建时都标记为 beta。当您开发您的 package,在创建准备好的版本之前,可以创建多个包版本 在生产组织中发布和安装。

在升级包版本之前,请确保在 Dev 中启用了用户权限“将包版本提升为已发布” 与包关联的中心组织。请考虑使用此用户创建权限集 权限,然后将权限集分配给相应的用户配置文件。

当您准备好发布时,请使用 .sf package version promote

sf package version promote --package "Expense Manager@1.3.0-7"

如果命令成功,则会显示一条确认消息。

Successfully promoted the package version, ID: 04tB0000000719qIAA to released.

更新成功后,查看包详细信息。

sf package version report --package "Expense Manager@1.3.0.7"

确认 Released 属性的值为 。true

=== Package Version
NAME                            VALUE
──────────────────────────────  ───────────────────
Name                            ver 1.0
Alias                           Expense Manager-1.0.0.5
Package Version Id              05iB0000000CaahIAC
Package Id                      0HoB0000000CabmKAC
Subscriber Package Version Id   04tB0000000NPbBIAW
Version                         1.0.0.5
Description                     update version
Branch
Tag                             git commit id 08dcfsdf
Released                        true
Created Date                    2018-05-08 09:48
Installation URL
https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000NPbBIAW

你 对于每个包版本号,只能升级和发布一次,并且无法撤消 此更改。

更新已解锁的软件包版本

您可以从命令行更新包版本的大多数属性。例如 您可以更改包版本名称或说明。一个重要的例外是你不能 更改发布状态。

如果已发布最新的软件包版本,请递增主要版本、次要版本或 您创建的下一个软件包版本的修补程序版本号。

软件包版本号使用格式 major.minor.patch.build。例如,如果您发布了 软件包 1.0.0.2,您可以使用 1.1.0.0、2.0.0.0 或 1.0.1.0 作为下一个软件包版本。

未锁定软件包中硬删除的组件

当这些组件从未锁定的包中删除时,它们将从 软件包升级期间的目标安装组织。

  • AccountForecastSettings
  • AcctMgrTargetSettings
  • ActionableListDefinition
  • ActionPlanTemplate
  • AccountingFieldMapping
  • AccountingModelConfig
  • AdvAccountForecastSet
  • AdvAcctForecastDimSource
  • AdvAcctForecastPeriodGroup
  • AIApplicationConfig
  • AIUsecaseDefinition
  • AnalyticSnapshot
  • ApexClass
  • ApexComponent
  • ApexPage
  • ApexTrigger
  • ApplicationRecordTypeConfig
  • ApplicationSubtypeDefinition
  • AppointmentAssignmentPolicy
  • AssessmentQuestion
  • AssessmentQuestionSet
  • AssistantContextItem
  • AssistantSkillQuickAction
  • AssistantSkillSobjectAction
  • AssistantVersion
  • AuraDefinitionBundle
  • BatchCalcJobDefinition
  • BatchProcessJobDefinition
  • BenefitAction
  • BldgEnrgyIntensityCnfg
  • BrandingSet
  • BriefcaseDefinition
  • BusinessProcessGroup
  • BusinessProcessTypeDefinition
  • CareBenefitVerifySettings
  • CareLimitType
  • CareProviderSearchConfig
  • CareRequestConfiguration
  • ChannelObjectLinkingRule
  • ClaimFinancialSettings
  • ClauseCatgConfiguration
  • CompactLayout
  • ContractType
  • ConversationVendorInfo
  • CustomApplication
  • CustomPageWebLink
  • CustomPermission
  • CustomTab
  • Dashboard
  • DecisionMatrixDefinition
  • DecisionMatrixDefinitionVersion
  • DecisionTable
  • DecisionTableDatasetLink
  • DisclosureDefinition
  • DisclosureDefinitionVersion
  • DisclosureType
  • DiscoveryAIModel
  • DiscoveryGoal
  • Document
  • DocumentGenerationSetting
  • DocumentType
  • EmailServicesFunction
  • EmailTemplate
  • EmbeddedServiceBranding
  • EmbeddedServiceConfig
  • EmbeddedServiceLiveAgent
  • EmbeddedServiceMenuSettings
  • ESignatureConfig
  • ESignatureEnvelopeConfig
  • ExplainabilityActionDefinition
  • ExplainabilityActionVersion
  • ExplainabilityMsgTemplate
  • ExpressionSetDefinition
  • ExpressionSetDefinitionVersion
  • ExpressionSetObjectAlias
  • ExternalAIModel
  • ExternalClientApplication
  • ExtlClntAppMobileSettings
  • ExtlClntAppOauthSettings
  • ExternalDataSrcDescriptor
  • ExternalServiceRegistration
  • FeatureParameterBoolean
  • FeatureParameterDate
  • FeatureParameterInteger
  • FieldRestrictionRule
  • FieldServiceMobileExtension
  • FlexiPage
  • FuelType
  • FuelTypeSustnUom
  • GatewayProviderPaymentMethodType
  • HomePageComponent
  • HomePageLayout
  • IdentityVerificationProcDef
  • InstalledPackage
  • IntegrationHubSettings
  • IntegrationHubSettingsType
  • IntegrationProviderDef
  • Layout
  • Letterhead
  • LicenseDefinition
  • LightningComponentBundle
  • LightningExperienceTheme
  • LightningMessageChannel
  • LightningOnboardingConfig
  • ListView
  • LiveChatAgentConfig
  • LiveChatButton
  • LiveChatSensitiveDataRule
  • LocationUse
  • LoyaltyProgramSetup
  • MarketingAppExtActivity
  • MarketingAppExtension
  • MatchingRule
  • MfgProgramTemplate
  • MLDataDefinition
  • MLPredictionDefinition
  • NamedCredential
  • NetworkBranding
  • ObjectHierarchyRelationship
  • OcrSampleDocument
  • OcrTemplate
  • OmniDataTransform
  • OmniIntegrationProcedure
  • OmniScript
  • OmniUiCard
  • PaymentGatewayProvider
  • PermissionSet
  • PermissionSetGroup
  • PermissionSetLicense
  • PipelineInspMetricConfig
  • PlatformEventSubscriberConfig
  • ProductAttributeSet
  • ProductSpecificationTypeDefinition
  • Profile
  • QuickAction
  • RecordAlertCategory
  • RecordAlertDataSource
  • RegisteredExternalService
  • RelatedRecordAssocCriteria
  • RelationshipGraphDefinition
  • RemoteSiteSetting
  • Report
  • ReportType
  • RestrictionRule
  • SalesAgreementSettings
  • SchedulingRule
  • SchedulingObjective
  • ScoreCategory
  • ServiceAISetupDefinition
  • ServiceAISetupField
  • ServiceProcess
  • SharingReason
  • SharingRecalculation
  • SlackApp
  • StaticResource
  • StnryAssetEnvSrcCnfg
  • SustainabilityUom
  • SustnUomConversion
  • SvcCatalogCategory
  • SvcCatalogFulfillmentFlow
  • SvcCatalogItemDef
  • TimelineObjectDefinition
  • UIObjectRelationConfig
  • UserAccessPolicy
  • UserLicense
  • UserProfileSearchScope
  • ValidationRule
  • VehicleAssetEmssnSrcCnfg
  • ViewDefinition
  • VirtualVisitConfig
  • WaveApplication
  • WaveComponent
  • WaveDashboard
  • WaveDataflow
  • WaveDataset
  • WaveLens
  • WaveRecipe
  • WaveTemplateBundle
  • WaveXmd
  • WebLink
  • WebStoreTemplate
  • WorkflowAlert
  • WorkflowFieldUpdate
  • WorkflowFlowAction
  • WorkflowOutboundMessage
  • WorkflowRule
  • WorkflowTask

删除未锁定的软件包或软件包版本

使用 和 删除包和包版本 你不再需要了。

sf package version deletesf package delete

若要删除包或包版本,用户需要“删除第二代包”用户 许可。在删除包之前,请先删除所有关联的包版本。

包装类型我可以删除测试版软件包和软件包版本吗?我可以删除已发布的软件包和软件包版本吗?
第二代托管软件包是的
解锁套餐是的是的

删除包或包版本的注意事项

  • 删除是永久性的。
  • 尝试安装已删除的软件包版本将失败。
  • 在删除之前,请确保包或包版本未被引用为 屬地。

例子:

$ sf package delete -p "Your Package Alias"
$ sf package delete -p 0Ho...
$ sf package version delete -p "Your Package Version Alias"
$ sf package version delete -p 04t...

这些 CLI 命令不能用于第一代托管包或包版本。 若要删除第一代托管包,请参阅第一代托管打包开发人员中的查看包详细信息 指南。

查看软件包详细信息

从命令查看以前创建的包和包版本的详细信息 线。若要显示开发人员中心组织中所有包的列表,请使用此命令。

sf package list --target-dev-hub my-hub

可以在输出中查看命名空间、包名称、ID 和其他详细信息。

Name              Id                  Alias           Description  Type
───────────────   ──────────────────  ──────────────  ───────────  ───────────  ───────
Expenser App      0HoB00000004CzRKAU  Expenser App                 Unlocked
Expenser Logic    0HoB00000004CzMKAU  Expenser Logic               Unlocked
Expenser Schema   0HoB00000004CzHKAU  Expenser Schema              Unlocked

包括可选参数以根据修改日期筛选列表结果, 创建日期,并按特定字段或包 ID 排序。要限制详细信息,请使用 .要显示展开的详细信息,请使用 。–concise–verbose

若要显示开发人员中心组织中所有包版本的列表,请使用此命令。

sf package version list --target-dev-hub my-hub

您可以在输出中查看命名空间、版本名称和其他详细信息。

Package Name      Namespace  Version  Sub Pkg Ver Id       Alias                    Installation Key  Released  
───────────────  ──────────  ───────  ───────────────────  ───────────────────────  ─────────────────  ───────
Expenser Schema              0.1.0.1  04tB0000000719qIAA   Expenser Schema@0.1.0-1   false             true
Expenser Schema              0.2.0.1  04tB000000071AjIAI   Expenser Schema@0.2.0-1   false             true
Expenser Schema              0.3.0.1  04tB000000071AtIAI   Expenser Schema@0.3.0-1   false             false
Expenser Schema              0.3.0.2  04tB000000071AyIAI   Expenser Schema@0.3.0-2   false             true
Expenser Schema              0.3.1.1  04tB0000000KGU6IAO   Expenser Schema@0.3.1-1   false             false
Expenser Schema              0.3.1.2  04tB0000000KGUBIA4   Expenser Schema@0.3.1-2   false             true
Expenser Schema              0.3.2.1  04tB0000000KGUQIA4   Expenser Schema@0.3.2-1   false             true
Expenser Logic               0.1.0.1  04tB0000000719vIAA   Expenser Logic@0.1.0-1    false             true
Expenser App                 0.1.0.1  04tB000000071A0IAI   Expenser App@0.1.0-1      false             true

为未锁定的软件包推送软件包升级

通过推送升级,您可以升级订阅者组织中安装的软件包,而无需 要求客户自行安装升级。您可以选择接收推送的组织 upgrade、包升级到的版本以及您希望何时进行升级。推 升级特别有用:如果您需要推送更改以修复热错误。

使用 SOAP API 启动推送升级、跟踪每个作业的状态并查看错误 消息,如果任何推送升级失败。以下是有助于推送升级的对象。

为此,请执行以下操作:使用此对象:
检索有关包版本的详细信息。MetadataPackageVersion肥皂 应用程序接口
检索有关订阅者组织的信息,例如组织 ID 和软件包 当前安装的版本。PackageSubscriber(包订阅者) 肥皂 应用程序接口
计划推送升级,或检查推送升级的状态。PackagePushRequest 肥皂 应用程序接口
指定要接收推送升级的组织。创建单独的包推送作业 接收推送升级的每个组织。PackagePushJob(包推送作业)SOAP API
查看与推送升级请求关联的任何错误消息。PackagePushError肥皂 应用程序接口

已解锁软件包的推送升级注意事项

  • 您可以包含新功能和更改的功能,也可以在推送升级期间删除功能。
  • 安装推送升级时,将遵守软件包中的 Apex。
  • 即使包版本需要密码,也可以使用推送升级。

安装解锁的软件包

使用 CLI 或浏览器安装未锁定的软件包。您可以安装软件包版本 在临时组织、沙盒组织、DE 组织或生产组织中。

  • 使用 CLI
    安装软件包 如果您使用的是 Salesforce CLI,则可以使用该命令在临时组织或目标订阅者组织中安装软件包。sf package install
  • 从 URL
    安装未锁定的软件包 从 CLI 或浏览器安装未锁定的软件包,类似于安装托管软件包的方式。
  • 升级已解锁包
    的版本 是否要对现有包进行元数据更改?您可以使用 CLI 将一个软件包版本升级到另一个软件包版本。
  • 用于安装具有依赖项的未锁定包的示例脚本
    使用此示例脚本作为创建自己的脚本的基础,以安装具有依赖项的包。此脚本包含一个查询,用于查找依赖包并按正确的依赖顺序安装它们。

使用 CLI 安装软件包

如果您使用的是 Salesforce CLI,则可以使用该命令在临时组织或目标订阅者中安装软件包 组织。

sf package install

在将软件包安装到临时组织之前,请运行此命令以列出所有软件包和 找到 ID 或包别名。

sf package version list

确定要安装的版本。输入此命令,提供软件包别名或 程序包 ID(以 04t 开头)。

sf package install --package "Expense Manager@1.2.0-12" --target-org jdoe@example.com

如果您已使用默认用户名设置了临时组织,请仅输入软件包版本 同上。

sf package install --package "Expense Manager@1.2.0-12"

注意

如果您定义了别名(使用参数),则 可以指定 的别名而不是用户名。-a–target-org

CLI 显示有关安装的状态消息。

Waiting for the subscriber package version install request to get processed. Status = InProgress Successfully installed the subscriber package version: 04txx0000000FIuAAM.

控制包安装超时

当您发出命令时,它需要 几分钟后,软件包版本将在目标组织中可用,并安装到 完成。要留出足够的时间成功安装,请使用以下参数表示 互斥计时器。sf package install

  • –publish-wait定义 该命令等待软件包版本在目标组织中可用。默认值为 0。 如果在此时间范围内该软件包在目标组织中不可用,则安装是 终止。当您 创建新的包版本,然后立即尝试将其安装到目标 组织。–publish-wait注意如果设置为 0,则包 安装会立即失败,除非软件包版本在目标中已可用 组织。–publish-wait
  • –wait定义 命令在软件包可用后等待安装完成。默认值为 0. 间隔结束时,install 命令 完成,但安装将继续,直到失败或成功。您可以轮询 使用 的安装状态。–waitsf package install report注意计时器在以下时间后生效 指定的时间已过。如果时间间隔在包 在目标组织中可用,间隔从不 开始。–wait–publish-wait–publish-wait–wait

例如,考虑一个名为 Expense Manager 的包,它需要 5 分钟才能变成 在目标组织上可用,安装时间为 11 分钟。以下命令已设置为 3 分钟和 10 分钟。由于 Expense Manager 需要的时间超过设置的时间间隔,因此安装将在 三分钟间隔结束。

publish-waitwaitpublish-waitpublish-wait

sf package install --package "Expense Manager@1.2.0-12" --publish-wait 3 --wait 10

这 以下命令已设置为 6 分钟,并设置为 10 分钟。如果尚不可用,则费用 Manager 需要 5 分钟才能在目标组织上可用。然后时钟开始滴答作响 10分钟的时间。在 10 分钟结束时, 命令完成,因为时间间隔具有 已过,但安装尚未完成。此时,表示安装已在 进展。再过一分钟,安装完成并指示成功 安装。

publish-waitwaitwaitwaitsf package install reportsf package install report

sf package install --package "Expense Manager@1.2.0-12" --publish-wait 6 --wait 10

从 URL 安装未锁定的软件包

从 CLI 或浏览器安装未锁定的软件包,类似于安装方式 托管包。

如果从 CLI 创建软件包,则可以派生 通过将订阅者包 ID 添加到开发人员中心 URL 来包。您可以使用此 URL 进行测试 不同的部署或安装方案。

例如,如果包版本具有 订阅者包 ID 04tB00000009oZ3JBI,将 ID 添加为 apvId。https:// 我的域名.lightning.force.com/packagingSetupUI/ipLanding.app?apvId=04tB00000009oZ3JBI

任何人 使用 URL 和 Salesforce 组织的有效登录名可以安装软件包。要安装软件包,请执行以下操作:

  1. 在浏览器中,输入安装 URL。
  2. 输入要在其中安装 包,然后单击“登录”。
  3. 如果软件包受安装密钥保护,请输入安装密钥。
  4. 对于默认安装,请单击“安装”。一条消息描述了 进展。安装完成后,您会收到一条确认消息。

升级已解锁软件包的版本

是否要对现有包进行元数据更改?您可以使用 CLI 执行以下操作 将一个软件包版本升级到另一个软件包版本。

执行包升级时,以下是元数据更改的预期内容。

升级到新的包版本时,可以选择是否要求成功 编译组织和包中的所有 Apex (),或仅编译包中的 Apex ()。–apex-compile all–apex-compile package

  • 新版本中引入的元数据将作为升级的一部分进行安装。
  • 如果升级后的组件与目标组织中已有的组件具有相同的 API 名称, 组件将被更改覆盖。
  • 如果升级中的组件已从目标组织中删除,则会重新创建该组件 在升级期间。
  • 在新软件包版本中删除的元数据也会从目标组织中删除 作为升级的一部分。已删除的元数据是当前包中未包含的元数据 版本安装,但存在于目标组织中安装的先前软件包版本中。如果 在升级发生之前删除元数据,升级将正常进行。一些例子 其中元数据已弃用且未删除:
    • 用户在自定义对象和字段中输入的数据将被弃用,并且不会被删除。管理员 如有必要,可以导出此类数据。
    • 不推荐使用 Apex 类之类的对象,如果在 作为软件包一部分的 Lightning 组件。
  • 在 API 版本 45.0 及更高版本(Salesforce CLI 版本 45.0.9 或更高版本)中,您可以指定 在软件包升级期间删除的元数据会发生什么情况。使用命令的 | 参数,指定以下值之一:sf package install-t–upgrade-type
    • Delete指定删除所有已删除的内容 组件,但自定义对象和自定义字段除外,没有 依赖。
    • DeprecateOnly指定所有删除 组件必须标记为已弃用。已删除的元数据存在于目标组织中 包升级后,但在 UI 中显示为包中已弃用。这 选项在将元数据从一个包迁移到另一个包时很有用。
    • Mixed(默认值)指定某些已删除 组件将被删除,其他组件将被标记为已弃用。更多信息 在硬删除的组件上,请参阅未锁定包中的硬删除组件。

注意

对于软件包安装到生产组织或任何启用了 Apex Compile on Deploy 的组织, 平台在软件包安装或升级操作后编译组织中的所有 Apex 完成。此方法可确保软件包安装和升级不会影响 组织的性能,即使指定了,也会完成。–apex-compile package

用于安装具有依赖项的未锁定包的示例脚本

使用此示例脚本作为创建自己的脚本的基础,以使用 依赖。此脚本包含一个查询,用于查找依赖包并安装它们 以正确的依赖顺序。

示例脚本

注意

请务必将软件包版本 ID 和临时组织用户名替换为您自己的用户名 具体细节。

#!/bin/bash


# The execution of this script stops if a command or pipeline has an error.

# For example, failure to install a dependent package will cause the script

# to stop execution.

set -e


# Specify a package version id (starts with 04t)

# If you know the package alias but not the id, use sf package version list to find it.

PACKAGE=04tB0000000NmnHIAS


# Specify the user name of the subscriber org.

USER_NAME=test-bvdfz3m9tqdf@example.com


# Specify the timeout in minutes for package installation.

WAIT_TIME=15


echo "Retrieving dependencies for package Id: "$PACKAGE


# Execute soql query to retrieve package dependencies in json format.

RESULT_JSON=`sf data query -u $USER_NAME -t -q "SELECT Dependencies FROM SubscriberPackageVersion WHERE Id='$PACKAGE'" --json`


# Parse the json string using python to test whether the result json contains a list of ids or not.

DEPENDENCIES=`echo $RESULT_JSON | python -c 'import sys, json; print json.load(sys.stdin)["result"]["records"][0]["Dependencies"]'`


# If the parsed dependencies is None, the package has no dependencies. Otherwise, parse the result into a list of ids.

# Then loop through the ids to install each of the dependent packages.

if [[ "$DEPENDENCIES" != 'None' ]]; then


    DEPENDENCIES=`echo $RESULT_JSON | python -c '

import sys, json

ids = json.load(sys.stdin)["result"]["records"][0]["Dependencies"]["ids"]

dependencies = []

for id in ids:

    dependencies.append(id["subscriberPackageVersionId"])

print " ".join(dependencies)

'` 


    echo "The package you are installing depends on these packages (in correct dependency order): "$DEPENDENCIES

    for id in $DEPENDENCIES

    do

        echo "Installing dependent package: "$id

        sf package install --package $id -u $USER_NAME -w $WAIT_TIME --publish-wait 10

    done


else

    echo "The package has no dependencies"


fi


# After processing the dependencies, proceed to install the specified package.

echo "Installing package: "$PACKAGE

sf package install --package $PACKAGE -u $USER_NAME -w $WAIT_TIME --publish-wait 10


exit 0;

从未锁定的包中迁移已弃用的元数据

您可以弃用未锁定包中的元数据,将该元数据移动到新包中, ,然后在生产组织中安装新软件包。

创建更多解锁包时,可以重构包并将元数据从 如有必要,一个已解锁的包到另一个已解锁的包。

若要将生产元数据从包 A 移动到包 B,请按照下列步骤操作。

  1. 确定要从包 A 移动到包 B 的元数据。
  2. 从包 A 中删除元数据,创建版本,然后发布包。
  3. 将元数据添加到包 B,创建版本,然后发布包。
  4. 在生产组织中,升级软件包 A。
  5. 在生产组织中,安装软件包 B。

元数据现在是生产组织中包 B 的一部分。

卸载已解锁的软件包

您可以使用 Salesforce CLI 或从设置 UI 从组织中卸载软件包。什么时候 卸载未锁定的软件包,软件包中的所有组件都将从 组织。要使用 CLI 从目标组织卸载包,请授权 Dev Hub 组织并运行 这 命令。

sf package uninstall --package "Expense Manager@2.3.0-5"

您还可以从 Web 浏览器卸载软件包。打开您 已安装软件包。

sf org open -u me@my.org

然后 卸载软件包。

  1. 在“设置”中,输入“快速查找”框,然后 选择已安装的软件包Installed Packages
  2. 单击要删除的软件包旁边的“卸载”。
  3. 确定是否保存和导出包数据的副本,然后选择 相应的单选按钮。
  4. 选择“是,我想卸载”,然后单击“卸载”。

卸载软件包的注意事项

  • 如果要卸载包含自定义对象的包,则该包上的所有组件 自定义对象也会被删除。已删除的项目包括自定义字段、验证规则、 自定义按钮和链接、工作流规则和审批流程。
  • 每当卸载中未包含的组件时,都无法卸载软件包 引用包中的任何组件。例如:
    • 当已安装的软件包包含标准对象上的任何组件时,另一个 组件引用时,Salesforce 会阻止您卸载软件包。一 示例是一个包,其中包含一个自定义用户字段,该字段具有获取 当该字段的值为特定值时触发。卸载软件包 会阻止您的工作流程工作。
    • 安装两个不相关的包后,每个包都包含一个自定义对象和 一个自定义对象组件引用另一个组件中的组件,则无法卸载 包。例如,如果安装包含自定义的支出报表应用 user 字段,并在另一个已安装的自定义对象上创建验证规则,该对象 引用该自定义用户字段。但是,卸载支出报表应用 阻止验证规则起作用。
    • 当已安装的文件夹包含安装后添加的组件时, Salesforce 会阻止您卸载软件包。
    • 当您在以下时间添加的电子邮件模板中使用已安装的信笺抬头时 安装时,Salesforce 会阻止您卸载软件包。
    • 当已安装的软件包包含 Einstein 引用的自定义字段时 Prediction Builder 或 Case Classification,Salesforce 会阻止您卸载 包。在卸载包之前,请在“预测”中编辑预测 生成器或案例分类,使其不再引用自定义字段。
  • 无法卸载删除所有活动企业和个人帐户记录的软件包 类型。激活至少一种其他企业或个人帐户记录类型,然后尝试 再。
  • 如果后台作业正在更新由 包,例如对汇总摘要字段的更新。等到后台作业 完成,然后重试。

将解锁的包转移到其他开发人员中心

可以将已解锁包的所有权从一个开发人员中心组织转移到 另一个。

注意

此包转移功能仅适用于已解锁的包和第二代包 托管包。开发人员中心组织不与第一代托管包或非托管包一起使用 包,因此此功能不适用于这些包类型。

请求将包转移到其他开发人员中心

首先向 Salesforce 客户支持记录案例,并提供以下内容 详:

主题: 解锁的包传输到其他开发人员中心

描述:

在说明中,列出:

  • 要传输的包的订阅者包 ID。此 ID 以 033 开头。自 验证包的 033 ID,在源上运行带有标志的命令 Dev Hub 组织。sf package list -–verbose
  • 源组织的 Dev Hub 组织 ID。
  • 目标组织的 Dev Hub 组织 ID。目标开发人员中心组织不能是开发人员 版本组织或试用组织。
  • (可选)要传输的包的命名空间。如果包是无命名空间 解锁包,请跳过此步骤。
  • 确认你已查看并完成了准备 Transfer Your Package 部分,包括将命名空间链接到目标 Dev Hub,并清除 Apex 错误通知用户。

如果您要转移多个包裹,请为每个包裹单独提交案例。

在您的案例通过审核和批准后,Salesforce 客户支持人员将 与您联系以安排启动包裹转移的时间。

注意

出于安全原因,包在位于政府云中的开发人员中心和 不允许使用位于政府云外部的 Dev Hub。

准备转移您的包裹

以下是您如何帮助确保包裹顺利转移的方法。

  • 如果要传输的包具有命名空间,请将命名空间链接到源 开发人员中心。在包传输之前,命名空间必须链接到 源和目标开发人员中心组织。
  • 在启动包传输过程之前,请确保所有推送升级或包 版本创建过程已完成。
  • 删除不再需要的包版本。
  • 如果指定,请使用命令清除包的错误通知用户。如果 你要将包转移到你拥有的开发人员中心组织,可以设置错误通知 包传输完成后,用户到目标开发人员中心中的用户。注意: 指定无值 在等号清除任何以前设置的用户名后。sf package update –error-notification-username=–error-notification-username=

在包裹转移过程中

在包之前,必须完成所有推送升级或包版本创建过程 传输过程已启动。Salesforce 客户支持将提醒您 将进行包裹转移。

包裹转移完成后

运行并验证包是否为否 与开发人员中心关联的时间更长。sf package list

包传输对包 ID 的影响

ID 类型ID 以 开头包裹转移完成后…
订阅者程序包 ID033此 ID 保持不变。
订阅者包版本 ID246此 ID 保持不变。
程序包 ID0Ho传输的包将收到一个新的唯一包 ID。

更新包项目文件

在开发人员中心创建新包或包版本之前,请更新 sfdx-project.json 文件并删除对传输的所有引用 package 从“package 目录”和“package alias”部分。

如果开发人员中心中有依赖于要传输的包的包,If you have packages in your Dev Hub which depends on the package that you-inter-transfer, 将 sfdx-project.json 文件中的 Package Dependency 部分更新为 显式指定您所依赖的传输包的 04t ID。

例如,如果将 pkgA 传输到其他开发人员中心,并且 sfdx-project.json 文件列出了如下所示的包依赖项。

"dependencies": [ 
   {
      "package": "pkgA"
      "versionNumber": "2.0.0.LATEST"
   }
]

更新依赖项以指定 pkgA 的 04t ID。

"dependencies": [ 
   {
      "package": "04tB0000000UzH5IAK"
   }
]

或者使用包别名指定依赖项。

"dependencies": [ 
   {
      "package": "pkgA2.0.0-1"
   }
"packageAliases": {
     "pkgA2.0.0-1": "04tB0000000UzH5IAK"
}
]

传输的包裹历史记录是什么?

当一个包被转移时,所有包版本和所有血统都是 转移。升级路径不受影响。

无论包传输是在你拥有的两个 Dev Hub 组织之间进行的,还是 包已从外部传输到你不拥有的开发人员中心,我们将传输包版本 历史。

我们转让:

  • 包名称、命名空间、类型和 ID。一个例外是传输的包会得到一个 新的 0Ho ID。
  • 包版本信息。这包括运行时通常显示的所有信息 或命令。sf package version listsf package version report

我们不转让:

  • 推送升级历史记录。
  • 包版本创建请求。
  • 收到 Apex 和其他类型的错误通知的 Dev Hub 用户的用户名。 此可选用户是使用 设置的。–error-notification-username
  • 获取从其他开发人员中心
    转移的已解锁包的所有权 可以获取从其他 Dev Hug 组织转移的已解锁包的所有权。

获取从其他开发人员中心转移的已解锁包的所有权

您可以获得从另一个 Dev Hug 转移的解锁包的所有权 组织。

若要从开发人员中心组织启动包传输,请参阅将解锁的包传输到其他开发人员中心。

注意

出于安全原因,包在位于政府云中的开发人员中心和 不允许使用位于政府云外部的 Dev Hub。

接收包裹转移

将收到的包的命名空间链接到开发人员中心组织。请参阅将命名空间链接到 Dev Hub 组织 Salesforce DX 开发人员指南。如果包未与 命名空间,请跳过此步骤。

包裹转移完成后

包裹转移完成后,Salesforce 客户支持将通知您。

若要验证传输的包是否与开发人员中心关联,请运行 。sf package list

包传输对包 ID 的影响

ID 类型ID 以 开头包裹转移完成后…
订阅者程序包 ID033此 ID 保持不变。
订阅者包版本 ID246此 ID 保持不变。
程序包 ID0Ho传输的包将收到一个新的唯一包 ID。

更新包项目文件

打开并查看关联的 sfdx-project.json 文件的内容 与转移的包。

打开并查看与 转移的包裹。定义文件有助于在开发过程中设置临时组织。 使用参数指定定义 文件。–definition-file

如果包目录部分列出了未传输给您的其他包, 从 sfdx-project.json 文件中删除这些引用。

接下来,查看 sfdx-project.json 文件的包别名部分,然后 删除对与包无关的包别名的任何引用 转移。

更新传输的包的包别名,以指定其 0Ho 包 ID。

创建新的包版本之前

与创建新包版本的方式类似,必须更新 sfdx-project.json 文件并更新版本号。

指定 Dev Hub 用户接收有关未处理的 Apex 异常的电子邮件通知,以及 安装、升级或卸载与包关联的失败时,请运行该命令,然后使用该参数。sf package update–error-notification-username

传输的包裹历史记录是什么?

我们转让:

  • 包名称、命名空间、类型和 ID。一个例外是传输的包会得到一个 新的 0Ho ID。
  • 包版本信息。这包括运行时通常显示的所有信息 或命令。sf package version listsf package version report

我们不转让:

  • 推送升级历史记录。
  • 包版本创建请求。
  • 收到 Apex 和其他类型的错误的 Dev Hub 用户的用户名 通知。

解锁包

Salesforce提供不同类型的软件包,解锁的软件包尤其如此 适用于内部业务应用程序。除非您计划在 AppExchange 上分发应用程序,否则 解锁包是大多数用例的正确包类型。您可以使用解锁的软件包来 整理现有元数据、打包应用、扩展已购买的应用 AppExchange 或打包新元数据。

解锁的包遵循源代码驱动的开发模型。元数据的真实来源 包中包含的是您的版本控制系统,而不是组织中的内容。该模型带来 有了它,现代源代码驱动开发模式的所有好处。

注意

如果您是 AppExchange 合作伙伴,并计划通过以下方式将您的应用程序分发给客户 AppExchange,使用第二代托管打包。有关详细信息,请参阅第二代托管软件包 信息。

  • 什么是解锁套餐?
    如果你不熟悉打包,则可以将包视为填充元数据的容器。它包含一组相关功能、自定义项和架构。您可以使用包将元数据从一个 Salesforce 组织移动到另一个组织。
  • 基于包的开发模型 为了演示解锁包的强大功能,以下是打包在传统开发模型
    中的工作方式。对于大多数生产组织,元数据传统上包含在两个存储桶中:一组从 AppExchange 安装的托管软件包和未打包的元数据。
  • 在创建未锁定的包之前 使用未锁定的
    打包时,为确保正确设置它,请验证以下内容。
  • 了解您的组织 您使用
    解锁包装的一些组织具有独特的用途。
  • 创建与组织相关的未锁定包 与组织相关的未锁定包是未锁定包的变体,允许您在计划安装包的组织(安装组织)中创建依赖于未打包元数据的包
  • 解锁包
    的工作流 您可以直接从 Salesforce 命令行创建和安装解锁包。
  • 配置解锁的软件包 您可以在每个软件包的
    sfdx-project.json 文件中包含一个条目,以指定其别名、版本详细信息、依赖项、功能和组织设置。在命令行中,还可以设置或更改选项,例如指定安装密钥、更新软件包名称或添加说明。
  • 我们如何处理未锁定包
    中的配置文件设置 将配置文件打包到未锁定的或第二代托管包中时,生成系统会在包创建期间检查配置文件的内容,并仅保留与包中的元数据直接相关的配置文件设置。配置文件本身以及与包的元数据无关的任何配置文件设置都将从包中丢弃。
  • 开发未锁定的包 包是一个顶级容器,其中包含有关应用或包的重要详细信息:包
    名称、说明和关联的命名空间。
  • 推送未锁定软件包的软件包升级 通过推送升级,您可以升级订阅者组织中安装的软件包
    ,而无需要求客户自行安装升级。您可以选择哪些组织接收推送升级、将软件包升级到哪个版本以及何时进行升级。推送升级特别有用:如果您需要推送更改以修复热错误。
  • 安装未锁定的软件包
    使用 CLI 或浏览器安装未锁定的软件包。您可以在临时组织、沙盒组织、DE 组织或生产组织中安装软件包版本。
  • 从未锁定的包中迁移已弃用的元数据 您可以弃用未锁定包中的元数据,将该元数据移动到新包,然后在生产组织中安装新包
  • 卸载未锁定的软件包
    您可以使用 Salesforce CLI 或从设置 UI 从组织中卸载软件包。卸载未锁定的软件包时,软件包中的所有组件都将从组织中删除。
  • 将解锁的包转移到其他开发人员中心 可以将已解锁包的所有权从一个开发人员中心组织转移到另一个开发人员中心
    组织。

什么是解锁套餐?

如果您不熟悉包装,则可以将包装视为您填充的容器 替换为元数据。它包含一组相关功能、自定义项和架构。您使用软件包 将元数据从一个 Salesforce 组织移动到另一个组织。

每个解锁的包都有不同的生命周期。将元数据添加到包中,然后创建一个 新的包版本。虽然包在不断发展,但每个包版本都是一个 不可变的工件。

包版本包含与包关联的特定元数据和功能 版本,在创建时。在循环访问包以及添加、删除或更改包时 打包的元数据,您可以创建多个包版本。

您可以在临时版、沙盒版、试用版、开发人员版或 生产组织。安装包版本与部署元数据类似。每个包装 version 有一个版本号,订阅者可以将新的软件包版本安装到他们的组织中 通过软件包升级。

注意

由于包版本是不可变的,因此它们也可以用作连续的工件 集成 (CI) 和持续交付 (CD) 流程。

您可以多次重复包开发周期。您可以更改元数据, 创建包版本,测试包版本,最后将包部署或安装到 生产组织。通过这种独特的应用开发生命周期,您可以准确控制内容、时间和内容 元数据的推出方式。在已安装的组织中,您可以检查来自哪些元数据 哪个包以及与特定包关联的所有元数据集。

基于包的开发模型

为了演示解锁包的强大功能,以下是打包在 传统发展模式。对于大多数生产组织来说,元数据传统上包含在 两个存储桶:一组从 AppExchange 安装的托管软件包,以及未打包的 元数据。

客户经常投资 Salesforce 自定义以支持业务流程和扩展 Salesforce 平台的强大功能。在开发模型中,您的 Salesforce 组织的单体 未打包的元数据包含属于自定义应用或扩展程序的所有元数据。因为 元数据不是孤立的或有组织的,可能难以理解、升级和 保持。

在包开发模型中,可以在生产中组织未打包的元数据 组织到定义良好的包中。您可以使用 Salesforce DX 项目来组织您的源 放入包目录中,所有内容都在您选择的版本控制系统中进行管理。你 最终目标是使用那些可版本控制、易于维护的目录创建包。 更新、安装和升级。

解锁的包允许您在一个或多个托管和 解锁的包,使您的包保持小巧和模块化。您可以使用命令行执行以下操作 执行未锁定的打包操作,或者您可以包含特定于打包的 Salesforce CLI 脚本中的命令,并自动执行包开发。

创建解锁包之前

使用解锁的包装时,为确保设置正确,请验证 以后。

你?

  • 在组织中启用 Dev Hub
  • 启用第二代托管打包
  • 安装 Salesforce CLI

注意

解锁的包装可通过以下许可证获得:Salesforce 或 Salesforce Limited 访问 – 免费(仅限合作伙伴)。

使用解锁包的开发人员需要在开发人员中心设置正确的权限 组织。开发人员需要系统管理员配置文件或创建和更新 第二代包权限。有关更多信息,请参阅添加 Salesforce DX 用户。

可以从开发人员中心创建的最大解锁包版本数 Day 与您的每日 Scratch 组织分配相同。要请求提高限制, 请联系 Salesforce 客户支持。临时组织和包是分开计算的,因此创建解锁的包不计算在内 违反您的每日临时组织限制。要查看临时组织限制,请使用 CLI:

sf limits api display

欲了解更多信息 临时组织限制,请参阅临时组织。

了解您的组织

您使用解锁包装的某些组织具有独特的 目的。

选择你的 Dev Hub 组织

将 Dev Hub 组织用于这些目的。

当您使用 Salesforce CLI 创建未锁定的软件包时,您将关联该软件包 具有特定的 Dev Hub 组织。当您准备好定义和创建包时 生产使用,请务必在 生产组织。

  • 作为所有已解锁软件包的所有者
  • 如果要创建命名空间的未锁定包,请链接命名空间
  • 授权并运行命令sf package

命名空间 Org

如果使用的是命名空间,则需要命名空间组织来获取包 命名空间。如果要严格使用命名空间进行测试,请选择 Disposable 命名空间。

创建命名空间组织并在其中指定命名空间后,打开 Dev Hub 组织,并将命名空间组织链接到 Dev Hub 组织。

其他组织

使用包时,还可以使用以下组织:

  • 您可以即时创建临时组织,以便在测试软件包时使用。
  • 目标组织或安装组织是安装包的位置。

创建与组织相关的未锁定包

依赖于组织的解锁包是解锁包的变体,允许您 在计划安装 软件包(安装组织)。

所需的用户权限
要创建包,请执行以下操作:创建和更新第二代程序包

解开生产组织元数据可能是一个艰巨的项目。但现在你有了一个解决方案 这使您能够在不完全考虑所有元数据依赖项的情况下打包元数据: 依赖于组织的解锁包。使用与组织相关的解锁包时,元数据 验证在包安装期间进行,而不是在包版本创建期间进行。

长期和大型生产组织通常会积累大量元数据,这些元数据是 采用基于包的应用程序生命周期管理 (ALM) 时难以模块化 方法。相反,您可以将依赖于未打包元数据的元数据打包到 安装组织。

注意

依赖于组织的解锁包是解锁包的变体,而不是单独的 封装类型。它们遵循相同的软件包开发步骤,并使用 支持的元数据类型与解锁相同 包。要创建依赖于组织的解锁软件包,请指定依赖于组织的 CLI 参数 命令。

sf package create

sf package create -t Unlocked -r force-app -n MyPackage --org-dependent
场景解锁套餐Org Dependent Unlocked 软件包
一次构建,随处安装是的不。这些软件包专为特定的生产和沙盒组织而设计。您可以 仅将它们安装在包含包所依赖的元数据的组织中。
依赖项验证在包版本创建期间发生在软件包安装过程中发生
可以依赖其他软件包是的
需要解析依赖项才能创建包是的
支持的元数据类型请参阅元数据覆盖率报告的已解锁打包通道。请参阅元数据覆盖率报告的已解锁打包通道。
推荐的开发和测试环境使用 scratch 组织来开发和测试未锁定的软件包。使用包含依赖元数据的沙盒。请考虑在沙盒中启用源跟踪,以便 开发与组织相关的解锁包。然后,在沙盒组织中测试包 将其安装在您的生产组织中。
代码覆盖率要求在升级和发布未锁定的软件包之前,Apex 代码必须满足 最低 75% 的代码覆盖率要求。我们不计算代码覆盖率,但我们建议您确保 Apex 代码 您的包裹经过了良好的测试。

要查看哪些软件包是与组织相关的解锁软件包,请使用 .sf package list –verbose

解锁包的工作流

您可以直接从 Salesforce 命令创建和安装未锁定的软件包 线。

在开始之前,请查看并完成创建解锁包之前中的步骤 此工作流。

基本工作流包括以下步骤。有关每个主题的详细信息,请参阅特定主题 步。

  1. 创建 DX 项目。sf project generate --output-dir expense-manager-workspace --name expenser-app
  2. 授权 Dev Hub 组织,并创建临时 组织。sf org login web --set-default-dev-hub什么时候 执行此步骤时,请包含该选项。然后,可以省略 Dev Hub username(在运行后续 Salesforce CLI 命令时)。—set-default-dev-hub提示如果您为与您合作的每个组织定义一个别名,则很容易在两者之间切换 来自命令行的不同组织。您可以授权不同的组织 循环访问包开发周期。
  3. 创建一个临时组织并开发软件包。可以使用 VS Code 和安装程序 UI 在 Scratch 组织中构建和检索要包含在 包。导航到 expenser-app 目录,然后运行此 命令。sf org create scratch --definition-file config/project-scratch-def.json --target-org MyScratchOrg1
  4. 验证所有包组件是否都位于要删除的项目目录中 创建包。
  5. 从 Salesforce DX 项目目录中,创建包。sf package create --name "Expense Manager" --path force-app --package-type Unlocked
  6. 查看 sfdx-project.json 文件。CLI 自动 更新项目文件以包含包目录,并创建基于 在包名称上。{ "packageDirectories": [ { "path": "force-app", "default": true, "package": "Expense Manager", "versionName": "ver 0.1", "versionNumber": "0.1.0.NEXT" } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "51.0", "packageAliases": { "Expense Manager": "0Hoxxx" } }请注意 和 的占位符值。versionNameversionNumber指定所需的功能和组织设置 对于使用外部的包中的元数据 .JSON 文件,例如临时组织定义文件。您可以在命令中指定使用标志,或列出 sfdx-project.json 文件中的定义文件。请参见: 已解锁包的项目配置文件–definition-filesf package version create
  7. 创建包版本。此示例假定包元数据位于 force-app 目录中。sf package version create --package "Expense Manager" --installation-key test1234 --wait 10
  8. 在临时组织中安装并测试软件包版本。使用不同的临时组织 从您在步骤中使用的那个 三。sf package install --package "Expense Manager@0.1.0-1" --target-org MyTestOrg1 --installation-key test1234 --wait 10 --publish-wait 10
  9. 安装软件包后,打开 scratch 组织以查看 包。sf org open --target-org MyTestOrg1

程序包版本是 beta 版,直到将其提升为托管发布状态。请参阅:释放已解锁的软件包。

配置未锁定的软件包

在 sfdx-project.json 文件中为每个 package 来指定其别名、版本详细信息、依赖项、功能和组织设置。 在命令行中,您还可以设置或更改选项,例如指定 安装密钥、更新软件包名称或添加说明。

  • 已解锁包
    的项目配置文件 项目配置文件是项目的蓝图。文件中的设置将创建包的轮廓,并确定包属性和包内容。
  • 解锁的打包关键字 关键字
    是一个变量,可用于指定包版本号。
  • 包安装密钥 若要确保包中元数据的安全性,必须在创建包版本时指定安装密钥
    。包创建者向授权订阅者提供密钥,以便他们可以安装包。软件包安装程序在安装过程中提供密钥,无论是从 CLI 还是从浏览器安装软件包。安装密钥是安装过程中的第一步。该密钥可确保在提供正确的安装密钥之前不会泄露任何软件包信息,例如名称或组件。
  • 从未锁定的包
    中提取依赖项信息 对于已安装的未锁定包,现在可以运行简单的 SOQL 查询来提取其依赖项信息。您还可以创建一个脚本来自动安装具有依赖项的未锁定包。
  • 了解命名空间 命名空间
    是一个 1-15 个字符的字母数字标识符,用于将包及其内容与组织中的其他包区分开来。
  • 共享发行说明和安装后说明
    与用户共享有关已发布的解锁包中的新增功能和更改的详细信息。
  • 为 Apex 测试指定未打包的元数据或 Apex 访问权限(未锁定的包)
  • 解锁包的最佳实践 我们建议您在使用解锁包
    时遵循这些最佳实践。
  • 已解锁包的包
    ID 和别名 在包生命周期中,包和包版本由 ID 或包别名标识。当您创建软件包或软件包版本时,Salesforce CLI 会根据软件包名称创建软件包别名,并将该名称存储在 sfdx-project.json 文件中。运行 CLI 命令或编写脚本以自动执行打包工作流时,通常更容易引用包别名,而不是包 ID 或包版本 ID。
  • 常用的解锁打包操作

解锁包的项目配置文件

项目配置文件是项目的蓝图。中的设置 文件创建包的大纲并确定包属性和包 内容。

以下是可以在项目配置文件中指定的参数。

名字必填?如果未指定,则为默认值
apexTestAccess没有。在上下文中向用户分配权限集和权限集许可证 当您的 Apex 测试在软件包版本上运行时 创造。"apexTestAccess": { "permissionSets": [ "Permission_Set_1", "Permission_Set_2" ], "permissionSetLicenses": [ "SalesConsoleUser" ] }请参阅为 Apex 测试指定未打包的元数据或 Apex 访问权限(未锁定的包)
分支没有。如果你的包有一个关联的分支,但你的包依赖项是 与其他分支关联,请使用此格式。"dependencies": [ { "package": "pkgB", "versionNumber": "1.3.0.LATEST", "branch": "featureC" } ]如果您的软件包具有关联的分支,但您的 包依赖项没有关联的分支,请使用此 格式。"dependencies": [ { "package": "pkgB", "versionNumber": "1.3.0.LATEST", "branch": "" } ]请参阅在解锁的包装中使用分支
违约是,如果指定了多个包目录真指示默认包目录。使用命令从中复制元数据 您的 Scratch 组织复制到您的默认软件包目录。sf project retrieve只能有一个 package 目录,其中默认值设置为 true。
definitionFile没有。对用于指定 包元数据所需的功能和组织设置,例如 Scratch 组织 定义。例:"definitionFile": "config/project-scratch-def.json",
依赖没有。指定对其他包的依赖关系。指定依赖关系 同一 Dev Hub 中的未锁定包,请使用包版本别名或 包名称和版本的组合 数。"dependencies": [ { "package": "MyPackageName@0.1.0.1" } ]"dependencies": [ { "package": "MyPackageName", "versionNumber": "0.1.0.LATEST" } ]指定 Dev 外部解锁包的依赖项 集线器使用:"dependencies": [ { "package": "OtherOrgPackage@1.2.0" } ]注意您可以使用 LATEST 关键字来设置版本号 依赖项。使用包 ID 而不是包来表示依赖项 别名,使用:如果指定包 ID,则为 ID 以及版本号0Ho如果仅指定 包版本 ID04t如果包具有多个依赖项,请提供逗号分隔 按安装顺序排列的软件包列表。例如,如果一个包依赖于 软件包 Expense Manager – Util,这又取决于软件包 External Apex 库,包依赖项为:"dependencies": [ { "package" : "External Apex Library - 1.0.0.4" }, { "package": "Expense Manager - Util", "versionNumber": "4.7.0.LATEST" } ]请参见: 从解锁的包中提取依赖项信息
includeProfileUserLicenses假。设置此参数可确保保留与未锁定软件包中的配置文件关联的用户许可证 在包版本创建期间。默认情况下,解锁的软件包会删除配置文件 与打包的元数据无关的信息。true"packageDirectories": [ { "package": "PackageA", "path": "common", "versionName": "ver 0.1", "versionNumber": "0.1.0.NEXT", "default": false, "includeProfileUserLicenses": true } ]
命名空间没有。一个 1-15 个字符的字母数字标识符,用于区分您的包 及其内容来自其他开发人员的软件包。
是的项目 json 文件中指定的包名称。
package别名是的Salesforce CLI 在您创建包时使用别名更新项目文件,或者 包版本。您还可以手动更新现有包的此部分,或者 包版本。运行时,可以使用别名而不是神秘的包 ID CLI 命令。sf package
路径是的如果您未指定路径,Salesforce CLI 会在您创建 包。
postInstallUrl没有。订阅者安装后说明的 URL。
releaseNotesUrl没有。发行说明的 URL。
seed元数据没有。指定 seedMetadata 目录的路径。种子元数据仅适用于标准值集。如果您的包裹依赖于 标准值集,您可以指定包含 值集。例:"packageDirectories": [ { "seedMetadata": { "path": "my-unpackaged-seed-directory" } }, ]
unpackaged元数据没有。请参阅为 Apex 测试指定未打包的元数据或 Apex 访问权限(未锁定的包)
版本说明没有。
版本名称如果未指定,CLI 将使用 versionNumber 作为版本 名字。
版本编号是的没有。版本号的格式为 major.minor.patch.build。例如 1.2.1.8.自动将内部版本号递增到下一个可用内部版本 对于软件包,请使用关键字 NEXT (1.2.1.NEXT)。

当您使用 Salesforce CLI 指定参数时,它会覆盖该值 在项目定义文件中列出。

Salesforce DX 项目定义文件是位于 您的项目。使用 CLI 命令可以 生成可基于此进行构建的项目文件。以下是参数的显示方式。sf project generatepackageDirectories

{
   "namespace": "",
   "sfdcLoginUrl": "https://login.salesforce.com",
   "sourceApiVersion": "47.0",
   "packageDirectories": [
      {
         "path": "util",
         "default": true,
         "package": "Expense Manager - Util",
         "versionName": "Winter ‘20",
         "versionDescription": "Welcome to Winter 2020 Release of Expense Manager Util Package",
         "versionNumber": "4.7.0.NEXT",
         "definitionFile": "config/scratch-org-def.json"
      },
      {
         "path": "exp-core",
         "default": false,
         "package": "Expense Manager",
         "versionName": "v 3.2",
         "versionDescription": "Winter 2020 Release",
         "versionNumber": "3.2.0.NEXT", 
         "postInstallUrl": "https://expenser.com/post-install-instructions.html",
         "releaseNotesUrl": "https://expenser.com/winter-2020-release-notes.html",
         "definitionFile": "config/scratch-org-def.json",
         "dependencies": [
            {
               "package": "Expense Manager - Util",
               "versionNumber": "4.7.0.LATEST"

            },
            {
               "package" : "External Apex Library - 1.0.0.4"
            }
         ]
      }
   ],
   "packageAliases": {
      "Expense Manager - Util": "0HoB00000004CFpKAM",
      "External Apex Library@1.0.0.4": "04tB0000000IB1EIAW",
      "Expense Manager": "0HoB00000004CFuKAM"}
}

如果我不想自动更新我的 Salesforce DX 项目怎么办?

在某些情况下,您不希望自动更新 sfdx-project.json 文件。当您需要更多控制时,请使用这些 环境变量,用于禁止对项目文件进行自动更新。

对于此命令将此环境变量设置为 true
SF 包创建SFDX_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_CREATE
SF 包版本创建SFDX_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_VERSION_CREATE

解锁的包装关键字

关键字是可用于指定包版本的变量 数。

您可以使用关键字自动递增软件包内部版本号的值, 祖先版本号,将包依赖项设置为最新版本或最新 发布和推广版本。

使用关键字
LATEST 在创建 包版本。"dependencies": [ { "package": "MyPackageName", "versionNumber": "0.1.0.LATEST" } ]
NEXT 将内部版本号递增到下一个可用于包版本的版本号。如果 您不使用 NEXT,并且您也忘记更新版本号 在 sfdx-project.json 文件中,新的包版本使用相同的 number 作为以前的包版本。虽然我们不强制要求包的唯一性 版本号,每个包版本都分配有唯一的订阅者包版本 ID (以 04t 开头)。"versionNumber": "1.2.0.NEXT"
RELEASED 指定包依赖项的最新提升和发布版本 创建包版本时。"dependencies": [ { "package": "pkgB", "versionNumber": "2.1.0.RELEASED" } ]
HIGHEST 自动将包祖先设置为最高提升和发布 软件包版本号。仅与祖先版本或祖先 ID 一起使用。"packageDirectories": [ { "path": "util", "package": "Expense Manager - Util", "versionNumber": "4.7.0.NEXT", "ancestorVersion": HIGHEST },
上级版本或上级 ID 字段中为 NONE。Ancestry定义软件包升级 路径。如果包祖先设置为 NONE,则现有客户无法升级到该祖先 包版本。"packageDirectories": [ { "path": "util", "package": "Expense Manager - Util", "versionNumber": "4.7.0.NEXT", "ancestorVersion": NONE },

软件包安装密钥

若要确保包中元数据的安全性,必须指定 创建软件包版本时的安装密钥。包创建者向授权提供密钥 订阅者,以便他们可以安装包。软件包安装程序在以下期间提供密钥 安装,无论是从 CLI 还是从浏览器安装包。安装密钥 是安装过程中的第一步。该密钥确保没有包信息,例如 名称或组件,在提供正确的安装密钥之前会泄露。若要设置安装密钥,请在创建软件包版本时将参数添加到命令中。此命令创建包 并通过安装来保护它 钥匙。

–installation-key

sf package version create --package "Expense Manager" --installation-key "JSB7s8vXU93fI"

在目标组织中安装软件包版本时提供安装密钥。

sf package install --package "Expense Manager" --installation-key "JSB7s8vXU93fI”

更改现有软件包版本的安装密钥

您可以使用以下命令更改现有软件包版本的安装密钥。sf package version update

sfd package version update --package "Expense Manager@1.2.0-4" --installation-key “HIF83kS8kS7C”

创建不带安装密钥的包版本

如果不需要安全措施来保护包元数据,则可以创建一个 没有安装密钥的软件包版本。

sf package version create --package "Expense Manager" --directory common \
--tag 'Release 1.0.0' --installation-key-bypass

检查包版本是否需要安装密钥

要确定软件包版本是否需要安装密钥,请使用 或 CLI 命令。sf package version listsf package version report

从解锁的包中提取依赖项信息

对于已安装的未锁定包,您现在可以运行简单的 SOQL 查询来提取其 依赖项信息。您还可以创建一个脚本来自动安装 具有依赖项的解锁包。

SubscriberPackageVersion 工具 API 对象现在提供依赖项信息。 使用 SubscriberPackageVersion 上的 SOQL 查询,可以标识 解锁的包有一个依赖项。您可以获取 (04t) ID 和正确的 这些软件包的安装顺序。

包 B 依赖于包 A,包 D 依赖于包 B 和 C。 下面是你指定的示例 sfdx-project.json 创建包版本时。包 D 依赖项标记为包 A、B 和 C.

{
    "packageDirectories": [
        {
            "path": "pkg-a-workspace",
            "package": "pkgA",
            "versionName": "ver 4.9",
            "versionNumber": "4.9.0.NEXT",
            "default": true
        },
        {
            "path": "pkg-b-workspace",
            "package": "pkgB",
            "versionName": "ver 3.17",
            "versionNumber": "3.17.0.NEXT",
            "default": false,
            "dependencies": [
                {
                    "package": "pkgA",
                    "versionNumber": "3.3.0.LATEST"
                }
            ]
        },
        {
            "path": "pkg-c-workspace",
            "package": "pkgC",
            "versionName": "ver 2.1",
            "versionNumber": "2.1.0.NEXT",
            "default": false
        },
        {
            "path": "pkg-d-workspace",
            "package": "pkgD",
            "versionName": "ver 1.1",
            "versionNumber": "1.1.0.NEXT",
            "default": false,
            "dependencies": [
                {
                    "package": "pkgA",
                    "versionNumber": "3.3.0.LATEST"
                },
                {
                    "package": "pkgB",
                    "versionNumber": "3.12.0.LATEST"
                },
                {
                    "package": "pkgC",
                    "versionNumber": "2.1.0.LATEST"
                }
            ]
        }
    ],
    "namespace": "",
    "sfdcLoginUrl": "https://login.salesforce.com",
    "sourceApiVersion": "44.0",
    "packageAliases": {
        "pkgA": "0HoB00000008Oq6KAE",
        "pkgB": "0HoB00000008OqBKAU",
        "pkgC": "0HoB00000008OqGKAU",
        "pkgD": "0HoB00000008OqGKAQ"
    }
}

在安装 pkgD(ID = 04txx000000082hAAA)之前,请使用此 SOQL 查询 确定其依赖关系。用户名通常是目标订阅者组织,其中 解锁的包裹是 安装。

sf data query -u {USERNAME} -t 
   -q "SELECT Dependencies FROM SubscriberPackageVersion 
       WHERE Id='04txx000000082hAAA'" --json

运行时会看到此输出 查询,其中 pkgA、pkgB 和 pkgC 的 (04t) ID 次序。

"Dependencies":{"Ids":[
   {"subscriberPackageVersionId":"04txx000000080vAAA"},
   {"subscriberPackageVersionId":"04txx000000082XAAQ"},
   {"subscriberPackageVersionId":"04txx0000000AiGAAU"}]}

了解命名空间

命名空间是一个 1-15 个字符的字母数字标识符,用于区分包 以及组织中其他包中的内容。

指定包命名空间时,添加到包中的每个组件都具有该命名空间 作为组件 API 名称的前缀。假设您有一个名为 Insurance_Agent 的自定义对象 替换为 API 名称。如果添加此 组件添加到与 Acme 命名空间关联的包中,则 API 名称将变为 . Insurance_Agent__cAcme__Insurance_Agent__c

您可以选择创建具有或不具有特定命名空间的解锁包。命名空间 在创建包时分配给包,并且无法更改。

在以下情况下使用无命名空间包在以下情况下使用命名空间包
您希望将元数据从组织的未打包元数据整体迁移到 解锁的包裹。通过创建无命名空间包,可以更好地控制 组织和分发应用程序的各个部分。您不熟悉包装,并且分几个阶段采用包装。使用 命名空间前缀(如 Acme__)可以帮助您识别已打包的内容和仍保留的内容 生产组织中未打包的元数据
您希望保留以前未打包的元数据的 API 名称 元素。您有多个开发团队。命名空间可以确保 API 名称 不要与其他团队发生冲突。通常,使用单个命名空间是 更简单,您可以轻松地在共享 命名空间。

重要

创建命名空间时,请使用有用且信息丰富的内容 用户。但是,不要以人的名字命名命名空间(例如,通过使用人名, 昵称或私人信息)。

使用命名空间时,请牢记以下注意事项。

  • 您可以使用相同的命名空间开发多个解锁包,但您可以 仅将每个包与单个命名空间相关联。
  • 如果您使用多个命名空间,我们建议您为 每个命名空间。
  • 创建并注册命名空间
    使用解锁的包,您可以与多个包共享单个命名空间。由于如果包共享相同的命名空间,则代码共享要容易得多,因此,如果使用 namepaces,建议对命名空间已解锁的包使用单个命名空间。
  • 避免命名空间冲突
    命名空间会影响您可以在组织中安装的软件包类型的组合。
  • 未锁定包
    中 Apex 类的基于命名空间的可见性 使包中的公共 Apex 可供使用相同命名空间的其他包使用。如果没有此注释,则解锁包中定义的 Apex 类、方法、接口和属性将无法被与其共享命名空间的其他包访问。声明为全局的 Apex 在所有命名空间中始终可用,并且不需要注释。@namespaceAccessible

创建并注册命名空间

使用解锁的包,您可以与多个包共享单个命名空间。因为 如果包共享相同的命名空间,则代码共享会容易得多,我们建议在 使用 Namepaces,您可以对命名空间的未锁定包使用单个命名空间。要创建命名空间,请执行以下操作:

  1. 注册新的 Developer Edition 组织。
  2. 在“设置”中,输入“快速查找”框,然后选择“包管理器”。Package Manager
  3. 在“命名空间设置”中,单击“编辑”。
  4. 输入命名空间,然后选择“检查可用性”。
  5. (可选)选择要与此命名空间关联的包,或选择“无”,然后单击“查看”。
  6. 查看您的选择,然后单击“保存”。

要注册命名空间,请执行以下操作:

  1. 若要将创建的命名空间与开发人员中心链接,请使用命名空间注册表。请参阅链接 a 命名空间添加到 Dev Hub 中了解详细信息。
  2. 在 sfdx-project.json 文件中,使用 namespace 属性。当您创建新的未锁定包时,该包是关联的 替换为 sfdx-project.json 文件中指定的命名空间。

避免命名空间冲突

命名空间会影响可以在 组织。

若要了解命名空间如何影响包的类型,可以在命名空间或 no-namespace org,请查看此表。

安装组织无命名空间解锁包命名空间解锁包第二代托管软件包 (2GP)第一代托管软件包 (1GP)
具有命名空间的组织例如,1GP 打包组织、1GP 补丁组织、 具有命名空间的 Developer Edition 组织,或具有命名空间的临时组织失败。您无法在具有 命名空间。通过。如果解锁包的命名空间与 org,您可以安装一个或多个软件包。通过。如果 2GP 的命名空间与组织的命名空间不同,则可以 安装一个或多个软件包。通过。如果 1GP 的命名空间与组织的命名空间不同,则可以 安装一个或多个软件包。失败。如果 1GP 的命名空间与 组织的命名空间,则无法将 1GP 安装到组织中。
没有命名空间的组织通过。可以安装一个或多个无命名空间解锁的包。通过。可以安装一个或多个命名空间的未锁定包。通过。可以安装一个或多个 2GP 软件包。通过。可以安装一个或多个 1GP 软件包。

了解命名空间如何影响可安装到一个包中的组合 org,请查看此表。

命名空间和包类型命名空间为 Y 的解锁包命名空间为 Y 的第二代托管包 (2GP)具有命名空间 Y 的第一代托管包 (1GP)
命名空间为 X 的第一代托管包 (1GP)通过。如果 1GP 和解锁包使用唯一的命名空间,则可以将它们安装在 同一个组织。通过。如果 1GP 和 2GP 使用唯一的命名空间,则可以将它们安装在同一个命名空间中 组织。通过。如果每个 1GP 都使用唯一的命名空间,则可以在 同一个组织。
命名空间为 Y 的第一代托管包 (1GP)失败。如果 1GP 和解锁包共享命名空间,则无法将它们安装在 同一个组织。失败。如果 1GP 和 2GP 共享一个命名空间,则不能将它们安装在同一个命名空间中 组织。失败。如果 1GP 包共享一个命名空间,则不能将它们安装在同一个命名空间中 组织。
命名空间为 X 的第二代托管包 (2GP)通过。您可以在同一组织中安装 2GP 和命名空间的解锁包。这 包可以共享命名空间或使用唯一的命名空间。通过。您可以安装多个具有唯一命名空间的 2GP 包,也可以安装相同的 命名空间。通过。如果 1GP 包使用唯一的命名空间,则可以安装多个 1GP 同一组织中的包。
命名空间为 Y 的第二代托管包 (2GP)通过。您可以在同一组织中安装 2GP 和命名空间的解锁包。这 包可以共享命名空间或使用唯一的命名空间。通过。您可以在同一个 组织。失败。如果 1GP 和 2GP 共享一个命名空间,则不能将它们安装在同一个命名空间中 组织。

解锁包中 Apex 类的基于命名空间的可见性

在 包可用于使用相同命名空间的其他包。如果没有此注解,Apex 无法访问未锁定包中定义的类、方法、接口和属性 与它们共享命名空间的其他包。声明为全局的 Apex 始终是 适用于所有命名空间,无需注释。

@namespaceAccessible

跨软件包的 Apex 可访问性的注意事项

  • 软件包外部的 Lightning 组件可以访问已安装的公共 Apex 方法 来自无命名空间解锁的包。该组件可以从另一个组件安装 包或在组织中创建。为了访问 Apex 方法,解锁了无命名空间 包的处理方式与非托管包相同。
  • 不能将注释用于 Apex 方法。@namespaceAccessible@AuraEnabled
  • 您可以随时添加或删除注释,即使在托管和发布的 Apex 代码上也是如此。确保你没有 在添加或 删除它。@namespaceAccessible
  • 在软件包中添加或删除 Apex 时,请考虑对安装了其他版本的用户的影响 引用此包注释的包。在推送软件包升级之前, 确保没有用户正在运行无法完全编译的包版本,当 已推送升级。@namespaceAccessible

此示例显示一个标有批注的 Apex 类。该类是可访问的 添加到同一命名空间中的其他包。第一个构造函数在 命名空间,但第二个构造函数不是。

@namespaceAccessible

// A namespace-visible Apex class
@namespaceAccessible
public class MyClass {
    private Boolean bypassFLS;

    // A namespace-visible constructor that only allows secure use
    @namespaceAccessible
    public MyClass() {
        bypassFLS = false;
    }

    // A package private constructor that allows use in trusted contexts,
    // but only internal to the package
    public MyClass (Boolean bypassFLS) {
        this.bypassFLS = bypassFLS;
    }
    @namespaceAccessible
    protected Boolean getBypassFLS() {
       return bypassFLS;
    }
}

共享发行说明和安装后说明

与您的共享有关已发布的解锁包中的新增功能和更改的详细信息 用户。

与用户共享有关已解锁包中的新增功能和更改的详细信息。您可以 指定要在用户组织的软件包详细信息页面上显示的发行说明 URL。还有你 可以通过指定安装后 URL 来共享有关使用包的说明。发布 注释和安装后 URL 显示在安装程序的“已安装的软件包”页上,之后 软件包安装成功。对于使用安装 URL 安装软件包的用户, “包安装程序”页显示指向发行说明的链接。用户被重定向到您的帖子 在成功安装或升级软件包后安装 URL。在 和 部分中指定 和 属性 包。

postInstallUrlreleaseNotesUrlpackageDirectories

"packageDirectories": [
      {
         "path": "expenser-schema",
         "default": true,
         "package": "Expense Schema",
         "versionName": ""ver 0.3.2"",
         "versionNumber": "0.3.2.NEXT",
         "postInstallUrl": "https://expenser.com/post-install-instructions.html",
         "releaseNotesUrl": "https://expenser.com/winter-2020-release-notes.html"
        },
        ],
       {
         "namespace": "",
         "sfdcLoginUrl": "https://login.salesforce.com",
         "sourceApiVersion": "47.0",
         "packageAliases": {
             "Expenser Schema": "0HoB00000004CzHKAU",
             "Expenser Schema@0.1.0-1": "04tB0000000719qIAA"
      }
}

您还可以将 和 Salesforce CLI 参数与命令一起使用。CLI 参数覆盖 sfdx-project.json 文件中指定的 URL。–post-install-url–release-notes-urlsf package version create

为 Apex 测试指定未打包的元数据或 Apex 访问权限(未锁定的包)

为包版本创建测试指定未打包的元数据

指定 sfdx-project.json 文件中未打包元数据的路径。

在此示例中,my-unpackaged-directory 中的元数据可用于 测试在TV_unl包的包版本创建期间运行。

"packageDirectories": [
    {
        "path": "force-app",
        "package": "TV_unl", 
        "versionName": "ver 0.1",
        "versionNumber": "0.1.0.NEXT",
        "default": true, 
        "unpackagedMetadata": {
            "path": "my-unpackaged-directory"
        }
    }, 
]

该属性用于元数据 那不是你包裹的一部分。不能在两个未打包的元数据中包含相同的元数据 目录和打包的目录。unpackagedMetadata

管理包版本创建测试的 Apex 访问权限

有时,您编写的 Apex 测试要求用户具有某些权限集或 权限集许可证。使用该设置可以 将权限集和权限集许可证分配给 Apex 在其上下文中测试的用户 Get 在创建包版本时运行。apexTestAccess

"packageDirectories": [
    {
        "path": "force-app",
        "package": "TV_unl", 
        "versionName": "ver 0.1",
        "versionNumber": "0.1.0.NEXT",
        "default": true, 
        "unpackagedMetadata": {
            "path": "my-unpackaged-directory"
        },
        "apexTestAccess": {
               "permissionSets": [
                   "Permission_Set_1",
                   "Permission_Set_2"
               ],
               "permissionSetLicenses": [
                   "SalesConsoleUser"
               ]
           }

    }, 
]

注意

若要分配用户许可证,请使用 runAs 方法。用户 无法在 sfdx-project.json 文件中分配许可证。

解锁包的最佳实践

我们建议您在使用解锁的软件包时遵循这些最佳实践。

  • 建议仅使用一个开发人员中心,并在生产中启用开发人员中心 组织。
  • 运行命令的开发人员中心组织将成为包的所有者。如果 Dev Hub 组织与 包过期或被删除,其包将不再起作用。sf package create
  • 在决定如何利用命名空间时要小心。对于大多数客户,我们建议工作 没有命名空间或单个命名空间,以避免管理组件时不必要的复杂性。 如果要测试未锁定的包,请使用测试命名空间。仅在以下情况下使用实际命名空间 您已准备好踏上在生产环境中发布的开发道路 组织。注意您无法将无命名空间、未锁定的软件包安装到任何具有命名空间的组织中 (例如,具有命名空间的临时组织)。
  • 在使用 和 命令时包括该选项。此选项可帮助您保持版本控制 系统标记与特定软件包版本同步。–tagsf package version createsf package version update
  • 为打包 ID 创建用户友好的别名,并将这些别名包含在 Salesforce 中 DX 项目文件和运行 CLI 打包命令时。请参阅:已解锁包的包 ID 和别名。

已解锁包的包 ID 和别名

在包生命周期中,包和包版本由 ID 或 软件包别名。当您创建包或包版本时,Salesforce CLI 会创建一个包 别名,并将该名称存储在 sfdx-project.json 文件中。当您运行 CLI 命令或编写脚本时 自动化打包工作流,通常更容易引用包别名,而不是 程序包 ID 或程序包版本 ID。

包别名以名称-值的形式存储在 sfdx-project.json 文件中 对,其中名称是别名,值是 ID。您可以修改软件包别名 对于项目文件中的现有包和包版本。

在命令行中,您还可以看到包成员(一个组件 package)和请求(类似于请求)。sf package version create

注意

作为快捷方式,文档有时会通过其三个字符的前缀来引用 ID。 例如,软件包版本 ID 始终以 开头。04t

以下是最常用的 ID。

ID 示例短 ID 名称描述
033J0000dAb27uxVRE订阅者程序包 ID联系 Salesforce 以获得打包或安全审查支持时,请使用此 ID。自 找到包的此 ID,针对拥有该包的开发人员中心运行。sf package list –verbose
04t6A0000004eytQAA订阅者包版本 ID使用此 ID 安装包版本。返回者 。sf package version create
0Hoxx00000000CqCAI程序包 ID在命令行上使用此 ID 创建包版本。或者将其输入到 sfdx-project.json 文件中并使用目录名称。生成者 。sf package create
08cxx00000000BEAAY版本创建请求 ID使用此 ID 可查看状态并监视特定请求的进度,以创建 软件包版本,例如sf package version create report

常用的解锁打包操作

有关 Salesforce CLI 打包命令的完整列表,请参阅: Salesforce 命令 线路参考指南。

Salesforce CLI 命令功效
sf package create创建包。创建包时,请指定其包类型和 名称等。
sf package version create创建包版本。
sf package install在临时组织、沙盒组织或生产组织中安装软件包版本。
sf package uninstall删除已安装在组织中的软件包。此过程将删除 元数据和与包关联的数据。
sf package version promote将包版本的状态从 beta 更改为托管版本 州。
sf org create scratch创建临时组织。
sf org open在浏览器中打开组织。

我们如何处理解锁包中的配置文件设置

当您将配置文件打包到未锁定或第二代托管中时 package,构建系统会在创建包期间检查配置文件的内容,并且 仅保留与包中的元数据直接相关的配置文件设置。这 配置文件本身,以及与包元数据无关的任何配置文件设置都将从 包。

在软件包安装期间,保留的配置文件设置仅应用于现有 订阅者组织中的配置文件。配置文件本身未安装在订阅者组织中。

注意

不允许仅包含配置文件而不包含其他元数据的包,并且会失败 在包版本创建期间。

当您选择…打包的配置文件设置应用于…此安装选项可通过以下方式获得:
仅供管理员安装订阅者组织中的系统管理员配置文件。CRUD 访问自定义 对象将自动授予“系统管理”配置文件。软件包安装程序页面Salesforce CLI 命令sf package install基于 CLI 的软件包安装的默认行为是仅为管理员安装。
为所有用户安装系统管理员配置文件和订阅者组织中所有克隆的配置文件。克鲁德 对自定义对象的访问权将自动授予系统管理配置文件,并且 所有克隆的配置文件。标准配置文件不能是 改 性。软件包安装程序页面Salesforce CLI 命令sf package install要通过 CLI 为所有用户安装,请包括安全类型 参数。sf package install –security-type AllUsers
为特定配置文件安装订阅者组织中的特定配置文件。此选择允许安装人员 程序包确定如何将打包的配置文件设置映射到中的特定配置文件 他们的组织。软件包安装程序页面不适用于基于 CLI 的软件包安装。

要测试打包配置文件的行为,请在临时组织中安装包。

  1. 在“设置”中,输入“快速查找”框,然后找到 和 检查在软件包安装过程中选择的配置文件。Profile
  2. 检查您的配置文件设置是否已应用于该配置文件。重复此步骤 对于您希望包含配置文件设置的任何其他配置文件。不要查找个人资料 您创建的名称;我们将配置文件设置应用于订阅者中的现有配置文件 组织。

尽可能使用包权限集,而不是配置文件设置。订阅者 安装包可以轻松地将权限集分配给其用户。

注意

在推送升级期间,一些与 Apex 类和字段级相关的配置文件设置 安全性不会自动分配给系统管理员配置文件。与您的沟通 客户,以确保在推送升级后正确设置用户访问权限。确保你 推送升级后查看并更新您的配置文件设置。

在未锁定的软件包中保留许可证设置

默认情况下,配置文件中的许可证设置在包创建过程中会被删除。要保留这些 settings,指定参数 在 sfdx-project.json 文件中。在此方案中,许可证设置为 保留并应用于订阅者组织中在打包期间选择的配置文件 安装。includeProfileUserLicenses

"packageDirectories": [
    {
        "package": "PackageA",
        "path": "common",
       "versionName": "ver 0.1",
       "versionNumber": "0.1.0.NEXT",
       "default": false,
       includeProfileUserLicenses: true
    }
]

构建和发布应用

编写完代码后,下一步是部署它。我们提供不同的 基于您作为客户、系统集成商或独立机构的角色和需求的部署选项 软件供应商 (ISV) 合作伙伴。

要了解不同开发模型的优势,请查看这些 Trailhead 模块:

  • 确定应用程序生命周期管理模型 适合您
  • 应用程序生命周期和开发模型
  • 软件包开发模型
  • 快速入门: 解锁套餐
  • 解 锁 客户套餐

根据你的采用准备情况,请查看下表,了解建议的选项:

交付应用程序的发布选项

客户和非 ISV 合作伙伴

  • 解锁包解锁的包适用于想要组织元数据的客户 到包中,并将元数据(通过包)部署到不同的组织。注意一 Unlocked Package 提供非托管包的超功能集。 因此,此列表中不包含非托管包。查看更多 信息,请参阅已解锁 包。
  • 通过 Salesforce CLI 更改集或组织开发

ISV 合作伙伴

  • 第二代托管软件包如果你是开发应用并列出应用的 ISV 在 AppExchange 上,Salesforce 建议使用托管软件包。第二代托管 打包(托管 2GP)为 AppExchange 合作伙伴开创了一种新的开发方式, 分发和管理他们的应用和元数据。您可以使用托管的 2GP 来组织 源代码,构建小型模块化软件包,与您的版本控制系统集成,以及 更好地利用您的自定义 Apex 代码。您可以通过以下方式执行所有打包操作 Salesforce CLI,或使用脚本自动执行它们。有关托管的更多信息 2GP 封装,参见第二代 托管打包开发人员指南。
  • 第一代托管软件包与托管 2GP 类似,使用托管 1GP 包 由 ISV 通过 AppExchange 将其业务应用程序分发给客户。如果你是 熟悉第一代托管软件包,并希望详细了解 1GP 如何 与 2GP 不同,请参阅 First- 和 第二代托管包。有关托管 1GP 的更多信息 软件包,请参阅创建第一代托管 使用 Salesforce DX 打包。

还没准备好进行软件包开发?

如果你或你的团队尚未准备好进行包开发,则可以继续使用更改 设置,或尝试使用组织开发模型,在该模型中,您可以使用 Salesforce CLI 部署更改。 有关更多信息,请参阅使用元数据 API 构建和发布您的应用程序

  • 使用元数据 API
    构建和发布应用 在沙盒中开发和测试应用。使用 Salesforce CLI 或 Salesforce Extensions for VS Code 检索和部署源。此开发工作流称为组织开发模型。

使用元数据 API 构建和发布应用

在沙盒中开发和测试应用。使用 Salesforce CLI 或 Salesforce 扩展 让 VS Code 检索和部署源。此开发工作流称为组织 发展模式。

使用组织开发模型在沙盒中进行开发和测试

与更改集类似,发布工件是一组要在 生产组织。您可以使用这些命令开发、测试和部署更改。如果您想了解更多相关信息 开发模型,请参阅 Trailhead 中的组织开发模型模块。project deploy

开发和发布环境

  1. 开发和测试:每个团队成员都有自己的开发人员沙盒 创建他们分配的自定义项。开发人员沙盒不包含生产数据。
  2. 内部版本:每个团队成员都从他们的 将相应的 Developer 沙箱连接到共享的 Developer Pro 沙箱以进行集成。开发人员专业版 沙盒不包含生产数据,但您可以使用测试数据为沙盒设定种子。
  3. 测试版本:对于用户验收测试,团队使用部分沙盒 以创建生产的完整副本。
  4. 释放:在发布投入生产后,团队可以使用完整沙盒来执行以下操作 培训用户,避免更改生产数据的风险。完整沙盒包括 生产数据。

我需要什么工具?

工具描述
Salesforce DX 项目Salesforce DX 项目包含元数据和源文件,这些文件组成 变化。DX 项目具有特定的项目结构和源格式。在 除了源文件之外,该项目还包含一个配置文件 sfdx-project.json。此文件包含项目信息,并启用 您可以利用 Salesforce DX 工具完成许多开发任务。
部署项目测试更改后,创建部署项目,即包含要部署的已更改文件的 .zip 文件。部署发布 首先将工件添加到完整(暂存)沙盒,然后最后添加到生产环境。你可以想 作为入站更改集的部署项目。更改在以下时间之前不会生效 它们已部署。
源代码管理系统所有更改都将合并并存储在源代码管理系统中,该系统包含 Salesforce DX 项目。
Salesforce 命令行界面您可以将 Salesforce CLI 用于组织开发生命周期的每个阶段。它 通过为您的所有开发、测试和 自动化用例。
适用于 VS Code 的 Salesforce 扩展适用于 VS Code 的 Salesforce 扩展基于 Salesforce CLI 和 Visual Studio 构建 法典。它们共同构成了一个集成开发环境,用于在 闪电平台。您可以直接从命令面板运行 Salesforce CLI 命令,或者 终端。
变更管理机制使用正式的更改跟踪在外部捕获更改仍然很重要 工具,例如更改列表、部署运行列表和其他项目管理 工具。

部署 Apex Code 的注意事项

要将 Apex 部署到生产环境,Apex 代码的单元测试必须满足覆盖率要求。 代码覆盖率指示类和触发器中有多少行可执行代码 由您的测试方法涵盖。编写测试方法来测试触发器和类,然后运行 这些测试来生成代码覆盖率信息。如果在启动部署时未指定测试级别,则默认测试执行 行为取决于部署包的内容。

  • 如果您的部署包包含 Apex 类或触发器,则当您部署到 生产中,将执行所有测试,但源自托管包的测试除外。
  • 如果您的包不包含 Apex 代码,则默认情况下不会运行任何测试。

您可以为非 Apex 组件的部署运行测试。您可以覆盖默认测试 通过在部署选项中设置测试级别来执行行为。测试级别为 无论部署包中存在的组件类型如何,都会强制执行。我们建议 在开发环境(如沙盒)中运行所有本地测试之前 部署到生产环境。在开发环境中运行测试可减少 生产部署中所需的测试。

  • 在本地
    开发和测试更改 以源格式开发更改,部署到开发人员沙盒并从中检索。
  • 构建和测试发布项目 在您的团队完成其开发任务
    后,过渡到构建发布阶段,以将您的更改集成到 Developer Pro 沙盒中。然后生成发布项目。
  • 在暂存环境中
    测试发布项目 暂存更改并在完整沙盒中运行回归测试。
  • 将应用发布到生产环境 现在,所有测试都已在完整沙盒中通过,可以部署到生产环境
    了。
  • 取消元数据部署
    您可以从 Salesforce CLI 取消元数据部署,并指定命令完成的等待时间。

在本地开发和测试更改

对源代码格式进行更改,部署到开发人员并从开发人员处检索 沙盒。

这些步骤提供了高级工作流。

  1. 创建源代码管理存储库。
  2. 创建DX项目。
  3. 将 DX 项目文件添加到源代码管理存储库。
  4. 授权开发人员沙盒。
  5. 在开发人员沙盒中执行开发任务。
  6. 从开发人员沙盒中检索更改。如果您有一些更改,您可以 指示以逗号分隔的元数据组件名称列表。如果您有很多更改,则可以 使用清单 (package.xml)。sf project retrieve start --manifest path/to/package.xml
  7. 将更改提交到源代码管理存储库。

下一个:部署团队对 Developer Pro 沙盒所做的所有更改,然后进行测试 这些变化。

生成并测试发布项目

在您的团队完成其开发任务后,过渡到内部版本 阶段,将您的更改集成到 Developer Pro 沙盒中。然后生成版本 人工制品。

下面是工作流中用于创建发布项目的高级步骤。

  1. 从存储库中提取更改,以便本地项目包含团队拥有的所有更改 䍬。
  2. 授权 Developer Pro 沙盒。
  3. 运行 deploy 命令,该命令模拟将部署到生产环境的内容,例如:sf project source deploy --manifest manifest/package.xml --target-org dev-pro-sandbox \ --test-level RunSpecifiedTests --tests TestMyCode
  4. 打开沙盒。
  5. 执行测试。
  6. 如果测试通过,请继续执行部署版本的测试发布阶段 项目添加到部分沙箱中。然后执行用户验收测试。

测试通过后,进入发布阶段,在完整版中执行回归测试 沙盒。

在暂存环境中测试发布项目

暂存更改并在完整模式下运行回归测试 沙盒。

根据集成测试进行所有更改后,下一步 是在完整沙盒中暂存更改。将更改部署到 完整沙盒类似于用于将更改部署到开发人员的过程 专业沙盒。此阶段包括回归测试,并模拟您发布 对生产的更改。

这些步骤提供了高级工作流。

  1. 授权完整沙盒。
  2. (可选)如果您根据 Developer Pro 中的测试进行了任何更改 沙盒中,创建发布工件 (.zip)。如果没有,请使用 现有发布项目。
  3. 要在不将组件保存在目标组织中的情况下验证部署,请运行 所有本地(回归)测试。通过验证,可以验证 将在部署期间执行但不提交任何测试 变化。sf project deploy validate --manifest manifest/package.xml --target-org full-sandbox --test-level RunLocalTests
  4. 在暂存沙盒中测试实际的生产部署步骤。设置 您计划针对生产组织执行的相同快速部署。sf project deploy validate --manifest manifest/package.xml --target-org full-sandbox --test-level RunSpecifiedTests这 命令返回您在快速部署中引用的作业 ID。
  5. 接下来,使用上一个中返回的作业 ID 测试快速部署 步。sf project deploy quick --target-org full-sandbox --job-id jobID

验证部署后,您有 10 天的时间来执行快速部署到 生产。

将应用发布到生产环境

现在,所有测试都已通过完整沙盒,可以部署到 生产。

  1. 在部署运行列表中,完成所有部署前任务。
  2. 授权您的生产组织。
  3. 通过验证部署来设置快速部署。sf project deploy validate --source-dir force-app --target-org prod-org --testlevel RunLocalTests此命令返回您在快速部署中引用的作业 ID。
  4. 运行测试后,验证所有 Apex 测试是否都已通过。确保 测试至少覆盖了 75% 的部署代码。
  5. 运行快速部署:sf project deploy quick --target-org prod-org --job-id jobID
  6. 打开生产组织,然后执行 部署运行列表。

取消元数据部署

您可以从 Salesforce CLI 取消元数据部署,并指定 命令完成。

要取消最近的部署,请运行 。可以通过使用标志指定 想要取消。project deploy cancel –use-most-recent–job-id <JOBID>

sf project deploy cancel --job-id <jobid>

cancel 命令完成并在 终端窗口为 33 分钟。如果命令在等待期结束时未完成, CLI 将终端窗口的控制权交还给您。您可以根据需要调整等待时间 通过指定标志中的分钟数, 如以下示例所示:–wait

sf project deploy cancel --wait 20 --use-most-recent

对已取消部署的状态感到好奇?运行部署报告。

sf project deploy report --use-most-recent

部署

导入一些测试数据后,您就完成了设置项目的过程。 现在,您可以开始开发过程了。

从 CLI 创建源文件

要从 CLI 添加源文件,请确保您在适当的 目录。例如,如果您的软件包目录名为 force-app,请在 force-app/main/default/classes 中创建 Apex 类。您可以根据需要组织源 在每个包目录下,文档、自定义对象和自定义对象除外 翻译。

从 API 版本 45.0 开始,您可以使用两种编程模型构建 Lightning 组件: Lightning Web 组件和 Aura 组件。要组织组件的源文件, 您的 Aura 组件必须位于 aura 目录中。您的闪电网络 组件必须位于 LWC 目录中。

执行以下命令之一。

  • apex generate class
  • apex generate trigger
  • cmdt generate object
  • cmdt generate field
  • cmdt generate record
  • cmdt generate records
  • cmdt generate fromorg
  • lightning generate app
  • lightning generate component
  • lightning generate event
  • lightning generate interface
  • lightning generate test
  • schema generate sobject
  • schema generate field
  • schema generate platformevent
  • schema generate tab
  • static-resource generate
  • visualforce generate component
  • visualforce generate page

许多命令都具有以下两个有用的可选标志:

描述
-d,–output-dir用于保存已创建文件的目录。如果您不指明 一个目录,您的源将添加到当前文件夹中。要添加 source 添加到现有目录,指示绝对或相对 路径。如果您不指示绝对路径或相对路径,并且 目录不存在,Salesforce CLI 会尝试为 你。
-t,–template用于文件创建的模板。

提示

如果您想了解有关命令的详细信息,请使用标志运行该命令。例如。–helpsf apex generate class –help

编辑源文件

使用您喜欢的代码编辑器编辑 Apex 类、Visualforce 页面和 组件、Lightning Web 组件和 Aura 组件。您可以 还可以在组织的设置 UI 中进行编辑,然后用于检索对项目的这些更改。为 组织中已有的 Lightning 页面(FlexiPage 文件),请使用快捷方式 从默认浏览器在临时组织中打开 Lightning App Builder。闪电 页面存储在 flexipages 目录中。project retrieve start

在默认浏览器中编辑 FlexiPage,例如,编辑 Property_Record_Page source – 从 FlexiPages 目录执行此命令。

sf org open --source-file Property_Record_Page.flexipage-meta.xml

如果要生成在 Lightning 应用程序生成器中加载 .flexipage-meta.xml 文件但不启动的 URL 您的浏览器,请使用该标志。–url-only | -r

sf org open --source-file Property_Record_Page.flexipage-meta.xml --url-only
  • 针对任何组织进行开发 针对启用了源跟踪的临时或沙盒组织
    进行开发后,您最终会在非源跟踪组织中测试和验证更改。
  • 分配权限集
    创建临时组织并部署源后,有时必须授予用户访问应用程序的权限,尤其是在应用程序包含自定义对象的情况下。
  • 向组织添加数据的方法 组织
    进行开发需要一小组库存数据进行测试。
  • 创建 Lightning 应用程序和 Aura 组件 您可以使用 Salesforce CLI 在本地 Salesforce DX 项目中创建 Lightning 应用程序和 Aura 组件
    。生成的文件位于项目的包目录中。aura
  • 创建 Lightning Web 组件 您可以使用 Salesforce CLI 在本地 Salesforce DX 项目中创建 Lightning Web 组件
    。生成的文件位于项目包目录中的目录中。lwc
  • 创建 Apex 类 您可以使用 Salesforce CLI 在本地 Salesforce DX 项目中创建 Apex 类
    。生成的类文件位于项目的包目录中。classes
  • 创建 Apex 触发器 使用 Apex 触发器
    在更改 Salesforce 记录之前或之后执行自定义操作,例如插入、更新或删除。您可以使用 Salesforce CLI 在本地 Salesforce DX 项目中创建 Apex 触发器。生成的文件位于项目包目录中的目录中。triggers
  • 创建自定义对象
    您可以使用 Salesforce CLI 为本地 Salesforce DX 项目中的新自定义对象生成元数据文件。
  • 执行匿名 Apex 您可以使用 Salesforce CLI 命令在组织中执行匿名的 Apex
    代码块。apex run
  • 运行 Apex 测试 当您准备好测试对源代码的更改时,您可以在命令行上使用 Salesforce CLI 在组织中运行 Apex 测试
    。您还可以从 Salesforce Extensions for VS Code 或第三方持续集成工具(如 Jenkins 或 CircleCI)中运行 Apex 测试。

针对任何组织进行开发

针对启用了源跟踪的临时或沙盒组织进行开发后,您 最终在非源跟踪组织中测试和验证您的更改。

您可以使用 Salesforce CLI 检索元数据并将其部署到 非源跟踪组织,与检索和部署源(在源中)一样容易 format) 到从头开始组织。如果您不熟悉 Salesforce CLI、Salesforce DX 项目结构和 源文件格式解释了源格式和元数据之间的区别 格式。

使用 ,您可以检索 您需要的元数据以源格式发送到本地文件系统(DX 项目)。当您的更改 已准备好进行测试或生产,您可以使用本地文件直接部署到非源代码跟踪的组织。project retrieve startproject deploy start

不确定支持哪些元数据类型或哪些元数据类型支持通配符?请参阅元数据 API Developer 中的元数据类型 指南。package.xml

准备工作

在开始之前,请不要忘记:

  • 创建包含清单 (package.xml) 的 Salesforce DX 项目。跑。project generate –name mywork MyProject –manifest
  • 授权您的非源跟踪组织。如果连接到沙盒,请先编辑 sfdx-project.json 文件以设置为 https://test.salesforce.com 授权组织。不要忘记为您的创建别名 非源跟踪组织。sfdcLoginUrl

需要在命令行上编码的元数据名称

使用该选项检索或部署元数据时,元数据名称中的逗号需要编码才能正常工作。–metadata

不要: sf project deploy start –metadata “Profile:Standard User” –metadata “Layout:Page,Console”

狐狸 sf project deploy start –metadata “Profile:Standard User” –metadata “Layout:Page%2CConsole”

从非源跟踪组织中检索源

使用命令检索 来自没有源跟踪的组织(例如沙盒或生产组织)的源。 如果您在 VCS 中已有源代码和元数据,则可以跳过此操作 步。如果要重新开始,请检索与该功能关联的元数据。 项目或您正在处理的自定义项。project retrieve start

您可以使用以下方法之一检索源格式的元数据:

  • 指定列出要检索的组件的 package.xml。
  • 指定以逗号分隔的元数据组件名称列表。
  • 指定要检索的源文件路径的逗号分隔列表。您可以使用源 path 选项,当 source 存在于本地时,例如,在完成初始 取回。
  • 指定以逗号分隔的包名称列表。

如果您提供的逗号分隔列表包含空格,请将整个 一组双引号中的逗号分隔列表。

要检索:命令示例
清单中列出的所有元数据组件sf project retrieve start –manifest path/to/package.xml
目录中的源文件sf project retrieve –source-dir path/to/source
特定的 Apex 类和源位于目录中的对象sf project retrieve –source-dir path/to/apex/classes/MyClass.cls –source-dir path/to/source/objects
包含空格的元数据sf project retrieve start –metadata “Profile:Standard User”
所有 Apex 类sf project retrieve –metadata ApexClass
特定的 Apex 类sf project retrieve –metadata ApexClass:MyApexClass
包含逗号的布局名称(布局:页面、控制台)sf project retrieve –metadata “Layout:Page%2C Console”
与一个或多个特定包相关的所有元数据sf project retrieve –metadata –package-name DreamHouse

检索元数据时只能指定一个范围参数:、 或 。如果指明 ,则可以包括一个附加 作用域参数。–metadata–source-dir–manifest–package-name

sf project retrieve start --package-name DreamHouse --manifest manifest/package.xml

将源部署到非源跟踪组织

使用命令部署源 到没有源跟踪的组织,例如沙盒或生产组织。project deploy start

您可以使用以下方法以源格式部署元数据:

  • 指定列出要部署的组件的包 .xml
  • 指定以逗号分隔的元数据组件名称列表
  • 指定要部署的源文件路径的逗号分隔列表

如果您提供的逗号分隔列表包含空格,请将整个 一组双引号中的逗号分隔列表。

要部署,请执行以下操作:命令示例
清单中列出的所有组件sf project deploy start –manifest path/to/package.xml
目录中的源文件sf project deploy start –source-dir path/to/source
特定的 Apex 类和源位于目录中的对象sf project deploy start –source-dir path/to/apex/classes/MyClass.cls –source-dir path/to/source/objects
所有 Apex 类sf project deploy start –metadata ApexClass
特定的 Apex 类sf project deploy start –metadata ApexClass:MyApexClass
所有自定义对象和 Apex 类sf project deploy start –metadata CustomObject –metadata ApexClass
所有 Apex 类和名称中包含空格的配置文件sf project deploy start –metadata ApexClass –metadata “Profile:Content Experience Profile”
一组最近验证的组件,但未运行 Apex 测试(通常 称为快速部署)sf project deploy quick –job-id JOBID您可以在运行测试、传递代码覆盖率后运行此选项 要求,并使用命令执行仅检查部署,该命令返回 作业 ID。project deploy validate
即使部署包含警告sf project deploy start –ignore-warnings
无论部署是否包含错误(不建议在以下情况下) 部署到生产组织)sf project deploy start –ignore-errors

删除未跟踪的来源

使用命令删除 来自没有源跟踪的组织(例如沙盒)的组件。project delete source

如果源本地存在于 DX 项目中,您可以通过指定 源的路径或列出单个元数据组件的路径。如果以逗号分隔的列表 您提供的包含空格,将整个逗号分隔的列表包含在一组 双引号。

要删除:命令示例
目录中的源文件sf project delete source –source-dir path/to/source
特定组件,例如 FlexiPagesf project delete source –metadata FlexiPage:Broker_Record_Page
包含空格的特定组件sf project delete source –metadata “Profile:Content Experience Profile”

是否要保留生成的元数据?

通常,当您运行某些 CLI 命令时,包含所有元数据的临时目录是 创建,然后在成功完成命令后删除。但是,保留这些 由于多种原因,文件可能很有用。您可以调试命令期间出现的问题 执行。运行时可以使用生成的包.xml 后续命令,或作为创建包含所有 您关心的元数据。

要在运行这些命令时将所有元数据保留在指定的目录路径中,请将 SF_MDAPI_TEMP_DIR环境变量:

  • project deploy start
  • project retrieve start
  • project delete source
  • project convert mdapi|source
  • org create scratch(如果您的 Scratch 组织定义 包含临时组织设置,而不是组织首选项)

例:

SF_MDAPI_TEMP_DIR=/users/myName/myDXProject/metadata

分配权限集

在创建临时组织并部署源代码后,有时必须将 用户访问您的应用程序,尤其是在您的应用程序包含自定义对象时。

  1. 如果需要,请在临时组织中创建权限集。
    1. 在浏览器中打开临时组织。sf org open --target-org <scratch org username/alias>
    2. 在“设置”中,在“快速查找”框中输入“Perm”,然后选择“权限集”。
    3. 单击“新建”。
    4. 输入权限集的描述性标签,然后单击“保存”。
    5. 在“应用”下,单击“分配的应用”|”编辑
    6. 在“可用应用”下,选择你的应用,然后点按“添加”以移动它 添加到已启用的应用程序。
    7. 点击保存
  2. 从临时组织检索到项目的权限集。sf project retrieve start --target-org <scratch org username/alias>
  3. 将权限集分配给包含应用的组织中的一个或多个用户:sf org assign permset --name <permset_name> --target-org <username/alias>目标用户名必须具有分配权限集的权限。使用标志将权限集分配给 非管理员用户。–on-behalf-ofsf org assign permset --name <permset_name> --target-org <admin-user> --on-behalf-of <non-admin-user>

您还可以使用该命令将权限集许可证分配给用户。它的工作方式与命令类似。

org assign permsetlicenseorg assign permset

向组织添加数据的方法

开发组织需要一小组库存数据进行测试。

有时,临时组织中的库存数据无法满足您的开发需求。 Apex 测试通常会创建自己的数据。因此,如果 Apex 测试是 只测试您在临时组织运行的测试,您可能不需要担心 关于数据暂时。但是,其他测试(如 UI、API 或 用户验收测试,确实需要基线数据。确保您使用 运行每种类型的测试时一致的数据集。

以下各节介绍了可用于 填充您的组织。您使用的命令取决于您当前阶段的 发展。

您还可以使用 CLI 命令 对组织运行 SOQL 查询。虽然该命令不会更改 组织中的数据,它对于搜索或计算数据很有用。您还可以 将其与其他数据操作命令一起使用。请参阅 SOQL 和 SOSL 参考指南,了解使用这些命令时也适用的一般 SOQL 限制。data query

临时组织的注意事项

Scratch 组织附带的数据集与 他们是基于的。例如,Developer Edition 组织通常 包括 10-15 条关键标准对象的记录,例如 Account、 联系和领导。当您进行测试时,这些记录会派上用场 类似于新触发器、工作流规则、闪电网络之类的东西 组件、Aura 组件或 Visualforce 页面。

数据导出 | 导入树命令

SObject Tree Save API 驱动用于导出和 导入数据。这些命令使用 JSON 文件来描述对象和 关系。该命令需要 SOQL 查询来选择组织中的数据 写入 JSON 文件。而不是加载每个记录的所有记录 键入并建立关系,该命令将加载父项和子项 已经在层次结构中。data export|import treedata exportdata import

注意

这些命令旨在供开发人员使用小型 数据。导出查询最多可以返回 2000 条记录。 要导入的文件最多可以有 200 条记录。

数据删除 | 更新插入批量命令

批量 API 2.0 驱动用于从 组织并将该数据存储在源代码管理中。然后,您可以更新或 直接扩充数据,而不是在数据来源的组织中扩充数据。 这些命令使用 CSV 文件将数据文件导入临时组织或 删除您不想再挂在身边的数据集。使用点 用于建立孩子与父母关系的符号。data delete|upsert bulkdata delete|upsert bulk

数据创建 | 删除 | 获取 record 命令

每个人的流程都是独一无二的,您并不总是需要与 你的队友。当您想要创建、修改或删除时 使用命令快速记录单个记录。无数据文件 是需要的。data create|delete|get record

  • 示例:在组织之间导出和导入数据
    假设您已经创建了一组完美的数据来测试您的应用程序,并且它当前驻留在临时组织中。您在第二个临时组织中完成了新功能的编码,推送了源代码,并分配了所需的权限集。现在,您想用来自其他组织的完美数据集来填充临时组织。 如何?请继续阅读!

示例:在组织之间导出和导入数据

假设您已经创建了一组完美的数据来测试您的应用程序,并且它 当前驻留在临时组织中。您在第二个临时组织中完成了对新功能的编码, 推送源代码,并分配所需的权限集。现在,您要填充 使用来自其他组织的完美数据集来临时组织。 如何?请继续阅读!

虽然这个例子有点做作,但它对于获得一些实践经验很有用 替换为 data 命令。该示例引用了 Broker 和 Properties 自定义对象 GitHub 上的 Salesforce DreamHouse LWC 应用程序示例。比方说 要从中导出数据的临时组织具有别名 。同样,您想要进入的临时组织 要导入的数据具有别名 。对于临时组织,假设您有 已经:org-with-dataorg-needs-dataorg-with-data

  • 通过部署 DreamHouse 创建了 Broker 和 Properties 自定义对象 源。
  • 已分配权限集。
  • 用数据填充对象。

然而,对于临时组织来说,它是 假定您已经创建了 Broker 和 Properties 对象并分配了权限 设置但尚未用数据填充对象。org-needs-data

有关这些先决条件任务的说明,请参阅 GitHub 存储库中的自述文件。dreamhouse-lwc

  1. “带数据的组织”临时数据中导出数据 组织。使用命令微调 SELECT 查询,以便返回要导出的确切数据集。此命令输出 结果发送到终端或命令窗口,但不会生成任何文件。data query注意由于 SOQL 查询很长,因此示例命令用反斜杠分隔 更容易阅读。您仍然可以将命令复制并粘贴到终端窗口中,然后 运行它。sf data query --target-org org-with-data --query \ "SELECT Id, Name, Title__c, Phone__c, Mobile_Phone__c, \ Email__c, Picture__c, \ (SELECT Name, Address__c, City__c, State__c, Zip__c, \ Price__c, Beds__c, Baths__c, Picture__c, \ Thumbnail__c, Description__c \ FROM Properties__r) \ FROM Broker__c"
  2. 当您对 SELECT 语句感到满意时,请使用它将数据导出到集合中 的 JSON 文件,使用 data export tree 命令。sf data export tree --target-org org-with-data --query \ "SELECT Id, Name, Title__c, Phone__c, Mobile_Phone__c, \ Email__c, Picture__c, \ (SELECT Name, Address__c, City__c, State__c, Zip__c, \ Price__c, Beds__c, Baths__c, Picture__c, \ Thumbnail__c, Description__c \ FROM Properties__r) \ FROM Broker__c" \ --prefix export-demo --output-dir sfdx-out --plan该命令写入 JSON 文件 添加到 sfdx-out 目录和前缀 文件名替换为字符串 。文件 包括计划定义文件,该文件引用包含数据的其他文件, 每个导出的对象(Broker 和 Properties)对应一个对象。data export treeexport-demo
  3. 将数据导入 org-needs-data 暂存 组织,通过指定计划定义文件到数据导入 tree 命令。sf data import tree --target-org org-needs-data \ --plan sfdx-out/export-demo-Broker__c-Property__c-plan.json使用参数指定完整路径 命令生成的计划执行文件的名称。计划执行文件名始终以 -plan.json 结尾。–plandata export tree

寻找更复杂的示例?easy-spaces-lwc 示例应用程序有一个数据计划,显示如何导入帐户、相关 联系人和 3 级深度自定义对象链。

创建 Lightning 应用程序和 Aura 组件

您可以使用 Salesforce CLI 在本地创建 Lightning 应用程序和 Aura 组件 Salesforce DX 项目。生成的文件位于项目的包目录中。

aura

  1. 打开终端(macOS 和 Linux)或命令提示符 Windows,然后切换到 Salesforce DX 项目目录。
  2. 在要生成 Lightning 应用程序和 Aura 组件。例如,如果要在默认 package 目录下,如果不存在,请创建 force-app/main/default/aura 目录。
  3. 创建 Lightning 应用程序或 Aura 组件;使用 –name 标志指定应用或组件名称,并使用 —output-dir 标志指定 AURA 目录。sf lightning generate app --name myApp --output-dir force-app/main/default/aurasf lightning generate component --type aura --name myAuraComponent --output-dir force-app/main/default/aura

使用命令部署新的 Lightning 应用程序和 Aura 组件添加到您的组织。project deploy start

sf project deploy start --metadata AuraDefinitionBundle:myApp --metadata AuraDefinitionBundle:myAuraComponent

创建 Apex 类

您可以使用 Salesforce CLI 在本地 Salesforce DX 项目中创建 Apex 类。 生成的类文件位于 package 目录。

classes

  1. 打开终端(macOS 和 Linux)或命令提示符 Windows,然后切换到 Salesforce DX 项目目录。
  2. 在要生成 顶点类。例如,如果要在默认包目录中生成它,请创建 force-app/main/default/classes 目录(如果没有) 存在。
  3. 创建 Apex 类;使用 –name 标志指定类名,使用 —output-dir 标志指定目录。sf apex generate class --name myClass --output-dir force-app/main/default/classes

该命令生成两个文件:

  • myClass.cls-meta.xml– 元数据文件
  • myClass.cls– Apex 源文件

默认情况下,该命令创建一个空的 Apex 类。但是,您可以选择不同的 模板,具体取决于您正在创建的内容,通过指定标志。–template

模板描述《Apex 开发人员指南》中的详细信息
DefaultApexClass(默认值)标准 Apex 类。
ApexException(阿佩克斯异常)使用 Apex 内置异常或创建自定义异常。所有例外都有共同点 方法。Exception 类和内置异常
ApexUnitTest(顶点单元测试)使用注释定义类 以及仅包含用于测试应用程序的代码的方法。@isTestisTest 注解
入站电子邮件服务使用电子邮件服务处理入站的内容、标题和附件 电子邮件。Apex 电子邮件服务

本示例选择模板。ApexException

sf apex generate class --name myException --template ApexException --output-dir force-app/main/default/classes

使用命令部署新的 Apex 类添加到您的组织。project deploy start

sf project deploy start --metadata ApexClass:myClass

创建 Apex 触发器

使用 Apex 触发器在更改 Salesforce 之前或之后执行自定义操作 记录,例如插入、更新或删除。您可以使用 Salesforce CLI 创建 Apex 本地 Salesforce DX 项目中的触发器。生成的文件位于 项目。

triggers

  1. 打开终端(macOS 和 Linux)或命令提示符 Windows,然后切换到 Salesforce DX 项目目录。
  2. 在要生成 顶点触发器。例如,如果要在默认包目录中生成它,请创建 force-app/main/default/triggers 目录,如果 不存在。
  3. 生成 Apex 触发器;使用 –name 标志指定触发器名称,使用 —output-dir 标志指定触发器目录。sf apex generate trigger --name myTrigger --output-dir force-app/main/default/triggers默认情况下,生成的触发器用于泛型 sObject 上的事件。使用 and 标志更改这些 默认值。此示例生成一个触发器,该触发器在插入 Account 对象。before insert–event–sobjectsf apex generate trigger --name myTrigger --event 'before insert,after insert' --sobject Account --output-dir force-app/main/default/triggers

该命令生成两个文件。

  • myTrigger.trigger-meta.xml– 元数据文件
  • myTrigger.trigger– Apex 触发器源文件

使用命令部署新的 组织的顶点触发器。project deploy start

sf project deploy start --metadata ApexTrigger:myTrigger --target-org myscratch

创建自定义对象

您可以使用 Salesforce CLI 为本地 Salesforce DX 项目中的新自定义对象生成元数据文件。

  1. 打开终端(macOS 和 Linux)或命令提示符 Windows,然后切换到 Salesforce DX 项目目录。
  2. 运行交互式架构生成 sobject 命令。您必须为新的自定义指定标签 带有 –label 标志的对象。命令 使用此标签为其他对象属性提供智能建议, 例如其 API 名称和复数标签。sf schema generate sobject --label "New Object"回答有关新对象的所有问题,例如生成文件在 您的 Salesforce DX 项目以及是否启用各种对象属性。

创建自定义对象后:

  • 使用交互式命令在新对象上创建自定义字段,该命令会生成 项目中必需的元数据文件。您还可以使用以下命令 在标准对象(如 Account)上创建自定义字段。schema generate field
  • 使用命令为新对象创建自定义选项卡。schema generate tab

然后,将新的自定义对象部署到您的组织。

sf project deploy start --metadata CustomObject:NewObject__c --target-org myscratch

这 首次将新的自定义对象部署到源跟踪组织时,组织 创建其他属性并设置新的默认值。出于这个原因,我们 建议立即检索自定义对象,以便检索本地源文件 已更新为新信息。

执行匿名 Apex

您可以使用 Salesforce CLI 命令在组织中执行匿名的 Apex 代码块。

apex run

  1. 打开终端(macOS 和 Linux)或命令提示符 Windows,然后切换到 Salesforce DX 项目目录。
  2. 运行不带标志的 apex run 命令以打开 交互式 shell。在提示符下,输入所有 Apex 代码;完成后按 CTRL-D。 然后,您的代码将在指定组织中的单个执行匿名请求中执行,或者 默认组织(如果未指定)。sf apex run --target-org myscratch此输出显示了执行 Apex 代码的示例system.debug (‘Hello world!’);

Start typing Apex code. Press the Enter key after each line, then press CTRL+D when finished.
system.debug (‘Hello world!’);
Compiled successfully.
Executed successfully.

58.0 APEX_CODE,DEBUG;APEX_PROFILING,INFO
Execute Anonymous: system.debug (‘Hello world!’);
14:23:06.174 (174742273)|USER_INFO|[EXTERNAL]|0058H000005QWcE|test-ux9lpg9jyyqt@example.com|(GMT-07:00) Pacific Daylight Time (America/Los_Angeles)|GMT-07:00
14:23:06.174 (174785450)|EXECUTION_STARTED
14:23:06.174 (174792639)|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex
14:23:06.174 (175417814)|USER_DEBUG|[1]|DEBUG|Hello world!
14:23:06.175 (175529797)|CUMULATIVE_LIMIT_USAGE
14:23:06.175 (175529797)|LIMIT_USAGE_FOR_NS|(default)|
Number of SOQL queries: 0 out of 100
Number of query rows: 0 out of 50000
Number of SOSL queries: 0 out of 20
Number of DML statements: 0 out of 150
Number of Publish Immediate DML: 0 out of 150
Number of DML rows: 0 out of 10000
Maximum CPU time: 0 out of 10000
Maximum heap size: 0 out of 6000000
Number of callouts: 0 out of 100
Number of Email Invocations: 0 out of 10
Number of future calls: 0 out of 50
Number of queueable jobs added to the queue: 0 out of 50
Number of Mobile Apex push calls: 0 out of 10

14:23:06.175 (175529797)|CUMULATIVE_LIMIT_USAGE_END

14:23:06.174 (175598235)|CODE_UNIT_FINISHED|execute_anonymous_apex
14:23:06.174 (175617689)|EXECUTION_FINISHED

使用标志执行 Apex 在文件中编码,而不是以交互方式编写代码。–file

sf apex run --file ~/test.apex

运行 Apex 测试

当您准备好测试对源代码的更改时,您可以在组织中运行 Apex 测试 在命令行上使用 Salesforce CLI。您还可以从 Salesforce Extensions 运行 Apex 测试 适用于 VS Code 或第三方持续集成工具,例如 Jenkins 或 CircleCI 中。

所需的最低用户权限和设置

运行 Apex 测试的用户必须在组织中具有以下用户权限:

  • View 设置和配置
  • API 已启用

此外,请确保在组织的用户界面中启用了“启用流式处理 API”设置。 默认情况下,该设置处于启用状态。

有关详细信息,请参阅用户权限和配置用户界面设置。

运行所有 Apex 测试并查看结果

此命令异步运行指定组织中的所有 Apex 测试,这是默认设置 行为。

sf apex run test --target-org myscratch

该命令不会显示实际测试结果,而是输出带有作业 ID 的命令,然后运行该 ID 进行查看 完整的结果。例如:apex get test

sf apex get test --test-run-id 7078HzRMVV --target-org myscratch

使用该标志同步运行测试。 该命令将等待显示测试结果,直到所有测试完成。–synchronous

sf apex run test --synchronous

运行特定的 Apex 测试

用于运行测试的子集。请参阅了解 Apex Developer 中的部署 可能的测试级别值列表指南。–test-level

sf apex run test --test-level RunLocalTests

使用标志列出要运行的测试类或套件、指定输出格式、查看代码 覆盖结果等。例如,以下命令运行 TestA 和 TestB 测试 类,以 Test Anything Protocol (TAP) 格式提供结果,并请求代码覆盖率 结果。测试在默认组织中运行。

sf apex run test --class-names TestA --class-names TestB --result-format tap --code-coverage

使用标志运行特定的测试方法 使用标准符号 .如果你是 测试托管软件包,请使用 . 如果指定一个没有方法的测试类,则该命令将运行该类中的所有方法。 此示例演示如何运行类中的两个方法以及类中的所有方法。–testsClass.methodnamespace.Class.methodTestATestB

sf apex run test --tests TestA.excitingMethod --tests TestA.boringMethod --tests TestB

下面是相同的示例,但具有命名空间。

sf apex run test --tests ns.TestA.excitingMethod --tests ns.TestA.boringMethod --tests ns.TestB

您可以指定 OR FOR 或两者,但不能同时指定两者。–tests–class-namesapex run test

  • 调试 Apex 如果您使用 Salesforce Extensions for Visual Studio Code (VS Code) 执行开发任务,则可以选择 Apex
    调试器扩展。无论您选择哪种调试器,您都可以在 Apex 类中设置断点并逐步执行它们,以实时检查您的代码以查找错误。可以在 VS Code 中或在命令行上运行 Apex 测试。
  • 生成和查看 Apex 调试日志 Apex 调试日志
    可以记录在任何经过身份验证的组织中执行事务或运行单元测试时发生的数据库操作、系统进程和错误。在适用于 VS Code 的 Salesforce 扩展中启用调试日志,然后使用 VS Code 或 Salesforce CLI 查看日志。

调试 Apex

如果您使用 Salesforce Extensions for Visual Studio Code (VS Code) 进行开发 任务,您可以选择 Apex Debugger 扩展。无论选择哪个调试器,都可以设置 Apex 类中的断点,并逐步执行它们以实际检查代码 是时候找到错误了。可以在 VS Code 中或在命令行上运行 Apex 测试。

Apex 重播调试器

Apex Replay Debugger 无需任何额外许可证即可使用。配置和 使用它,请参阅 Apex Replay Debugger。

Apex 交互式调试器

您的 Dev Hub 组织中必须至少有一个可用的 Apex Debugger 会话。购买 组织的更多会话,请联系您的系统管理员以打开案例。

  • Performance Edition 和 Unlimited Edition 组织包括一个 Apex Debugger 会话。
  • Apex 调试器会话在试用版和开发人员版组织中不可用。
  • 您可以为 Enterprise Edition 组织购买 Apex Debugger 会话。

通过将功能添加到临时组织定义文件,在临时组织中启用 Apex 调试器:DebugApex

"features": "DebugApex"

要配置和使用它,请参阅 Apex 交互式调试器。

ISV Debugger (Salesforce Extensions for VS Code Only)

ISV Customer Debugger 是 Apex Interactive Debugger () 扩展的一部分,因此您不必安装 除 Salesforce 扩展包及其先决条件之外的任何内容。您只能调试 沙盒组织。salesforcedx-vscode-apex-debugger

请参阅 Salesforce Extensions 中的 ISV 客户调试器 VS Code 了解详细信息。

生成和查看 Apex 调试日志

Apex 调试日志可以记录数据库操作、系统进程和发生的错误 在任何经过身份验证的组织中执行事务或运行单元测试时。启用调试日志 ,然后使用 VS Code 或 Salesforce 查看日志 命令行界面。

  1. 在 Salesforce Extensions for VS Code 中,准备组织以生成日志并配置 调试器。
    1. 登录到组织。
    2. 对于 Replay Debugger,请运行 SFDX: Turn on Apex Debug Log for Replay 调试器
    3. 为重播调试器或交互式调试器创建启动配置文件。
  2. 运行测试后,获取调试日志列表。sf apex list log --target-org myscratch APPLICATION DURATION (MS) ID LOCATION SIZE (B) LOG USER OPERATION REQUEST START TIME STATUS ─────────── ───────────── ─────── ───────── ──────── ───────── ─────────────── ─────── ─────────── ─────── Unknown 1143 07L9Axx SystemLog 23900 User User ApexTestHandler Api 2017-09-05x Success
  3. 通过将调试日志的 ID 传递给 apex get log 命令来查看调试日志。

sf apex get log –log-id 07L9A000000aBYGUA2

38.0 APEX_CODE,FINEST;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;WAVE,INFO;WORKFLOW,INFO
15:58:57.3 (3717091)|USER_INFO|[EXTERNAL]|0059A000000TwPM|test-ktjauhgzinnp@example.com|Pacific Standard Time|GMT-07:00
15:58:57.3 (3888677)|EXECUTION_STARTED
15:58:57.3 (3924515)|CODE_UNIT_STARTED|[EXTERNAL]|01p9A000000FmMN|RejectDuplicateFavoriteTest.acceptNonDuplicate()
15:58:57.3 (5372873)|HEAP_ALLOCATE|[72]|Bytes:3

沙盒

沙盒是 Salesforce 组织的副本,可用于开发、测试、 和培训,而不会影响生产组织中的数据和应用程序。

Salesforce 提供沙盒和一组部署工具,因此您可以:

  • 将自定义和开发工作与生产环境隔离开来,直到 你已准备好部署更改。
  • 针对生产数据和用户的副本测试更改。
  • 提供培训环境。
  • 将单个更改协调到一个部署到生产中。

传统上,您或您的管理员通过 设置 UI。但是我们意识到,许多开发人员希望能够创建和管理他们的 以编程方式开发和测试环境,并自动执行其 CI 流程。 借助 Salesforce CLI,您可以同时做到这两点。

沙盒在应用程序开发生命周期中处于什么位置?

您使用的开发模型决定了您在哪些阶段使用沙盒。查看更多 有关我们的开发模型以及沙盒适合的位置的信息,请参阅确定适合的应用程序生命周期模型 你(Trailhead)。

  • 授权生产组织
    JWT 和基于 Web 的流需要具有沙盒许可证的生产组织,而不是开发人员中心。但是,如果你的生产组织也是开发人员中心组织,则没关系。
  • 创建沙盒定义文件
    在使用 Salesforce CLI 创建沙盒之前,请在沙盒定义文件中定义沙盒的配置。沙盒定义文件是沙盒的蓝图。您可以为在开发过程中使用的每种沙盒类型创建不同的定义文件。
  • 创建、克隆或删除沙盒 创建用于开发、测试或训练的沙盒
    。克隆沙盒以将其数据和元数据复制到另一个沙盒。

授权您的生产组织

JWT 和基于 Web 的流程需要具有沙盒许可证的生产组织,而不是开发人员 枢纽。但是,如果你的生产组织也是开发人员中心组织,则没关系。

使用基于 JWT 的流程授权组织和使用基于 Web 的流程授权组织中的示例是针对的 走向 Scratch 组织。请按照以下提示成功授权您的生产组织。

  • 请务必在 sfdx-project.json 文件中使用 for。 或者,您可以使用直接在命令行上指定 URL。此值将覆盖您的登录 URL 在 sfdx-project.json 文件中指定。https://login.salesforce.comsfdcLoginUrlorg login jwt –instance-url
  • 运行命令时指定生产组织的用户名。无需指定 Dev Hub 或 指示默认的 Dev Hub。org login jwt
  • JWT 授权流程要求您创建连接的应用程序。当你 创建连接的应用,登录到生产组织,而不是开发人员中心组织。

创建沙盒定义文件

在使用 Salesforce CLI 创建沙盒之前,请在 沙盒定义文件。沙盒定义文件是沙盒的蓝图。您可以 为开发中使用的每种沙盒类型创建不同的定义文件 过程。

沙盒配置值

选择必填?描述
apexClassId对 Apex 类的 ID 的引用,该类在 沙盒。允许您在沙盒上执行业务逻辑,以便为沙盒做好准备 用。
自动激活如果 ,您可以激活沙盒 立即刷新。true
copyArchived活动仅限完整沙盒。如果您的组织已购买,则此字段可见 用于复制沙盒的存档活动的选项。要获取此选项,请联系 Salesforce 客户支持。
copyChatter如果 ,则复制存档的 Chatter 数据 到沙盒。true
描述沙盒的描述(1000 个或更少字符),可帮助您 将其与其他沙盒区分开来。
历史天数仅限完整沙盒。表示对象历史记录的天数 复制到沙盒中。取值范围:-1,表示所有可用天数0 (默认)1020306090120150180
许可证类型是(用于沙盒创建)有效值为 、 、 和 。DeveloperDeveloper_ProPartialFull
沙盒名称是的用于标识沙盒的唯一字母数字字符串(10 个字符或更少)。 在删除沙盒的过程中,您无法重复使用名称。
源SandboxName是(用于沙盒克隆)要克隆的沙盒的名称。
模板 Id是(适用于部分沙盒)对于完整沙箱是可选的。不适用于 Developer 和 Developer Pro 沙盒。对由 15 个字符标识的沙盒模板的引用 查看时 URL 中以 开头的 ID 浏览器中的沙盒模板。沙盒模板允许您选择哪些对象 在沙盒中复制。1ps

注意

您可以在定义文件中指定其中之一,但不能同时指定两者。licenseTypesourceSandboxName

示例沙盒定义文件

尽管您可以将沙盒定义文件放在任何位置,但我们建议将其保留在 配置目录中的 Salesforce DX 项目。命名 文件中,我们建议提供以 sandbox-def.json 结尾的描述性名称,例如 developer-sandbox-def.json。

下面是用于创建沙盒的示例定义文件:

{
     "sandboxName": "dev1",
     "licenseType": "Developer"
}

下面是用于克隆沙盒的示例定义文件:

{
     "sandboxName": "dev1clone",
     "sourceSandboxName": "dev1"
}

创建、克隆或删除沙盒

创建用于开发、测试或训练的沙盒。克隆要复制的沙盒 其数据和元数据复制到另一个沙盒。

在创建或克隆沙盒之前:

  • 使用清单文件创建 Salesforce DX 项目。
  • 授权给具有可用沙盒许可证的生产组织。
  • 创建沙箱定义文件。

为什么我们建议使用别名

创建或克隆沙盒时, 沙盒中生成的用户名基于生产组织中存在的用户名,或者 沙盒。用户名看起来像电子邮件地址,例如 .如果生成的用户名不是唯一的,我们会在前面添加一些 字符和数字添加到用户名中。修改后的用户名类似于 。username@company.com.dev100x7Vqusername@company.com.dev1

可以想象, 记住这些用户名可能具有挑战性,尤其是当您有多个沙盒时 管理。别名是管理和跟踪组织的有效方法,我们认为它是最好的 实践。因此,当您发出需要用户名的命令时,使用您可以 记住可以加快速度。如果您在创建沙盒时未设置别名,则 可以设置一个 后。

sf alias set MyDevSandbox username@company.com.dev1

创建沙盒

可选:创建沙箱定义文件

当您创建一个 沙盒,Salesforce 将元数据和可选数据从您的生产组织复制到 沙盒组织。使用该标志指定生产组织的用户名或别名。–target-org

sf org create sandbox --target-org prodOrg --definition-file config/dev-sandbox-def.json --alias MyDevSandbox --set-default --wait 30

这 命令要求您确认沙箱配置,然后将信息显示为沙箱 正在创建中。

旗帜 表示此沙盒是所有 CLI 命令的默认组织。如果您正在使用 多个组织,并且您不希望此组织成为默认值,请排除此标志。–set-default

直接 定义所需的沙盒选项,或覆盖沙盒定义中定义的值 文件,则在命令上指定适当的标志 线。

sf org create sandbox --name FullSbx --license-type=Full --target-org prodOrg --alias MyFullSandbox --wait 30

提示

由于沙盒是在队列中处理的,因此沙盒创建过程可能需要 比默认等待时间 6 分钟长。我们建议将较大的值设置为 ,例如 30 分钟。–wait

创作多长时间 流程需要取决于生产组织的规模和复杂性。您会看到状态消息 发布到 输出:

Sandbox Create... ⣾ 00:28:00 until timeout. 26%
 Field         Value                        
 ───────────── ──────────────────────────── 
 Id            0GR1Q888800HORuWAO           
 SandboxName   dev11                        
 Status        Processing                   
 LicenseType   DEVELOPER                    
 SandboxInfoId 0GQ1Q000009999mWAO           
 Created Date  2023-10-17T21:42:49.000+0000 
 CopyProgress  26%                          
 SandboxOrg    00DP0099993zEZj              
---------------------
Sandbox Create Stages
✓ - Pending
… - Processing
… - Activating
… - Authenticating

等待期结束后,您可以执行命令查看沙箱创建过程的状态。如果沙盒是 在等待时间内创建,Salesforce CLI 会自动在沙盒中进行身份验证。和 沙盒将显示在命令的输出中。 团队成员可以通过运行命令并提供其用户名和密码来向沙盒进行身份验证。org resume sandboxorg listorg web login

sf org web login --instance-url https://test.salesforce.com

克隆沙盒

您可以通过克隆现有沙盒来创建沙盒,而不是使用生产组织 作为您的来源。您可以通过使用一组数据和元数据自定义沙盒来节省时间,并且 然后复制它。使用 标志指定 现有沙箱名称和标志更改为 新的沙盒。这两个沙箱都必须与指定的生产组织相关联,该组织必须 包含沙盒许可证。(标志)。–clone–name–target-org

沙盒克隆简化了 应用程序生命周期。您可以为每种类型的工作设置沙盒,例如开发、 测试和暂存。您的同事可以轻松克隆单个沙盒,而不是共享 一个沙盒,踩着对方的脚趾。

sf org create sandbox --clone ExistingSandbox --name NewClonedSandbox --target-org prodOrg --alias MyDevSandbox --set-default --wait 30

提示

由于沙盒是在队列中处理的,因此沙盒克隆过程可以 花费的时间比默认的 6 分钟等待时间长。我们建议将较大的值设置为 ,例如 30 分钟。–wait

等待期结束后,您可以执行命令查看沙箱克隆过程的状态。如果沙盒是 在等待时间内克隆后,CLI 会自动在沙盒中进行身份验证。而 沙盒将显示在命令的输出中。团队 成员可以通过运行命令并提供其用户名和密码来对沙盒进行身份验证。org resume sandboxorg listorg web login

sf org web login --instance-url https://test.salesforce.com

检查沙盒状态

创建或克隆沙盒可能需要多次 纪要。如果命令超时,它会显示一个作业 ID,您可以将该 ID 传递给命令以报告创建或克隆 地位。当沙盒准备就绪时,此命令还会向 沙盒。org resume sandbox

sf org resume sandbox --job-id 0GR1888880000HORuWAO --target-org prodOrg

如果命令超时,则 未设置别名。但是,您可以使用以下命令进行设置:org create sandboxalias set

sf alias set MyDevSandbox username@company.com.dev1

打开沙盒

沙盒准备就绪后,您可以通过指定其用户名或别名来打开它。但是,您 不必提供其密码,因为 CLI 会管理 你。

sf org open --target-org MyDevSandbox

删除沙盒

您可以使用 Salesforce CLI 删除沙盒,无论 您在本地创建了它,或者记录了它 使用命令添加到现有沙箱中。您必须 之前还登录过包含沙盒许可证的生产组织。org create sandboxorg login

sf org delete sandbox --target-org MyDevSandbox

下一个:

  • 将元数据从沙盒检索到本地 DX 项目。
  • 直接在沙盒中进行开发,然后检索对本地 DX 的更改 项目。
  • 将本地更改部署到沙盒。

跟踪项目和组织之间的更改

使用源跟踪来跟踪本地项目与临时组织之间的更改,或者 创建、更新或删除源代码时的沙盒。

源跟踪对组织没有直接影响;它仅影响您的本地环境。 具体而言,Salesforce CLI 会检查本地配置文件以确定您是否具有 为特定组织启用源跟踪。如果有,则源跟踪操作是 在处理组织时执行,例如使用命令。project deploy start

不带标志的命令 在本地项目和目标组织之间部署或检索所有更改的源。查看更多 精细控制,使用标志指定特定的元数据组件、包目录或 要部署或检索的清单文件。此示例检索 Apex 类:project deploy|retrieve startMyFabClass

sf project retrieve start --metadata ApexClass:MyFabClass

除了列出您所做的更改外,源跟踪还可以:

  • 自动跟踪对元数据组件的更改,使您免于跟踪它们 手动地。
  • 查看其他开发人员部署到沙盒的更改。
  • 部署或检索更改的源。
  • 识别并解决本地项目与临时组织或沙盒之间的冲突 在部署或检索源之前。

要查看哪些元数据组件支持源跟踪,请查看 元数据覆盖率报告。

  • 管理组织的
    源跟踪 仅当目标组织允许时,源跟踪才有效。不用担心,您仍然可以在组织之间部署或检索元数据,而无需进行源跟踪。但是这些命令不会检查冲突,您必须使用适当的标志(如 或 )准确指定要部署或检索的内容。–source-dir–metadata
  • 预览源跟踪
    标识的更改 要查看本地项目与目标组织之间的更改,请导航到要查看其更改的项目目录。然后运行其中一个预览命令,该命令显示项目中可部署到组织的本地更改,或可检索的组织更改。
  • 部署和检索源跟踪
    标识的更改 创建 Salesforce 应用程序时,通常同时使用低代码和专业代码技术。低代码的一个示例是使用 Setup 直接在组织中创建自定义对象。pro-code 的一个示例是使用 IDE(如 VS Code)在本地项目中创建 Apex 类。在您工作时,源跟踪会识别更改,以便您可以使组织中的远程元数据与本地项目中的源保持同步。
  • 解决本地项目与组织
    之间的冲突 最佳做法是,如果本地项目或组织中的组件存在冲突,请在继续操作之前解决这些冲突。您可以手动解决冲突,也可以用组件的一个版本覆盖另一个版本。仅当您确定新版本是要使用的版本时,才覆盖更改。
  • 通过查询 SourceMember 对象获取更改信息 若要了解有关开发人员组织中源跟踪更改的更多信息,请查询 SourceMember Tooling API 对象
    ,以了解进行了哪些更改以及谁进行了更改。Salesforce CLI 使用 SourceMember 对象来查看组织中的更改,作为其源跟踪功能的一部分。
  • 最佳做法 遵循这些最佳做法
    ,充分利用源跟踪。
  • 源跟踪的性能注意事项 源跟踪执行额外的功能来确定对源跟踪
    组件的更改,例如运行更多查询和等待 SourceMember 工具 API 对象在部署后更新。因此,在处理大中型项目时,某些命令可能需要更长的时间才能运行。如果您正在处理小型项目,您不会注意到任何速度变慢。

管理组织的源跟踪

源跟踪仅在目标组织允许的情况下才起作用。别担心,你仍然可以 在不进行源跟踪的情况下将元数据部署到组织或从组织检索元数据。但是命令 不要检查冲突,并且必须准确指定要部署或检索的内容 使用适当的标志,例如 或 .

–source-dir–metadata

支持源跟踪的组织版本

  • Developer Edition 组织、生产组织、部分复制沙箱和完整 沙盒 – 不支持源跟踪。
  • Developer 和 Developer Pro 沙盒 – 在以下情况下支持源跟踪 其关联的生产组织已启用源跟踪。
  • 临时组织 – 始终支持来源追踪。

管理新组织中的源跟踪

Scratch Orgs 有源代码 默认情况下启用跟踪。对于 Developer 和 Developer Pro 沙盒,源 默认情况下,只要其关联的生产组织具有 已启用源跟踪。

在以下情况下,您可以选择退出来源跟踪 通过指定命令的标志来创建临时组织或沙箱。此标志仅影响您的本地 配置,而不是组织本身。Salesforce CLI 将本地配置选项设置为 向组织提供授权信息。如果您注销组织,然后重新登录 同样,默认情况下会再次启用源跟踪。–no-track-sourceorg create scratch|sandboxtrackSource: false

以下是创建 具有源代码跟踪功能的 Scratch 组织 禁用。

sf org create scratch --target-dev-hub=MyHub --definition-file config/project-scratch-def.json --no-track-source

这是 沙盒 例。

sf org create sandbox --definition-file config/dev-sandbox-def.json --target-org prodOrg --no-track-source

管理现有组织中的源跟踪

您可以使用以下方式更改现有临时组织或沙盒是否允许源跟踪 这两个命令:

  • org enable tracking:允许 Salesforce CLI 以跟踪项目与组织之间源文件中的更改。
  • org disable tracking:阻止 Salesforce CLI 从跟踪项目和 组织。

此示例说明如何在具有别名的组织中启用源跟踪;如果组织 不支持跟踪,例如完整沙盒。mySandbox

sf org enable tracking --target-org mySandbox

假设您有一个用于集成测试的沙盒,并且您希望 将源部署到它,但不要等待跟踪操作。此示例演示如何 在具有别名的组织上禁用源跟踪:mySandbox

sf org disable tracking --target-org mySandbox

预览源跟踪标识的更改

要查看本地项目与目标组织之间的更改,请导航到项目 要查看其更改的目录。然后运行其中一个预览命令,该命令显示 项目中可以部署到组织的本地更改,也可以是组织更改 可以检索。

  1. 在终端或命令窗口中,导航到项目目录。在此示例中, 目录名为 MyProject。cd /Users/joe/dx-projects/MyProject
  2. 若要查看项目和组织之间的更改,请运行项目部署预览版项目 检索预览命令。包括 —target-org 标志以指定临时组织或沙箱的用户名或别名 要与本地项目进行比较。在此示例中,该命令显示 可以使用别名 DevSandbox 部署到沙盒的本地更改。sf project deploy preview --target-org DevSandbox同样,此示例显示沙盒中可检索的远程更改 返回到本地项目。sf project retrieve preview --target-org DevSandbox该命令接受 、 、 和标志,您可以使用它们来预览更多内容 精细部署。此示例仅预览元数据的部署:project deploy preview–metadata–source-dir–manifestApexClasssf project deploy preview --metadata ApexClass --target-org DevSandbox

此示例输出显示 对 Apex 类进行了局部更改,并且 WidgetObject__c可以部署到组织的自定义对象。project deploy previewWidgetClass

sf project deploy preview --target-org DevSandbox

No conflicts found.

No files will be deleted.

Will Deploy [2] files.
 Type         Fullname        Path                                                                           
 ──────────── ─────────────── ────────────────────────────────────────────────────────────────────────────── 
 ApexClass    WidgetClass     force-app/main/default/classes/WidgetClass.cls-meta.xml                        
 CustomObject WidgetObject__c force-app/main/default/objects/WidgetObject__c/WidgetObject__c.object-meta.xml 

No files were ignored. Update your .forceignore file if you want to ignore certain files.

此示例输出显示 对 Apex 类进行了远程更改,并且 GizmoObject__c可以从组织检索到本地的自定义对象(及其布局) 项目。输出还显示项目和组织之间没有冲突。project retrieve previewGizmoClass

sf project retrieve preview --target-org DevSandbox

No conflicts found.

No files will be deleted.

Will Retrieve [3] files.
 Type         Fullname                          Path 
 ──────────── ───────────────────────────────── ──── 
 Layout       GizmoObject__c-GizmoObject Layout      
 CustomObject GizmoObject__c                         
 ApexClass    GizmoClass                             

Ignored [2] files. These files won't retrieve because they're ignored by your .forceignore file.
 Type    Fullname                            Path 
 ─────── ─────────────────────────────────── ──── 
 Profile Admin                                    
 Profile B2B Reordering Portal Buyer Profile

预览命令使用包含三列的更改信息表:Type、Fullname 和 路径。每行代表一个更改。

  • Type 是已更改组件的元数据类型。它描述了组件的内容 是,例如 Apex 类或自定义对象。
  • Fullname 是组件的 API 名称。
  • 路径是组件在本地项目中的位置。如果为空,则 组件在本地项目中不存在。当空白时,通常意味着组件是 存在于组织中,但不存在于本地项目中。

如果源跟踪未检测到任何更改,则预览命令将返回一条语句 谚语。No results found

=== Source Status
No results found

在本地项目和组织中预览源中的更改后,即可 部署或检索并解决潜在冲突。

部署和检索源跟踪标识的更改

创建 Salesforce 应用程序时,通常同时使用低代码和专业代码 技术。低代码的一个示例是使用 Setup 直接在组织中创建自定义对象。 pro-code 的一个示例是使用 IDE(如 VS)在本地项目中创建 Apex 类 法典。在您工作时,源跟踪会识别更改,以便您可以将远程元数据保留在 组织与本地项目中的源同步。

该过程是迭代的。首先,预览远程和本地更改。如果存在冲突, 你解决它们。现在,您必须确保这些更改同时存在于组织和本地 项目。因此,您可以检索到本地项目的远程更改,然后将它们推送到 源代码管理存储库,以确保源代码管理系统包含所有更改 并且是历史真相的源泉。将本地更改(如 Apex 代码)部署到 组织,以便您可以验证和测试它。你不断迭代这个过程,直到你 完成 Salesforce 应用程序的开发。

要了解源跟踪的实际效果,让我们看一些示例。

假设您运行并看到远程 变化。project retrieve preview

sf project retrieve preview --target-org DevSandbox

No conflicts found.

No files will be deleted.

Will Retrieve [3] files.
 Type         Fullname                          Path 
 ──────────── ───────────────────────────────── ──── 
 Layout       GizmoObject__c-GizmoObject Layout      
 CustomObject GizmoObject__c                         
 ApexClass    GizmoClass                             

Ignored [2] files. These files won't retrieve because they're ignored by your .forceignore file.
 Type    Fullname                            Path 
 ─────── ─────────────────────────────────── ──── 
 Profile Admin                                    
 Profile B2B Reordering Portal Buyer Profile

使用命令将组织中的更改检索到本地项目。现在组件已在本地创建, “路径”列具有一个值,它包含默认包目录。project retrieve start

sf project retrieve start --target-org DevSandbox
Preparing retrieve request... ⣟ Sending request to org
Preparing retrieve request... Succeeded

Retrieved Source
=========================================================================================================================================
| State   Name                              Type         Path                                                                             
| ─────── ───────────────────────────────── ──────────── ──────────────────────────────────────────────────────────────────────────────── 
| Created GizmoClass                        ApexClass    force-app/main/default/classes/GizmoClass.cls                                    
| Created GizmoClass                        ApexClass    force-app/main/default/classes/GizmoClass.cls-meta.xml                           
| Created GizmoObject__c                    CustomObject force-app/main/default/objects/GizmoObject__c/GizmoObject__c.object-meta.xml     
| Created GizmoObject__c-GizmoObject Layout Layout       force-app/main/default/layouts/GizmoObject__c-GizmoObject Layout.layout-meta.xml

检索源后,再次运行。现在,源跟踪报告没有可检索的内容。project retrieve preview

sf project retrieve preview 

No conflicts found.

No files will be deleted.

No files will be retrieved.

Ignored [2] files. These files won't retrieve because they're ignored by your .forceignore file.
 Type    Fullname                            Path 
 ─────── ─────────────────────────────────── ──── 
 Profile Admin                                    
 Profile B2B Reordering Portal Buyer Profile

现在让我们看一下部署。要预览本地更改,请运行 。project deploy preview

sf project deploy preview --target-org DevSandbox

No conflicts found.

No files will be deleted.

Will Deploy [2] files.
 Type         Fullname        Path                                                                           
 ──────────── ─────────────── ────────────────────────────────────────────────────────────────────────────── 
 ApexClass    WidgetClass     force-app/main/default/classes/WidgetClass.cls-meta.xml                        
 CustomObject WidgetObject__c force-app/main/default/objects/WidgetObject__c/WidgetObject__c.object-meta.xml 

No files were ignored. Update your .forceignore file if you want to ignore certain files.

然后部署本地更改。部署到沙盒后,其他使用 沙盒可以看到您的更改。

sf project deploy start --target-org DevSandbox
Deploying v59.0 metadata to test-ikspctiorkzs@example.com using the v59.0 SOAP API.
Deploy ID: 0Af8D00000pNmKySAK
Status: Succeeded | ████████████████████████████████████████ | 2/2 Components (Errors:0) | 0/0 Tests (Errors:0)

Deployed Source
=====================================================================================================================
| State   Name            Type         Path                                                                           
| ─────── ─────────────── ──────────── ────────────────────────────────────────────────────────────────────────────── 
| Created WidgetClass     ApexClass    force-app/main/default/classes/WidgetClass.cls                                 
| Created WidgetClass     ApexClass    force-app/main/default/classes/WidgetClass.cls-meta.xml                        
| Created WidgetObject__c CustomObject force-app/main/default/objects/WidgetObject__c/WidgetObject__c.object-meta.xml

再次运行。project deploy preview

sf project deploy preview

No conflicts found.

No files will be deleted.

No files will be deployed.

No files were ignored. Update your .forceignore file if you want to ignore certain files.

该命令报告没有要部署的内容,指示您的本地项目和组织 是同步的。

  • 使用源跟踪检索对配置文件的更改 检索配置文件的行为与源跟踪
    略有不同。

使用源跟踪检索对配置文件的更改

检索配置文件的行为与源跟踪略有不同。

重要

通常,我们建议您使用权限集而不是 配置 文件。配置文件在组织之间不一致,检索到的源文件和 部署取决于组织类型、跟踪状态和操作中的其他元数据。如果 您决定继续使用配置文件,我们建议您在部署或 通过将它们添加到文件中进行检索。.forceignore

如果没有源跟踪,检索配置文件只会返回一些配置文件信息。 检索配置文件将返回与指定其他项目相关的配置文件的相关信息 在文件中。package.xml

例如,使用此文件检索配置文件将返回帐户上MyCustomField__c自定义字段的配置文件权限 对象。package.xml

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
 <types>
  <members>Account.MyCustomField__c</members>
  <name>CustomField</name>
 </types>
 <types>
  <members>*</members>
  <name>Profile</name>
 </types>
 <version>50.0</version>
</Package>

通过源跟踪,检索配置文件会返回与任何内容相关的配置文件信息 文件中指定的 else 加上 any 通过源跟踪跟踪组件。这包括更改的任何实体 存在于本地项目和组织之间。package.xml

例如,假设您在 Opportunity 对象上创建了一个名为 OppCustomField__c 的自定义字段 在本地环境中。源跟踪检测到更改并报告它。现在您检索 配置文件使用与以下情况相同的文件 源跟踪已关闭。package.xml

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
 <types>
  <members>Account.MyCustomField__c</members>
  <name>CustomField</name>
 </types>
 <types>
  <members>*</members>
  <name>Profile</name>
 </types>
 <version>50.0</version>
</Package>

即使文件没有引用 OppCustomField__c,由于源跟踪正在跟踪新的自定义字段,因此您的检索 返回 Account 对象上MyCustomField__c自定义字段的配置文件权限 以及 Opportunity 对象上的OppCustomField__c。package.xml

有关检索配置文件的详细信息,请参阅元数据 API 中的配置文件元数据类型 开发人员指南。

注意

尽管源检索不包括文件,但检索请求会返回与 源跟踪。package.xml

解决本地项目与组织之间的冲突

最佳做法是,如果本地项目或 组织,在继续前进之前解决它们。您可以手动解决冲突,也可以覆盖冲突 一个组件的版本与另一个组件。仅当您确定新的 version 是您要使用的版本。

假设你跑步并看到冲突 本地项目与组织中的更改。例如,此命令输出显示具有冲突的更改,但已准备好部署。project deploy previewWidgetClassGizmoClass

sf project deploy preview --target-org DevSandbox

Conflicts [1]. Run the command with the --ignore-conflicts flag to override.
 Type      Fullname    Path                                                    
 ───────── ─────────── ─────────────────────────────────────────────────────── 
 ApexClass WidgetClass force-app/main/default/classes/WidgetClass.cls-meta.xml 

No files will be deleted.

Will Deploy [1] files.
 Type      Fullname   Path                                                   
 ───────── ────────── ────────────────────────────────────────────────────── 
 ApexClass GizmoClass force-app/main/default/classes/GizmoClass.cls-meta.xml 

No files were ignored. Update your .forceignore file if you want to ignore certain files.

如果您尝试实际部署源,Salesforce CLI 会再次报告冲突并停止 完成时的操作。运行 时会看到类似的冲突消息。若要成功部署或检索,请执行以下操作: 首先解决冲突,然后用 已解析的文件。让我们看看这是如何工作的。project retrieve preview

覆盖冲突的更改

如果您确定本地版本是正确的,请覆盖 组织,在以下情况下包含标志 部署。在我们的例子中,因为只有 冲突的更改,让我们首先部署该组件以消除冲突和 然后稍后部署无冲突的源。–ignore-conflictsWidgetClass

sf project deploy start --metadata ApexClass:WidgetClass --ignore-conflicts --target-org DevSandbox

DevSandbox 组织现在具有与本地项目中相同的版本。再次运行时,看不到任何冲突的更改 消息。WidgetClassproject deploy preview

但是,如果您确定组织中的版本是正确的,则通过以下方式覆盖本地副本 检索 DevSandbox 组织版本,同时忽略冲突。WidgetClass

sf project retrieve start --metadata ApexClass:WidgetClass --ignore-conflicts --target-org DevSandbox

您的本地项目现在具有与组织中相同的版本。WidgetClass

干得好,你解决了冲突!现在,无需任何特殊标志即可运行,以完成部署和任何其他新的本地源。project deploy startGizmoClass

sf project deploy start --target-org DevSandbox
Deploying v59.0 metadata to test-ikspctiorkzs@example.com using the v59.0 SOAP API.
Deploy ID: 0Af8D00000pNtEUSA0
Status: Succeeded | ████████████████████████████████████████ | 1/1 Components (Errors:0) | 0/0 Tests (Errors:0)

Deployed Source
=====================================================================================
| State   Name       Type      Path                                                   
| ─────── ────────── ───────── ────────────────────────────────────────────────────── 
| Created GizmoClass ApexClass force-app/main/default/classes/GizmoClass.cls          
| Created GizmoClass ApexClass force-app/main/default/classes/GizmoClass.cls-meta.xml

通过查询 SourceMember 对象获取更改信息

若要详细了解开发人员组织中的源跟踪更改,请查询 SourceMember 工具 API 对象,用于找出进行了哪些更改以及谁进行了更改。Salesforce CLI 使用 SourceMember 对象,以查看组织中作为其源跟踪的一部分所做的更改 功能性。

例如,通过运行类似 这。在此示例中,DevSandbox 是沙盒的用户名或别名。

sf data query --query "SELECT MemberName, MemberType, ChangedBy, RevisionCounter FROM SourceMember" --use-tooling-api --target-org DevSandbox

该查询返回元数据组件的列表。CHANGEDBY 列返回 上次更改组件的人员。REVISIONCOUNTER 列返回组件的 修订号。Salesforce 使用修订计数器来确定哪些实体在 组织。

MEMBERNAME                   MEMBERTYPE    CHANGEDBY        REVISIONCOUNTER
───────────────────────────  ────────────  ───────────────  ───────────────
Account.MyTextField__c       CustomField   0056g000000FDuZ  1
Contact.MyField__c           CustomField   0056g000000FDuZ  11
Admin                        Profile       0051k000002KW4R  54
MyObj1__c-MyObj1 Layout      Layout        0051k000002KW4R  55
Account-Account Layout       Layout        0056g000000FDuZ  33
Contact-Contact Layout       Layout        0056g000000FDuZ  45
MyObj1__c                    CustomObject  0051k000002KW4R  57
TVRemoteControl              ApexClass     0056g000000FDuZ  53

您可以使用此输出来运行其他有用的查询。例如,要获取 上次更改 Apex 类的人,运行 此查询将 ID 从 CHANGEDBY 映射到用户名:TVRemoteControl

sf data query --query "SELECT Id,Username,Name FROM User WHERE Id = '0056g000000FDuZ'" --target-org DevSandbox

结果类似于:

ID                  USERNAME                   NAME
──────────────────  ────────────────────────   ────────────
0056g000000FDuZQAS  dev2@example.com.devsb1    Dev2

可以使用 SourceMember 对象来解决问题。例如,假设您更改 组织中的元数据,但更改未显示在 OR 中。检查 SourceMember 的字段是否记录了该字段 元数据组件正在正确递增。project retrieve previewproject retrieve startRevisionCounter

另一个用例是将源跟踪重置回特定的修订号。

sf project reset tracking --revision 30 --target-org DevSandbox

警告

命令 删除或覆盖所有现有的源跟踪文件。使用时要格外小心。project reset tracking

最佳实践

遵循这些最佳实践,充分利用源跟踪。

在将更改部署到 沙盒

这种做法可帮助其他开发人员合并您的更改并促进 协作。

使用 Git 等版本控制系统查看元数据更改历史记录

使用版本控制系统,您可以对更改进行版本控制、跟踪更改历史记录以及 在升级到其他环境(如沙盒)之前查看元数据更改。

让源跟踪文件恢复同步

如果源跟踪感到困惑并开始报告不准确,您可以使用这些命令恢复同步。 使用哪个命令取决于您最信任的源:如果您信任本地源文件,并且信任 组织。对于任一命令,请指定标志。有关详细信息和示例,请参阅解决本地项目与组织之间的冲突。project deploy|retrieve startproject deploy startproject retrieve start–ignore-conflicts

源跟踪的性能注意事项

源跟踪执行额外的功能来确定对跟踪源的更改 组件,例如运行更多查询并等待 SourceMember Tooling API 对象 部署后更新。因此,某些命令在使用 大中型项目。如果你正在处理小项目,你不会注意到任何 减速。

中型项目具有 30 个或更多组件或 50 个或更多测试。一个有 25 个的项目 组件和 51 项测试被认为是中等的。

大型项目需要 600 个或更多组件或 150 个或更多测试。一个有 610 的项目 组件和 140 次测试被认为是大型的。

如果遇到长时间运行的命令,请将项目分解为较小的命令集 组件,并部署较小的集合。

您还可以在创建临时组织或沙盒时选择退出源跟踪,方法是指定 命令的标志。有关用例,请参阅源跟踪。–no-track-sourceorg create scratch|sandbox

如果在 DevOps Center 中创建临时组织或沙盒以用作开发环境, 不要禁用源跟踪。

临时组织

临时组织是 Salesforce 代码的源代码驱动和一次性部署,并且 元数据。临时组织是完全可配置的,允许开发人员模拟不同的 具有不同功能和设置的 Salesforce 版本。您可以共享临时组织 配置文件,以便你们都拥有相同的基本组织 做你的发展。除了代码和元数据之外,开发人员还可以安装包和 部署合成数据或虚拟数据进行测试。不要将个人数据添加到临时组织。

Scratch 组织在开发过程中提高开发人员的生产力和协作 流程,并促进自动化测试和持续集成。你可以使用 Salesforce CLI 或 IDE,无需登录即可在浏览器中打开临时组织。纺 当您想要执行以下操作时,可以启动新的临时组织:

  • 开始一个新项目。
  • 启动新功能分支。
  • 测试新功能。
  • 开始自动化测试。
  • 直接在组织中执行开发任务。
  • 从“从头开始”使用全新的组织。

源跟踪

源跟踪是指跟踪对本地源文件所做的更改 和组织中的元数据,并使两者保持同步。

默认情况下,临时组织启用了源跟踪。您可以选择退出源 通过指定命令的标志来跟踪创建临时组织的时间。此标志仅影响 您的本地配置,而不是临时组织本身。Salesforce CLI 将本地 作为一部分的配置选项 您向组织提供的授权信息。如果您注销临时组织,并且 然后重新登录,默认情况下会再次启用源跟踪。–no-track-sourceorg create scratchtrackSource: false

如果您处于主动开发模式,我们建议您在 您的 Scratch 组织,以便您可以轻松地在您的组织和本地组织之间同步更改 项目。但是源跟踪会减慢部署和检索速度,因此它是 有时,如果不需要,最好禁用它。以下是一些用例。

  • 您的持续集成 (CI) 脚本只是创建一个临时组织,然后部署 source,运行 Apex 和浏览器测试,然后删除临时组织。
  • 您想为演示、用户验收测试或 调试。
  • 您的测试数据已更改,您希望通过导入数据来确保其正确性 到一个临时组织。但您尚未更改任何元数据或源代码。
  • 你想要安装并验证 CI 构建的包。
  • 您想通过将代码部署到临时组织来测试拉取请求,但您 不打算更改代码。

临时组织创建方法

默认情况下,临时组织为空。它们不包含太多示例元数据 当您注册一个组织(例如 Developer Edition 组织)时,您会得到 传统方式。暂存组织中未包含的一些内容包括:

  • 自定义对象、字段、索引、选项卡和实体定义
  • 示例数据
  • 示例 Chatter 摘要
  • 仪表板和报表
  • 工作流
  • 选择列表
  • 配置文件和权限集
  • Apex 类、触发器和页面

在创建临时组织之前,您必须对其进行配置,使其具有以下功能: 镜像源组织(通常是生产组织)的设置、许可证和限制。 功能、设置、版本、许可证和限制的组合是我们 称为组织的形状。

我们提供以下方法来配置临时组织:

在哪些 Salesforce 实例上创建临时组织?

临时组织是在沙盒实例上创建的。沙盒实例依赖于 创建 Dev Hub 组织时使用的国家/地区信息。

政府云和公有云的临时组织在以下区域创建: 开发人员中心组织位于物理位置。

  • 从政府云中的 Dev Hub 组织创建的临时组织是在 政府云实例。
  • 从公有云中的 Dev Hub 组织创建的临时组织是在公有云上创建的 云实例。

如果您发现临时组织不在预期区域中,请创建一个 Salesforce 支持案例。

临时组织过期政策

临时组织是临时的,与关联的 ActiveScratchOrgs 一起删除 过期后来自 Dev Hub 的记录。此过期过程可确保 团队经常将他们的更改与他们的版本控制系统同步,并且是 使用其项目的最新版本。

Scratch 组织的最长寿命为 30 天。您可以从 1 中选择持续时间 在创建时为 30 天,默认值设置为 7 天。之后 临时组织已过期,您无法恢复它。

注意

删除临时组织不会终止您的临时组织订阅。如果你的 订阅仍处于活动状态,您可以创建新的临时组织。创建一个新的 临时组织将计入您的每日和活动临时组织限制。

  • 支持的临时组织版本和分配
    开发人员中心组织通常是生产组织,可以在以下版本中启用开发人员中心:开发人员版、企业版、无限制版或性能版。开发人员中心版本决定了可以创建多少个临时组织。每次创建临时组织时,您都要选择一个受支持的临时组织版本。
  • 构建您自己的临时组织定义文件 临时组织定义文件
    是临时组织的蓝图。它模拟您在开发生命周期中使用的组织形状,例如沙盒、打包或生产。
  • 基于组织形状
    创建临时组织 我们知道,构建一个反映生产组织中功能和设置的临时组织定义并不容易。使用 Organizational Shape for Scratch Orgs,您可以将构建临时组织定义的工作交给我们。捕获组织的形状后,您可以基于它启动临时组织。
  • 创建临时组织 轻松启动临时组织
    并直接从命令行打开它。
  • 选择临时组织的
    Salesforce 版本 在 Salesforce 版本转换期间,您可以在创建临时组织时指定版本(预览版或上一个版本)。
  • 将源从项目部署到临时组织 更改源后,您可以通过使用命令将更改的源部署到临时组织,从而将更改同步到临时组织
    project deploy start
  • 从 Scratch 组织检索到项目的
    源代码 执行初始部署后,将在本地文件系统和临时组织之间跟踪更改。如果更改临时组织中的元数据,请将这些更改检索到本地项目,以使两者保持同步。
  • 临时组织用户 默认情况下,临时组织包括一个管理员用户
    。管理员用户通常足以满足您的所有测试需求。但有时您需要其他用户使用不同的配置文件和权限集进行测试。
  • 从开发人员中心组织管理临时组织 您可以从开发人员中心组织查看和删除临时组织
    及其关联请求。
  • 临时组织错误代码 如果临时组织创建失败,系统会生成一个错误代码
    ,帮助您确定原因。其中一些错误由 SignupRequest API 生成,并应用于所有组织注册。

支持的 Scratch 组织版本和分配

开发人员中心组织通常是生产组织,可以在其中启用开发人员中心 版本:Developer、Enterprise、Unlimited 或 Performance。开发人员中心版本确定如何 您可以创建许多临时组织。您每次都选择一个受支持的暂存组织版本 您创建了一个临时组织。

支持的 Scratch Org 版本

临时组织的 Salesforce 版本的可能值为:

  • 开发 人员
  • 企业
  • 专业的

注意

合作伙伴可以创建合作伙伴版临时组织:合作伙伴开发人员、合作伙伴企业、 合作伙伴组和合作伙伴专业人员。此功能仅在创建临时时可用 来自合作伙伴业务组织中的开发人员中心的组织。请参阅支持的 Scratch 组织版本 第一代托管打包开发人员指南中的合作伙伴 详。

临时组织具有以下存储限制:

  • 200 MB 数据
  • 50 MB 用于文件

支持的 Dev Hub 版本和关联的临时组织分配

为确保最佳性能,开发人员中心组织版本将确定临时组织 分配。这些分配决定了您每天可以创建多少个临时组织,以及如何创建 许多人可以在给定时间点处于活动状态。

要试用临时组织,请在 Salesforce 上注册 Developer Edition 组织 开发人员,然后启用 Dev 集线器

注意

如果你是合作伙伴或 ISV,则你的临时组织分配可能会有所不同。有关详细信息,请参阅第一代托管打包开发人员指南。

活动暂存组织分配是您可以拥有的最大暂存组织数 在任何给定时间,基于版本类型。如果删除,则分配将变为可用 临时组织或临时组织过期。每日临时组织分配是 您可以在滚动(滑动)中启动的最大成功临时组织创建数 24 小时窗口。分配是根据 中创建的临时组织的数量确定的 前 24 小时。

活动临时组织分配每日 Scratch 组织分配
Developer Edition 或试用版36
企业版4080
无限版100200
性能版100200

列出活跃和每日临时组织

注意

如果您的 Salesforce 管理员使用免费有限访问权限提供了对 Dev Hub 组织的访问权限 license,则您无权运行此命令。请与管理员联系以提供此信息 信息。

要查看您的临时组织分配以及剩余的数量,请在 针对 Dev Hub 组织的终端或命令窗口。仅显示相关限制 ( 和 )。ActiveScratchOrgsDailyScratchOrgs

sf limits api display --target-org <Dev Hub username or alias>
Name                                        Remaining Max       
 ─────────────────────────────────────────── ───────── ───────── 
 ActiveScratchOrgs                           198       200           
...
 DailyScratchOrgs                            400       400           
...

构建您自己的临时组织定义文件

临时组织定义文件是临时组织的蓝图。它模仿了 您在开发生命周期中使用的组织,例如沙盒、打包或生产。

与临时组织关联的设置和配置选项决定了其形状, 包括:

  • 版本 – 临时组织的 Salesforce 版本,例如开发人员、企业、组、 或专业。
  • 附加功能 – 版本中默认不包含的功能。
  • 设置 – 用于配置 Salesforce 产品的组织和功能设置,例如字段 服务和社区。

通过设置不同的临时组织定义文件,您可以轻松创建临时组织 具有不同的形状进行测试。例如,您可以在 通过在定义文件中设置 FieldService 组织首选项来临时组织。如果你想要一个 使用示例数据和元数据的 Scratch 组织 像您习惯的那样,添加此选项:.hasSampleData

我们建议您将此文件保留在项目中,并将其签入到版本控制中 系统。例如,创建一个团队版本,您可以签入该版本供所有团队成员使用。 个人开发人员还可以创建自己的本地版本,其中包括临时组织 定义参数。这些参数的示例包括电子邮件和姓氏,其中 确定谁在创建临时组织。

临时组织定义文件名

在创建临时组织时,指示临时组织配置文件的路径 使用 CLI 命令。org create scratch

  • 如果您在命令行上使用 Salesforce CLI,则可以将此文件命名为 喜欢它并将其放置在 CLI 可以访问的任何位置。
  • 如果您使用的是适用于 VS Code 的 Salesforce 扩展,请确保临时组织 定义文件位于 Salesforce DX 的 config 文件夹中 项目。其名称也必须以 scratch-def.json 结尾。

如果您使用的是示例存储库或创建 Salesforce DX 项目,则示例临时组织 定义文件位于 config 目录中。您可以创建 不同的组织配置或测试方案的不同配置文件。为了方便 标识,将文件命名为描述性名称,例如 devEdition-scratch-def.json 或 packaging-org-scratch-def.json。

临时组织定义文件选项

以下是您可以在临时组织定义文件中指定的选项:

名字必填?默认值(如果未指定)
组织名称公司
国家Dev Hub 所在的国家/地区。如果要覆盖此值,请输入两个字符 大写的 ISO-3166 国家/地区代码(Alpha-2 代码)。您可以找到这些的完整列表 多个站点的代码,例如:https://www.iso.org/obp/ui/#search。这 value 设置临时组织的区域设置。
用户名test-@example.comunique_identifier
admin电子邮件创建临时组织的开发人员中心用户的电子邮件地址 请求
是的没有。有效条目为 Developer、Enterprise、Group 或 Professional
描述没有。2000 个字符的自由格式文本字段。描述是一个很好的方式 记录 Scratch 组织的目的。您可以在 开发人员中心。在应用程序启动器中,选择“临时组织信息”或“活动临时组织”,然后单击临时组织 数。
hasSampleData(哈斯样本数据)有效值为 和 。默认值为 False,用于创建组织 没有样本数据。truefalse
语言国家/地区的默认语言。替代开发人员中心设置的语言 locale,请参阅支持的语言,了解要在 此字段。
特征没有。请参阅 Scratch 组织功能
释放与 Dev Hub 组织相同的 Salesforce 版本。选项为 或 。您只能在 Salesforce 发布期间使用此选项 过渡期。previewprevious
设置没有。有关详细信息,请参阅临时组织设置
对象设置没有。使用 objectSettings 指定对象级共享设置和默认值 记录类型。要在临时组织中成功安装,某些软件包需要 您可以定义对象级共享设置和默认记录类型。这 objectSettings 选项是一个映射。每个键都是对象的小写名称,例如 商机或客户。每个键的定义也是具有两个可能值的映射:sharingModel– 设置共享模型。 不同的对象支持不同的共享模型。共享的可能价值 型号有:privatereadreadWritereadWriteTransferfullAccesscontrolledByParentcontrolledByCampaigncontrolledByLeadOrContentdefaultRecordType– 创建记录类型。 在安装创建记录的包之前,此设置是必需的 类型。指定以小写字母开头的字母数字字符串。
<custom field API name>没有。适用于要跟踪额外信息的 Dev Ops 用例 ScratchOrgInfo 对象。首先,创建自定义字段,然后在 按其 API 名称临时组织定义。
来源组织没有。15 个字符的源组织 ID。仅当您将组织形状用于 Scratch Orgs 创建您的临时组织。请参阅创建临时组织 基于组织形状

样本临时组织定义文件

以下是临时组织定义 JSON 文件的外观。欲了解更多信息 功能和设置,请参阅 Scratch Org 功能

{
  "orgName": "Acme",
  "edition": "Enterprise",
  "features": ["Communities", "ServiceCloud", "Chatbot"],
  "settings": {
      "communitiesSettings": {
          "enableNetworksEnabled": true
      },
      "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
      },
      "omniChannelSettings": {
          "enableOmniChannel": true
      },
      "caseSettings": {
          "systemUserEmail": "support@acme.com"
      }
  }
}

某些功能(如社区)可能需要将功能和设置组合在一起才能 为 Scratch 组织正常工作。此代码片段设置功能和关联的 设置。

"features": ["Communities"],
    "settings": {
        "communitiesSettings": {
          "enableNetworksEnabled": true
      },
        ...

为 ScratchOrgInfo 创建自定义字段

您可以向临时组织定义添加更多选项,以管理 Dev Ops 流程。自 执行此操作,请在 ScratchOrgInfo 对象上创建自定义字段。 (ScratchOrgInfo 跟踪临时组织的创建和删除。

重要

如果您直接在生产组织中进行这些更改,请继续 以适当的谨慎程度。ScratchOrgInfo 对象在 沙盒或临时组织。

在 Dev Hub 组织中,创建自定义字段。

  • 在“设置”中,输入“快速查找”框,然后 选择对象管理器Object Manager
  • 单击“临时组织信息”(Scratch Org Info)。
  • 在“字段和关系”中,单击“新建”。
  • 定义自定义字段,然后单击保存

创建自定义字段后,可以在临时组织定义中向其传递一个值 文件,方法是使用其 API 名称引用它。假设您创建了两个自定义字段,分别称为 workitem 和 release。添加自定义字段和 将值关联到临时组织定义,然后创建临时组织:

{
     "orgName": "MyCompany",
     "edition": "Developer",
     "workitem__c": "W-12345678",
     "release__c": "June 2024 pilot",
     
     "settings": {
         "omniChannelSettings": {
              "enableOmniChannel": true
     }
           }
}

设置对象级共享设置和默认记录类型

若要成功安装,某些包要求定义对象级共享 安装前的设置和默认记录类型。设置共享设置和默认值 带有 的记录类型。在此示例中 临时组织定义文件,我们为 商机和帐户的默认记录类型。objectSettings

{
  "orgName": "MyCompany",
  "edition": "Developer",
  "features": ["Communities", "ServiceCloud", "Chatbot"],
  "settings": {
      "communitiesSettings": {
          "enableNetworksEnabled": true
      }
  }
  "objectSettings": {
     "opportunity": {
        "sharingModel": "private",
        "defaultRecordType": "default"
     },
     "account": {
        "defaultRecordType": "default"
     }
  }
}
  • 临时组织功能
    临时组织定义文件包含用于确定临时组织形状的配置值。您可以在临时组织中启用这些受支持的附加功能。
  • 临时组织设置 临时组织设置
    是在临时组织定义中定义组织首选项的格式。由于您可以使用所有元数据 API 设置,因此它们是配置临时组织的最全面方法。如果某个设置在元数据 API 中受支持,则临时组织也支持该设置。设置为您提供了精细的控制,因为您可以为设置的所有字段定义值,而不仅仅是启用或禁用它。

Scratch Org 功能

临时组织定义文件包含用于确定 临时组织的形状。您可以临时启用这些受支持的附加功能 组织。

注意

某些临时组织功能需要开发人员中心组织中的许可证或权限。如果你 无法仅通过在临时组织中指定功能名称来创建临时组织 定义文件,请咨询您的 Salesforce 管理员以获取帮助。

支持的功能

功能不区分大小写。您可以将它们表示为全大写字母,也可以按照我们的定义表示 它们在这里是为了可读性。如果要素后跟 <value>,则必须指定 作为增量分配或限制的值。您可以在临时组织中以逗号分隔的列表中指定多个特征值 定义 文件。

"features": ["ServiceCloud", "API", "AuthorApex"],
  • AccountingSubledgerGrowthEdition
    提供三个权限集,用于访问“会计子分类帐增长”功能。
  • AccountingSubledgerStarterEdition
    提供三个权限集,用于访问会计子分类帐初学者功能。
  • AccountingSubledgerUser
    在安装包时,允许组织范围内访问会计子分类帐增长功能。
  • AddCustomApps:<value>
    增加组织中允许的自定义应用程序的最大数量。表示 1-30 之间的值。
  • AddCustomObjects:<value>
    增加组织中允许的最大自定义对象数。表示 1-30 之间的值。
  • AddCustomRelationships:<value>
    增加对象上允许的最大自定义关系数。指示 1-10 之间的值。
  • AddCustomTabs:<value>
    增加组织中允许的最大自定义选项卡数。表示 1-30 之间的值。
  • AddDataComCRMRecordCredit:<value>
    增加分配给临时组织中用户的记录导入配额。表示 1-30 之间的值。
  • AddInsightsQueryLimit:<value>
    增加 CRM Analytics 查询结果的大小。表示 1–30 之间的值(乘数为 10)。将数量设置为 6 会使查询结果增加到 60。
  • AdditionalFieldHistory:<value>
    增加可以跟踪历史记录的字段数,超出默认值(即 20 个字段)。指示一个介于 1–40 之间的值。
  • AdmissionsConnectUser
    启用 Admissions Connect 组件。如果没有此临时组织功能参数,自定义 Admissions Connect 组件将呈现为空白。
  • AdvisorLinkFeature
    启用 Student Success Hub 组件。如果没有此临时组织功能参数,自定义学生成功中心组件将呈现为空白。
  • AdvisorLinkPathwaysFeature
    启用 Pathways 组件。如果没有此临时组织功能参数,自定义 Pathways 组件将呈现为空白。
  • AIAttribution 提供对 Einstein Attribution
    for Marketing Cloud Account Engagement 的访问。Einstein Attribution 使用 AI 建模将归因百分比动态分配给多个广告系列接触点。
  • AnalyticsAdminPerms
    启用管理 CRM Analytics 平台所需的所有权限,包括启用创建 CRM Analytics 模板化应用和 CRM Analytics 应用的权限。
  • AnalyticsAppEmbedded
    为 CRM Analytics 平台提供一个 CRM Analytics 嵌入式应用程序许可证。
  • API 即使在不提供 API 访问权限的版本(专业版、组版)中,REST API
    也默认处于启用状态。使用此临时组织功能访问其他 API(SOAP、流式处理、批量处理、批量 2.0)。
  • ArcGraphCommunity
    允许您向 Experience Cloud 页面添加可操作关系中心 (ARC) 组件,以便您的用户可以查看 ARC 关系图。
  • 评估 启用动态评估功能,从而启用评估问题和评估
    问题集。
  • AssetScheduling:<value>
    启用 Asset Scheduling 许可证。Asset Scheduling 使预订房间和设备变得更加容易。指示介于 1–10 之间的值。
  • AssociationEngine
    启用关联引擎,该引擎通过创建分支单元客户记录自动将新帐户与用户的当前分支相关联。
  • AuthorApex 使您能够访问和修改临时组织中的 Apex
    代码。在 Enterprise Edition 和 Developer Edition 中默认启用。
  • B2BCommerce
    提供 B2B 许可证。B2BCommerce 在您的组织中实现企业对企业 (B2B) 商务。创建和更新 B2B 商店。创建和管理买家账户。将产品销售给其他企业。
  • B2BLoyaltyManagement
    启用 B2B 会员管理许可证。创建忠诚度计划并设置特定于忠诚度计划的流程,以便您识别、奖励和留住客户。
  • B2CCommerceGMV
    提供 B2B2C 商业许可证。B2B2C Commerce 允许您快速建立电子商务网站,以推广品牌并将产品销售到多个数字渠道。您可以在组织中创建和更新零售店面,以及创建和管理个人帐户。
  • B2CLoyaltyManagement
    启用 Loyalty Management – Growth 许可证。创建忠诚度计划并设置特定于忠诚度计划的流程,以便您识别、奖励和留住客户。
  • B2CLoyaltyManagementPlus
    启用 Loyalty Management – Advanced 许可证。创建忠诚度计划并设置特定于忠诚度计划的流程,以便您识别、奖励和留住客户。
  • BatchManagement
    启用 Batch Management 许可证。批处理管理允许您在可管理的批处理中处理大量记录。
  • BigObjectsBulkAPI
    使临时组织能够在批量 API 中使用 BigObjects。
  • 公文包 允许在临时组织中使用公文包生成器,这允许您创建脱机公文包
    ,使所选记录可供脱机查看。
  • BudgetManagement
    允许用户访问预算管理功能和对象。要启用预算管理,请将此功能添加到临时组织定义文件中。
  • BusinessRulesEngine
    启用业务规则引擎,该引擎同时启用表达式集和查找表。
  • CacheOnlyKeys
    启用仅缓存密钥服务。此功能允许您将密钥材料存储在 Salesforce 之外,并让仅缓存密钥服务按需从您控制的密钥服务中获取密钥。
  • CalloutSizeMB:<value>
    增加 Apex 标注的最大大小。指示一个介于 3–12 之间的值。
  • CampaignInfluence2
    提供对 Sales Cloud 和 Marketing Cloud 客户参与度的可自定义营销活动影响的访问。可自定义的广告活动影响力可以自动关联或允许在广告活动和机会之间手动创建关系,以跟踪归因。
  • CascadeDelete
    提供具有与以前仅适用于主从关系相同的级联删除功能的查找关系。为了防止记录被意外删除,默认情况下禁用级联删除。
  • CaseClassification
    启用 Einstein 案例分类。案例分类为您的座席提供建议,以便他们选择最佳价值。您还可以自动保存最佳建议并将案例路由到正确的代理。
  • CaseWrapUp
    启用 Einstein 案例总结。为了帮助座席快速完成案例,Einstein Case Wrap-Up 根据过去的聊天记录推荐案例字段值。
  • ChangeDataCapture
    如果临时组织版本未自动启用更改数据捕获,则启用更改数据捕获。
  • 聊天机器人 支持将机器人元数据部署到临时组织中,并允许您创建和编辑机器人
  • ChatterEmailFooterLogo ChatterEmailFooterLogo
    允许您使用徽标图像的文档 ID,您可以使用该 ID 自定义 Chatter 电子邮件。
  • ChatterEmailFooterText ChatterEmailFooterText
    允许您在自定义的 Chatter 电子邮件中使用页脚文本。
  • ChatterEmailSenderName ChatterEmailSenderName
    允许您自定义在电子邮件通知中显示为发件人姓名的名称。例如,您的公司名称。
  • CloneApplication CloneApplication
    允许您克隆现有的自定义 Lightning 应用程序,并对新应用程序进行必要的自定义。这样,您就不必从头开始,尤其是当您想创建具有简单变体的应用程序时。
  • CMSMaxContType
    将您可以在 Salesforce CMS 中创建的不同内容类型的数量限制为 21 种。
  • CMSMaxNodesPerContType
    将可以为特定内容类型创建的最大子节点(字段)数限制为 15。
  • CMSUnlimitedUse
    在 Salesforce CMS 中启用无限的内容记录、内容类型和带宽使用。
  • 社区 允许组织创建客户社区
    。要使用社区,还必须在临时组织定义文件的设置部分中包含 communitiesSettings > enableNetworksEnabled。
  • ConAppPluginExecuteAsUser 启用 ConnectedApp 元数据 API 对象中的 pluginExecutionUser
    字段。
  • ConcStreamingClients:<value>
    增加 API 版本 36.0 及更早版本的所有通道和所有事件类型的并发客户端(订阅者)的最大数量。指示一个介于 20–4,000 之间的值。
  • ConnectedAppCustomNotifSubscription
    使连接的应用能够订阅自定义通知类型,这些通知类型用于发送自定义桌面和移动通知。
  • ConnectedAppToolingAPI
    允许通过工具 API 使用连接的应用。
  • ConsentEventStream
    为组织启用同意事件流权限。
  • ConsolePersistenceInterval:<value>
    增加保存控制台数据的频率(以分钟为单位)。指示一个介于 0–500 之间的值。若要禁用自动保存,请将值设置为 0。
  • ContactsToMultipleAccounts
    启用“联系人到多个帐户”功能。此功能允许您将联系人与两个或多个帐户相关联。
  • ContractApprovals
    启用合同审批,允许您通过审批流程跟踪合同。
  • ContractManagement
    在组织中启用合同生命周期 (CLM) 管理功能。
  • ContractMgmtInd
    为行业启用合同生命周期管理 (CLM) 功能。
  • CPQ 启用安装 Salesforce CPQ
    托管软件包所需的许可功能。不会自动安装包。
  • CustomFieldDataTranslation
    启用“工作类型组”、“服务区域”和“服务资源”对象的自定义字段数据的转换。您可以为具有文本、文本区域、文本区域(长)、文本区域(丰富)和 URL 类型的自定义字段启用数据转换。
  • CustomNotificationType
    允许组织创建自定义通知类型,这些类型用于发送自定义桌面和移动通知。
  • DataComDnbAccounts
    提供 Data.com 帐户功能的许可证。
  • DataComFullClean
    提供 Data.com 清理功能的许可证,并允许用户打开作业的自动填充清理设置。
  • DataMaskUser
    提供 30 个数据掩码权限集许可证。此权限集允许访问已安装的 Salesforce 数据掩码包。
  • DataProcessingEngine
    启用数据处理引擎许可证。数据处理引擎有助于转换 Salesforce 组织中可用的数据,并将转换结果写回为新的或更新的记录。
  • DebugApex 启用 Apex
    交互式调试器。您可以使用它通过设置断点和检查点以及检查代码以查找错误来调试 Apex 代码。
  • DecisionTable
    启用 Decision Table 许可证。决策表读取业务规则,并决定 Salesforce 组织中的记录或您指定的值的结果。
  • DefaultWorkflowUser
    将临时组织管理员设置为默认工作流用户。
  • DeferSharingCalc
    允许管理员暂停组成员身份和共享规则计算,并在以后恢复它们。
  • DevelopmentWave
    支持在临时组织中进行 CRM Analytics 开发。它向组织分配 5 个平台许可证和 5 个 CRM Analytics 平台许可证,并将权限集许可证分配给管理员用户。它还支持 CRM Analytics 模板和 Einstein Discovery 功能。
  • DeviceTrackingEnabled
    启用设备跟踪。
  • DevOpsCenter
    在临时组织中启用 DevOps Center,以便合作伙伴可以创建第二代托管包,以扩展或增强 DevOps Center 应用程序(基本)包中的功能。
  • DisableManageIdConfAPI
    将对 LoginIP 和 ClientBrowser API 对象的访问限制为仅允许查看或删除。
  • DisclosureFramework
    提供配置披露和合规性中心所需的权限集许可证和权限集。
  • 部门 打开“公司设置”下的“管理部门
    ”功能。通过分区,可以将组织的数据划分为逻辑部分,使搜索、报表和列表视图对用户更有意义。分区对于拥有大量数据的组织非常有用。
  • DocGen
    在组织中启用文档生成功能。
  • DocGenDesigner
    使设计人员能够创建和配置文档模板。
  • DocGenInd
    在组织中启用行业文档生成功能。
  • 文档清单 启用文档跟踪和审批功能,并添加文档清单
    权限集。文档跟踪功能允许您定义要上传和批准的文档,从而支持贷款申请或行动计划等流程。
  • DocumentReaderPageLimit
    将发送用于数据提取的页数限制为 5。
  • DSARPortability
    使组织能够访问隐私中心中的 DSARPortability 功能。此外,还提供 PrivacyCenter 和 PrivacyCenterAddOn 许可证各一个席位。
  • DurableClassicStreamingAPI
    为 API 版本 37.0 及更高版本启用 Durable PushTopic 流式处理 API。
  • DurableGenericStreamingAPI
    为 API 版本 37.0 及更高版本启用持久通用流式处理 API。
  • DynamicClientCreationLimit
    允许组织通过动态客户端注册终结点注册最多 100 个 OAuth 2.0 连接的应用程序。
  • EAndUDigitalSales
    在组织中启用能源和公用事业数字销售功能。
  • EAndUSelfServicePortal
    为组织中的数字体验用户启用自助服务门户功能。
  • EAOutputConnectors
    启用 CRM Analytics 输出连接器。
  • EASyncOut 启用 CRM Analytics SyncOut
  • EdPredictionM3Threshold
    将有效负载中的记录数设置为 10,之后 Einstein Discovery 预测服务将使用 M3。
  • EdPredictionTimeout
    将单个 Einstein Discovery 预测的最长持续时间设置为 100 毫秒。
  • EdPredictionTimeoutBulk
    将单个 Einstein Discovery 预测批量运行时的最长持续时间设置为 10 毫秒。
  • EdPredictionTimeoutByomBulk
    将单个自带模型 (BYOM) Einstein Discovery 预测的最长持续时间设置为 100 毫秒。
  • EducationCloud:<value>
    允许使用 Education Cloud。
  • EinsteinAnalyticsPlus
    为 CRM Analytics 平台提供一个 CRM Analytics Plus 许可证。
  • EinsteinArticleRecommendations
    提供 Einstein 文章推荐的许可证。Einstein 文章推荐使用过去案例中的数据来识别最有可能帮助您的客户服务代理解决客户查询的知识文章。
  • EinsteinBuilderFree
    提供许可证,允许管理员使用 Einstein Prediction Builder 创建一个启用的预测。Einstein Prediction Builder 是面向管理员的自定义 AI
  • EinsteinDocReader 提供在临时组织中启用和使用 Intelligent Form Reader 所需的许可证。 Intelligent Form Reader
    使用光学字符识别通过 Amazon Textract 自动提取数据。
  • EinsteinRecommendationBuilder
    提供使用 Einstein Recommendation Builder 创建建议的许可证。Einstein Recommendation Builder 允许您构建自定义 AI 建议。
  • EinsteinRecommendationBuilderMetadata
    使 Einstein Recommendation Builder 能够使用所需的元数据 API。启用此功能后,您可以构建自定义 AI 建议。
  • EinsteinSearch
    提供在临时组织中使用和启用 Einstein Search 功能所需的许可证。
  • EinsteinVisits
    支持消费品云。借助消费品云,转变您与零售渠道合作伙伴的协作方式。使您的销售经理能够计划访问并分析您跨商店的业务健康状况。此外,允许您的现场代表使用 Retail Execution 移动应用程序跟踪库存、接受订单和捕获访问详细信息。
  • EinsteinVisitsED
    启用 Einstein Discovery,可用于获取商店访问建议。借助 Einstein Visits ED,您可以创建访问频率策略,使 Einstein 能够提供最佳的商店访问建议。
  • EmbeddedLoginForIE
    提供支持 IE11 中嵌入式登录的 JavaScript 文件。
  • EmpPublishRateLimit:<value>
    增加每小时发布的标准卷平台事件通知的最大数量。指示一个介于 1,000–10,000 之间的值。
  • EnablePRM
    为组织启用合作伙伴关系管理权限。
  • EnableManageIdConfUI
    允许访问 LoginIP 和 ClientBrowser API 对象,以验证用户在 UI 中的身份。
  • EnableSetPasswordInApi
    使您能够在不提供旧密码的情况下更改密码。sf org generate password
  • EncryptionStatisticsInterval:<value>
    定义加密统计信息收集过程之间的间隔(以秒为单位)。最大值为 604,800 秒(7 天)。默认值为每 86,400 秒(24 小时)一次。
  • EncryptionSyncInterval:<value>
    定义组织将数据与活动密钥材料同步的频率(以秒为单位)。默认值和最大值为 604,800 秒(7 天)。若要更频繁地同步数据,请指示一个等于或大于 0 的值(以秒为单位)。
  • EnergyAndUtilitiesCloud
    在组织中启用 Energy and Utilities Cloud 功能。
  • 权利
    启用权利。权利是 Salesforce 中的客户支持单位,例如电话支持或 Web 支持,代表服务协议中的条款。
  • EventLogFile
    允许对组织的事件日志文件进行 API 访问。事件日志文件包含有关组织操作事件的信息,您可以使用这些信息来分析使用趋势和用户行为。
  • EntityTranslation
    启用“工作类型组”、“服务区域”和“服务资源”对象的字段数据转换。
  • ExpressionSetMaxExecPerHour
    使用 Connect REST API 使组织每小时最多可以运行 500,000 个表达式集。
  • ExternalIdentityLogin
    :允许临时组织使用与您的外部身份许可证关联的 Salesforce 客户身份功能。
  • FieldAuditTrail
    为组织启用现场审计跟踪,并允许总共 60 个跟踪字段。默认情况下,所有组织都会跟踪 20 个字段,另外 40 个字段会使用“现场审计跟踪”进行跟踪。
  • FieldService:<value>
    提供 Field Service 许可证。指示一个介于 1–25 之间的值。
  • FieldServiceAppointmentAssistantUser:<value>
    添加 Field Service 约会助理权限集许可证。指示一个介于 1–25 之间的值。
  • FieldServiceDispatcherUser:<value>
    添加 Field Service Dispatcher 权限集许可证。指示一个介于 1–25 之间的值。
  • FieldServiceLastMileUser:<value>
    添加 Field Service 最后一英里权限集许可证。指示一个介于 1–25 之间的值。
  • FieldServiceMobileExtension:<value>
    添加 Field Service Mobile Extension 权限集许可证。
  • FieldServiceMobileUser:<value>
    添加 Field Service Mobile 权限集许可证。指示一个介于 1–25 之间的值。
  • FieldServiceSchedulingUser:<value>
    添加 Field Service 计划权限集许可证。指示一个介于 1–25 之间的值。
  • FinanceLogging 将 Finance Logging
    对象添加到临时组织。Finance Logging 需要此功能。
  • FinancialServicesCommunityUser:<value>
    添加金融服务保险社区权限集许可证,并允许访问金融服务保险社区组件和对象。指示介于 1–10 之间的值。
  • FinancialServicesInsuranceUser:<value>
    添加金融服务保险权限集许可证,并允许访问金融服务保险组件和对象。指示介于 1–10 之间的值。
  • FinancialServicesUser:<value>
    添加 Financial Services Cloud Standard 权限集许可证。此权限集允许访问 Lightning 组件和 Financial Services Cloud 的标准版本。还提供对标准 Salesforce 对象和自定义 Financial Services Cloud 对象的访问。指示介于 1–10 之间的值。
  • FlowSites 允许在 Salesforce Sites
    和客户门户中使用流。
  • ForceComPlatform
    添加一个 Salesforce Platform 用户许可证。
  • FSCAlertFramework
    使金融服务云记录警报实体在临时组织中可访问。
  • FSCServiceProcess
    启用 Financial Service Cloud 的 Service Process Studio 功能。提供 IndustriesServiceExcellenceAddOn 和 FinancialServicesCloudStardardAddOn 许可证各 10 个席位。若要启用该功能,还必须在安装程序中打开 StandardServiceProcess 设置,并授予用户 AccessToServiceProcess 权限。
  • 筹款
    允许用户访问 Salesforce 中用于筹款功能和对象的 Nonprofit Cloud。
  • GenericStreaming
    为 API 版本 36.0 及更早版本启用通用流式处理 API。
  • GenStreamingEventsPerDay:<value>
    增加 24 小时内传递的事件通知的最大数量,由所有 CometD 客户端共享,并使用 API 版本 36.0 及更早版本的通用流式处理。指示一个介于 10,000–50,000 之间的值。
  • 授权
    允许用户访问 Salesforce 和 Experience Cloud 中的授权功能和对象。
  • HealthCloudAddOn
    允许使用 Health Cloud。
  • HealthCloudEOLOverride
    Salesforce 在 22 年春季停用了 Health Cloud CandidatePatient 对象,以专注于更强大的 Lead 对象。此临时组织功能允许您覆盖该停用并访问对象。
  • HealthCloudForCmty
    允许将 Health Cloud 用于 Experience Cloud 站点。
  • HealthCloudMedicationReconciliation
    允许药物管理支持药物对账。
  • HealthCloudPNMAddOn
    允许使用提供商网络管理。
  • HealthCloudUser
    :这使临时组织能够使用与一个用户的 Health Cloud 权限集许可证等效的 Health Cloud 对象和功能。
  • HighVelocitySales
    提供 Sales Engagement 许可证并启用 Salesforce 收件箱。Sales Engagement 通过高生产力工作区优化内部销售流程。销售经理可以创建自定义销售流程,指导销售代表处理不同类型的潜在客户。销售代表可以通过优先级列表和其他提高生产力的功能快速处理潜在客户。Sales Engagement 功能可以部署在临时组织中,但无法通过临时组织定义文件更新该功能的设置。相反,请直接在 Sales Engagement 应用中配置设置。
  • HoursBetweenCoverageJob:<value>
    可以为对象运行共享继承覆盖率报告的频率(以小时为单位)。指示一个介于 1–24 之间的值。
  • IdentityProvisioningFeatures
    允许使用 Salesforce Identity 用户配置。
  • IgnoreQueryParamWhitelist
    忽略查询参数筛选规则的白名单规则。如果启用,则可以向 URL 添加任何查询参数。
  • IndustriesActionPlan
    为行动计划提供许可证。行动计划允许您定义用于完成业务流程的任务或文档清单项。
  • 行业分支机构管理 分支机构管理
    允许分支机构经理和管理员在金融服务云中跟踪分支机构、员工和客户群的工作输出。
  • IndustriesCompliantDataSharing
    授予用户访问参与者管理和数据共享高级配置的权限,以提高对法规和公司政策的合规性。
  • IndustriesMfgTargets
    支持销售协议。通过销售协议,您可以在持续的一段时间内协商产品的购买和销售。您还可以深入了解产品、价格、折扣和数量。您可以通过订单和合同的实时更新来跟踪您的计划和实际数量和收入。
  • IndustriesManufacturingCmty
    为社区权限集许可证提供制造销售协议,该协议旨在供合作伙伴社区用户使用。它还为管理员用户提供对制造社区模板的访问权限,以创建社区。
  • IndustriesMfgAccountForecast
    启用帐户预测。借助 Account Forecast,您可以根据订单、商机和销售协议生成帐户预测。您还可以创建公式来根据公司的要求计算预测。
  • InsightsPlatform
    为CRM Analytics启用CRM Analytics Plus许可证。
  • InsuranceCalculationUser
    启用 Insurance 的计算功能。BRERuntimeAddOn 和 OmniStudioRuntime 许可证各提供 10 个席位。此外,还提供 OmniStudio 和 BREPlatformAccess 许可证各一个席位。
  • InsuranceClaimMgmt
    启用理赔管理功能。提供 InsuranceClaimMgmtAddOn 许可证的一个席位。
  • InsurancePolicyAdmin
    启用保单管理功能。提供 InsurancePolicyAdministrationAddOn 许可证的一个席位。
  • IntelligentDocumentReader 提供在临时组织中启用和使用 Intelligent Document Reader 所需的许可证。 Intelligent Document Reader
    使用光学字符识别,通过您的 AWS 账户通过 Amazon Textract 自动提取数据。
  • 交互
    启用流。流是 Salesforce Flow 的一部分,用于在您的 Salesforce 组织或外部系统中收集数据并执行操作。Salesforce Flow 提供两种类型的流:屏幕流和自动启动流。
  • IoT 启用 IoT
    ,以便临时组织可以使用平台事件,使用编排和上下文来执行业务和服务工作流。
  • JigsawUser
    为 Jigsaw 功能提供一个许可证。
  • 知识
    启用 Salesforce 知识,并为您的网站访问者、客户、合作伙伴和服务代理提供终极支持工具。使用您的公司信息创建和管理知识库,并在需要时随时随地安全地共享它。构建文章知识库,其中可以包含有关流程的信息,例如如何将产品重置为默认值或常见问题。
  • LegacyLiveAgentRouting
    为 Chat 启用旧版 Live Agent 路由。使用 Live Agent 路由在 Salesforce Classic 中聊天。Lightning Experience 中的聊天必须使用全渠道进行路由。
  • LightningSalesConsole 添加一个 Lighting Sales Console
    用户许可证。
  • LightningScheduler 启用 Lightning Scheduler
    。Lightning Scheduler 为您提供了简化 Salesforce 中约会安排的工具。通过安排客户约会(亲自、通过电话或视频)在正确的地点和时间与正确的人约会,创造个性化的体验。
  • LightningServiceConsole
    将 Lightning 服务控制台许可证分配给您的临时组织,以便您可以使用 Lightning 服务控制台并访问有助于更快地管理案例的功能。
  • LiveAgent
    为 Service Cloud 启用聊天功能。使用基于 Web 的聊天功能,快速将客户与座席联系起来,以获得实时支持。
  • LiveMessage
    为 Service Cloud 启用消息传递。使用“消息传递”快速支持使用 SMS 文本消息和 Facebook Messenger 等应用的客户。
  • LongLayoutSectionTitles
    允许页面布局部分标题最多为 80 个字符。
  • LoyaltyAnalytics
    启用 Analytics for Loyalty 许可证。Analytics for Loyalty 应用程序为您提供有关忠诚度计划的可操作见解。
  • LoyaltyEngine
    启用 Loyalty Management Promotion Setup 许可证。促销设置允许忠诚度计划经理创建忠诚度计划流程。忠诚度计划流程可帮助您决定如何处理传入和新的应计和兑换类型的交易。
  • LoyaltyManagementStarter 启用 Loyalty Management – Starter
    许可证。创建忠诚度计划并设置特定于忠诚度计划的流程,以便您识别、奖励和留住客户。
  • LoyaltyMaximumPartners:<value>
    在启用了 Loyalty Management – Starter 许可证的组织中,增加可与会员计划关联的会员计划合作伙伴的数量。默认值和最大值为 1。
  • LoyaltyMaximumPrograms:<value>
    增加在启用了 Loyalty Management – Starter 许可证的组织中可以创建的会员计划的数量。默认值和最大值为 1。
  • LoyaltyMaxOrderLinePerHour:<value>
    增加会员计划进程每小时可累计处理的订单行数。指示介于 1–3,500,000 之间的值。
  • LoyaltyMaxProcExecPerHour:<value>
    增加会员计划进程每小时可处理的交易日记帐数。指示介于 1–500,000 之间的值。
  • LoyaltyMaxTransactions:<value>
    增加可处理的事务日记记录数。指示介于 1–50,000,000 之间的值。
  • LoyaltyMaxTrxnJournals:<value>
    增加在启用了 Loyalty Management – Start 许可证的组织中可存储的事务日记记录数。
  • 宏 在临时组织中启用
    。启用宏后,将宏浏览器添加到 Lightning 控制台,以便您可以为常用操作配置预定义指令,并同时将它们应用于多个帖子。
  • MarketingUser
    提供对 Campaigns 对象的访问。如果没有此设置,广告系列将处于只读状态。
  • MaxActiveDPEDefs:<value>
    增加可在组织中激活的数据处理引擎定义数。指示一个介于 1–50 之间的值。
  • MaxApexCodeSize:<value>
    限制非测试、非托管 Apex 代码大小(以 MB 为单位)。要使用大于默认值 10 的值,请联系 Salesforce 客户支持。
  • MaxAudTypeCriterionPerAud
    限制每个访问群体可用的访问群体类型条件数。默认值为 10。
  • MaxCustomLabels:<value>
    限制自定义标签的数量(以千为单位)。将限制设置为 10 可使临时组织拥有 10,000 个自定义标签。指示一个介于 1–15 之间的值。
  • MaxDatasetLinksPerDT:<value>
    增加可与决策表关联的数据集链接数。指示一个介于 1–3 之间的值。
  • MaxDataSourcesPerDPE:<value>
    增加数据处理引擎定义可以包含的源对象节点数。指示一个介于 1–50 之间的值。
  • MaxDecisionTableAllowed:<value>
    增加可在组织中创建的决策表规则数。指示一个介于 1–30 之间的值。
  • MaxFavoritesAllowed:<value>
    增加允许的收藏夹数。收藏夹允许用户创建 Salesforce 页面的快捷方式。用户可以通过单击标题中的“收藏夹”列表下拉列表来查看其收藏夹。指示一个介于 0–200 之间的值。
  • MaxFieldsPerNode:<value>
    增加数据处理引擎定义中的节点可以包含的字段数。指示一个介于 1–500 之间的值。
  • MaxInputColumnsPerDT:<value>
    增加决策表可以包含的输入字段数。指示介于 1–10 之间的值。
  • MaxLoyaltyProcessRules:<value>
    增加可在组织中创建的会员计划流程规则的数量。指示一个介于 1–20 之间的值。
  • MaxNodesPerDPE:<value>
    增加数据处理引擎定义可以包含的节点数。指示一个介于 1–500 之间的值。
  • MaxNoOfLexThemesAllowed:<value>
    增加允许的主题数。主题允许用户配置颜色、字体、图像、大小等。在“设置”中的“主题和品牌”下访问“主题”列表。指示一个介于 0–300 之间的值。
  • MaxOutputColumnsPerDT:<value>
    增加决策表可以包含的输出字段数。指示一个介于 1–5 之间的值。
  • MaxSourceObjectPerDSL:<value>
    增加可在决策表的数据集链接中选择的源对象数。指示一个介于 1–5 之间的值。
  • MaxStreamingTopics:<value>
    增加 24 小时内传递的 PushTopic 事件通知的最大数量,由所有 CometD 客户端共享。指示一个介于 40–100 之间的值。
  • MaxUserNavItemsAllowed:<value>
    增加用户可以添加到导航栏的导航项数。指示一个介于 0–500 之间的值。
  • MaxUserStreamingChannels:<value>
    增加通用流式处理的最大用户定义通道数。指示一个介于 20–1,000 之间的值。
  • MaxWritebacksPerDPE:<value>
    增加数据处理引擎定义可以包含的写回对象节点数。指示一个介于 1–50 之间的值。
  • MedVisDescriptorLimit:<value>
    增加每条记录允许的共享定义数,以便将共享继承应用于对象。指示一个介于 150–1,600 之间的值。
  • MinKeyRotationInterval
    设置每 60 秒一次的加密密钥材料轮换间隔。如果未指定此功能,则搜索索引密钥材料的轮换间隔默认为每 604,800 秒(7 天)一次,对于所有其他密钥材料,轮换间隔默认为每 86,400 秒(24 小时)一次。
  • MobileExtMaxFileSizeMB:<value>
    增加 Field Service Mobile 扩展的文件大小(以 MB 为单位)。指示一个介于 1–2,000 之间的值。
  • MobileSecurity
    支持增强的移动安全性。借助增强的移动安全,您可以控制一系列策略,以创建适合您组织需求的安全解决方案。您可以根据操作系统版本、应用版本以及设备和网络安全来限制用户访问。您还可以指定违规的严重性。
  • MultiLevelMasterDetail
    允许在一个对象(子对象或细节)与另一个对象(父对象或主对象)之间创建特殊类型的父子关系。
  • MutualAuthentication
    需要客户端证书来验证相互身份验证的入站请求。
  • MyTrailhead 允许访问 Scratch 组织中的 myTrailhead
    启用站点。
  • NonprofitCloudCaseManagementUser
    提供使用和配置 Salesforce.org Nonprofit Cloud Case Management 托管包所需的权限集许可证。然后,您可以在临时组织中安装该软件包。
  • NumPlatformEvents:<value>
    增加可以创建的最大平台事件定义数。指示介于 5–20 之间的值。
  • ObjectLinking
    创建规则以快速将渠道交互链接到客户的联系人、潜在顾客或个人帐户等对象(测试版)。
  • OrderManagement
    提供 Salesforce 订单管理许可证。订单管理是处理订单生命周期各个方面的中心枢纽,包括订单捕获、履行、运输、付款处理和服务。
  • OrderSaveLogicEnabled
    启用对新订单保存行为的暂存组织支持。
  • OrderSaveBehaviorBoth
    为“新订单保存行为”和“旧订单保存行为”启用临时组织支持。
  • OutboundMessageHTTPSession
    允许在选择了“发送会话 ID”选项的出站消息定义中使用 HTTP 终结点 URL。
  • OutcomeManagement
    允许用户访问 Salesforce 中的结果管理功能和对象。
  • PardotScFeaturesCampaignInfluence
    为 Pardot 用户启用额外的活动影响模型、首次接触、最后一次接触甚至分发。
  • PersonAccounts
    在临时组织中启用个人帐户。
  • PipelineInspection
    支持管道检测。管道检测是一个整合的管道视图,其中包含指标、机会和最近更改的亮点。
  • PlatformCache
    启用平台缓存并分配 3 MB 缓存。Lightning 平台缓存层在缓存 Salesforce 会话和组织数据时提供更快的性能和更好的可靠性。
  • PlatformConnect:<value>
    启用 Salesforce Connect,并允许用户查看、搜索和修改存储在 Salesforce 组织外部的数据。指示 1-5 之间的值。
  • PlatformEncryption
    Shield 平台加密对静态数据进行加密。您可以管理密钥材料并加密字段、文件和其他数据。
  • PlatformEventsPerDay:<value>
    增加所有 CometD 客户端共享的 24 小时内传递的标准卷平台事件通知的最大数量。指示一个介于 10,000–50,000 之间的值。
  • ProcessBuilder
    支持 Process Builder,这是一种 Salesforce Flow 工具,可帮助您实现业务流程自动化。
  • ProductsAndSchedules
    在临时组织中启用产品计划。启用此功能后,您可以为产品创建默认产品明细表。用户还可以在商机上为单个产品创建计划。
  • ProgramManagement
    允许访问所有 Program Management 和 Case Management 功能和对象。
  • ProviderFreePlatformCache
    为经过安全审查的托管软件包提供 3 MB 的免费平台缓存容量。此功能通过称为“无提供者容量”的容量类型提供,并在 Developer Edition 组织中自动启用。将 Provider Free 容量分配给 Platform Cache 分区,并将其添加到托管包中。
  • PublicSectorAccess
    允许访问所有公共部门功能和对象。
  • PublicSectorApplicationUsageCreditsAddOn
    根据公共部门应用程序的定价启用其他使用。
  • PublicSectorSiteTemplate
    允许公共部门用户访问从可用模板构建 Experience Cloud 站点。
  • RecordTypes
    启用记录类型功能。记录类型允许您向不同的用户提供不同的业务流程、选择列表值和页面布局。
  • RefreshOnInvalidSession
    启用在用户会话无效时自动刷新 Lightning 页面。但是,如果页面检测到新令牌,它会尝试设置该令牌并继续而不刷新。
  • RevSubscriptionManagement
    启用订阅管理。订阅管理是一种 API 优先、产品到现金的解决方案,适用于 B2B 订阅和一次性销售。
  • S1ClientComponentCacheSize
    允许组织为 Lightning 组件提供最多 5 页的缓存。
  • SalesCloudEinstein 启用 Sales Cloud Einstein
    功能和 Salesforce 收件箱。Sales Cloud Einstein 将 AI 引入销售流程的每一步。
  • SalesforceContentUser
    允许访问 Salesforce 内容功能。
  • SalesforceFeedbackManagementStarter 提供使用 Salesforce Feedback Management – Starter
    功能的许可证。
  • SalesforceIdentityForCommunities
    将 Salesforce Identity 组件(包括登录和自助注册)添加到 Experience Builder。此功能是 Aura 组件所必需的。
  • SalesUser
    提供 Sales Cloud 功能的许可证。
  • SAML20SingleLogout
    允许使用 SAML 2.0 单点注销。
  • SCIMProtocol
    启用对 SCIM 协议基 API 的访问支持。
  • SecurityEventEnabled
    允许访问事件监视中的安全事件。
  • SentimentInsightsFeature
    提供在临时组织中启用和使用 Sentiment Insights 所需的许可证。 使用 Sentiment Insights 分析客户的情绪,并获取可操作的见解来改进它。
  • ServiceCatalog
    启用员工服务目录,以便您可以为员工创建产品和服务目录。它还可以将员工对这些产品和服务的要求转化为已批准和记录的订单。
  • ServiceCloud
    将 Service Cloud 许可证分配给您的临时组织,因此您可以选择客户与您联系的方式,例如通过电子邮件、电话、社交媒体、在线社区、聊天和短信。
  • ServiceCloudVoicePartnerTelephony 将 Service Cloud Voice with Partner Telephony
    附加许可证分配给您的临时组织,以便您可以设置与支持的电话提供商集成的 Service Cloud Voice 联络中心。表示 1–50 之间的值。
  • ServiceUser
    添加一个 Service Cloud 用户许可证,并允许访问 Service Cloud 功能。
  • SessionIdInLogEnabled
    使 Apex 调试日志能够包含会话 ID。如果禁用,则在调试日志中将会话 ID 替换为“SESSION_ID_REMOVED”。
  • SFDOInsightsDataIntegrityUser
    提供 Insights Platform 数据完整性托管包 Salesforce.org 许可证。然后,您可以在临时组织中安装该软件包。
  • SharedActivities
    允许用户将多个联系人与任务和事件相关联。
  • 站点
    启用 Salesforce 站点,允许您创建直接与您的 Salesforce 组织集成的公共网站和应用程序。用户无需使用用户名和密码登录。
  • SocialCustomerService
    启用 Social Customer Service,设置帖子默认值,然后激活 Starter Pack 或登录 Social Studio 帐户。
  • StateAndCountryPicklist
    启用州和国家/地区选择列表。省/市/自治区/直辖
  • StreamingAPI
    启用流式处理 API。
  • StreamingEventsPerDay:<value>
    增加 24 小时内传递的 PushTopic 事件通知的最大数量,由所有 CometD 客户端共享(API 版本 36.0 及更早版本)。指示一个介于 10,000–50,000 之间的值。
  • SubPerStreamingChannel:<value>
    增加每个通用流式处理通道(API 版本 36.0 及更早版本)的最大并发客户端(订阅者)数。指示一个介于 20–4,000 之间的值。
  • SubPerStreamingTopic:<value>
    增加每个 PushTopic 流式处理通道(API 版本 36.0 及更早版本)的最大并发客户端(订阅者)数。指示一个介于 20–4,000 之间的值。
  • SurveyAdvancedFeatures
    为 Salesforce Feedback Management – Growth 许可证提供的功能启用许可证。
  • SustainabilityCloud
    提供安装和配置 Sustainability Cloud 所需的权限集许可证和权限集。要启用或使用 CRM Analytics 和 CRM Analytics 模板,请包括 DevelopmentWave 临时组织功能。
  • SustainabilityApp
    提供配置 Net Zero Cloud 所需的权限集许可证和权限集。若要启用或使用 Tableau CRM 和 Tableau CRM 模板,请包括 DevelopmentWave 临时组织功能。
  • TCRMforSustainability
    通过启用 Tableau CRM,启用管理 Net Zero Analytics 应用所需的所有权限。您可以为用户创建和共享分析应用程序,以使您的环境会计与您的财务会计保持一致。
  • TimelineConditionsLimit
    将每个事件类型的时间轴记录显示条件数限制为 3。
  • TimelineEventLimit
    将时间轴上显示的事件类型数限制为 5 个。
  • TimelineRecordTypeLimit
    将每个事件类型的相关对象记录类型数限制为 3。
  • TimeSheetTemplateSettings
    使用时间表模板可以配置设置以自动创建时间表。例如,您可以创建一个设置开始日期和结束日期的模板。将模板分配给用户配置文件,以便为正确的用户创建时间表。
  • TransactionFinalizers
    使您能够实现 Apex 终结器并将其附加到可排队的 Apex 作业。
  • WaveMaxCurrency
    增加 CRM Analytics 支持的最大货币数。指示一个介于 1–5 之间的值。
  • WavePlatform
    启用 Wave Platform 许可证。
  • 工作流 启用工作流
    ,以便您可以自动执行标准的内部过程和流程。
  • WorkflowFlowActionFeature
    允许您从工作流操作启动流。
  • WorkplaceCommandCenterUser
    允许访问 Workplace Command Center 功能,包括访问 Employee、Crisis 和 EmployeeCrisisAssessment 等对象。
  • WorkThanksPref
    启用 Chatter 中的感恩功能。

会计SubledgerGrowthEdition

提供三个权限集,允许访问会计子分类帐增长 特征。

更多信息

要求您在临时记录中还包括 DataProcessingEngine 临时组织功能 组织定义文件。要求您启用 Data Pipelines。需要使用 临时组织中的“设置”菜单。请参阅《记帐子分类帐》中的“会计子分类账”。 Salesforce 帮助。

会计SubledgerStarterEdition

提供三个权限集,允许访问 Accounting Subledger Starter 特征。

更多信息

要求您在临时记录中还包括 DataProcessingEngine 临时组织功能 组织定义文件。要求您启用 Data Pipelines。需要使用 临时组织中的“设置”菜单。请参阅《记帐子分类帐》中的“会计子分类账”。 Salesforce 帮助。

会计SubledgerUser

允许在包包时在组织范围内访问会计子分类帐增长功能 已安装。

更多信息

要求您安装“会计子分类账”或“行业会计子分类账” 托管包。如果安装 Accounting Subledger 软件包,还要设置 Opportunity 对象。请参阅《记帐子分类账旧版文档》中的《记帐子分类账旧版文档》。 Salesforce 帮助。

AddCustomApps:<值>

增加组织中允许的自定义应用程序的最大数量。指示以下位置的值 1–30.支持的数量1–30,乘数:1

AddCustomObjects:<值>

增加组织中允许的最大自定义对象数。指示以下位置的值 1–30.支持的数量1–30,乘数:1

AddCustomRelationships:<值>

增加对象上允许的最大自定义关系数。表示一个 值从 1 到 10。支持的数量1–10,乘数:5

AddCustomTabs:<值>

增加组织中允许的最大自定义选项卡数。指示以下位置的值 1–30.支持的数量1–30,乘数:1

AddDataComCRMRecordCredit:<值>

增加分配给临时组织中用户的记录导入配额。指示一个值 从 1 到 30。支持的数量1–30,乘数:1

AddInsightsQueryLimit:<值>

增加 CRM Analytics 查询结果的大小。表示 1-30 之间的值 (乘数为 10)。将数量设置为 6 会增加 查询结果为 60。支持的数量1–30,乘数:10

AdditionalFieldHistory:<值>

增加可以跟踪历史记录的字段数,超出默认值(20) 领域。指示一个介于 1–40 之间的值。支持的数量1–40,乘数:1更多信息

以前的名称:AddHistoryFieldsPerEntity。

招生连接用户

启用 Admissions Connect 组件。如果没有此临时组织功能参数, 自定义 Admissions Connect 组件呈现为空白。

临时组织定义文件

将这些选项添加到临时组织定义中 文件:

"{
    ""orgName"": ""Omega - Dev Org"",
    ""edition"": ""Partner Developer"",
    ""hasSampleData"": ""true"",
    ""features"": [""DevelopmentWave"", ""AdmissionsConnectUser"",  ""Communities"", ""OmniStudioDesigner"", ""OmniStudioRuntime""],
    ""settings"": {
        ""lightningExperienceSettings"": {
            ""enableS1DesktopEnabled"": true
        },
        ""chatterSettings"": {
            ""enableChatter"": true
        },
        ""languageSettings"": {
            ""enableTranslationWorkbench"": true
        },
        ""enhancedNotesSettings"": {
            ""enableEnhancedNotes"": true
        },
        ""pathAssistantSettings"": {
            ""pathAssistantEnabled"": true
        },
        ""securitySettings"": {
            ""enableAdminLoginAsAnyUser"":true
        },
        ""userEngagementSettings"": {
            ""enableOrchestrationInSandbox"": true,
            ""enableOrgUserAssistEnabled"": true,
            ""enableShowSalesforceUserAssist"": false
        },
        ""experienceBundleSettings"": {
            ""enableExperienceBundleMetadata"": true
        },
        ""communitiesSettings"": {
            ""enableNetworksEnabled"": true,
            ""enableOotbProfExtUserOpsEnable"": true
        },
        ""mobileSettings"": {
            ""enableS1EncryptedStoragePref2"": false
        }
    }
}"

更多信息

接下来,在临时组织中安装 Admissions Connect 软件包。用于安装 说明,请参阅在 Salesforce 中安装 Admissions Connect 帮助。

AdvisorLink功能

启用学生成功中心组件。如果没有此临时组织功能参数, 自定义学生成功中心组件呈现为空白。

临时组织定义文件

将以下选项添加到临时组织定义文件中:

"{
  "edition": "Partner Developer",
  "features": ["Communities","FeatureParameterLicensing","AdvisorLinkFeature"],
  "orgName": "SAL - Dev Workspace",
  "hasSampleData": "true",
  "settings": {
    "chatterSettings": {
      "enableChatter": true
    },
    "communitiesSettings": {
      "enableNetworksEnabled": true,
      "enableOotbProfExtUserOpsEnable": true
    },
    "enhancedNotesSettings": {
      "enableEnhancedNotes": true
    },
    "experienceBundleSettings": {
      "enableExperienceBundleMetadata": true
    },
    "lightningExperienceSettings": {
      "enableS1DesktopEnabled": true
    },
    "mobileSettings": {
      "enableS1EncryptedStoragePref2": false
    },
    "languageSettings": {
      "enableTranslationWorkbench": true
    },
    "securitySettings": {
        "enableAdminLoginAsAnyUser":true
    }
  }
}"

更多信息

接下来,在临时组织中安装 Student Success Hub 软件包。有关设置说明, 请参阅 Salesforce 帮助中的安装 Student Success Hub

AdvisorLinkPathways功能

启用 Pathways 组件。如果没有此临时组织功能参数,则自定义 路径组件呈现为空白。

临时组织定义文件

将这些选项添加到您的临时组织 定义文件:

"{"orgName": "Pathways - Dev Org",
"edition": "Partner Developer",
"features": ["Communities","FeatureParameterLicensing","AdvisorLinkFeature","AdvisorLinkPathwaysFeature"],
"settings": {
"chatterSettings": {
"enableChatter": true
},
"enhancedNotesSettings": {
"enableEnhancedNotes": true
},
"communitiesSettings": {
"enableNetworksEnabled": true
},
"languageSettings": {
"enableTranslationWorkbench": true
},
"lightningExperienceSettings": {
"enableS1DesktopEnabled": true
},
"mobileSettings": {
"enableS1EncryptedStoragePref2": false
}
}
}"

更多信息

接下来,在暂存中安装 Pathways 软件包 组织。有关设置说明,请参阅 Salesforce 帮助中的设置路径

AI归因

提供对 Einstein Attribution for Marketing Cloud 帐户的访问权限 婚约。Einstein Attribution 使用 AI 建模来动态分配归因百分比 到多个活动接触点。样本临时组织定义文件在启用 Einstein Attribution 之前,请确保将 和 设置为 。enableAIAttributionenableCampaignInfluence2true

{
  "orgName": "NTOutfitters",
  "edition": "Enterprise",
  "features": ["AIAttribution"],
  "settings": {
    "campaignSettings": {
        "enableAIAttribution": true
        "enableCampaignInfluence2": true

    }
}

更多信息

此功能在 Account Engagement Advanced 和 Premium 版本中可用。

可选的配置步骤可在临时组织的“设置”中访问。查看更多 信息,请参阅 Salesforce 帮助:Einstein 归因

分析管理Perms

启用管理 CRM Analytics 平台所需的所有权限,包括 启用创建 CRM Analytics 模板化应用和 CRM 的权限 分析应用。更多信息

请参阅设置 CRM Analytics Salesforce 帮助中的平台了解更多信息 信息。

AnalyticsApp嵌入式

为 CRM Analytics 提供一个 CRM Analytics 嵌入式应用程序许可证 平台。

应用程序接口

即使在不提供 API 访问的版本(专业版、组版)中,REST API 也是 默认启用。使用此暂存组织功能访问 其他 API(SOAP、流式处理、批量、批量 2.0)。更多信息

查看 Salesforce 版本 API 访问以获取更多信息。

ArcGraph社区

允许您将可操作关系中心 (ARC) 组件添加到 Experience Cloud 页面,以便 您的用户可以查看 ARC 关系图。更多信息

提供 1 个席位的 FinancialServicesEALoginAddon 附加许可证。

要求您安装 Financial Services Cloud。请参阅《Financial Services Cloud 管理员指南》中的使用 ARC 组件自定义 Experience Cloud 模板

评估

启用动态评估功能,从而启用评估问题和 评估问题集。更多信息将这些选项添加到临时组织功能定义中 文件。对于“版本”,您可以指明 支持的临时组织功能 版本。

{
  "orgName": "Sample Org",
  "edition": "Developer",
  "features": ["Assessments"],
  "settings": {
    "industriesSettings": {
      "enableIndustriesAssessment": true,
      "enableDiscoveryFrameworkMetadata": true
    }
  }
}

将评估添加到页面布局。请参阅页面布局 Salesforce 帮助了解更多信息。

AssetScheduling:<值>

启用 Asset Scheduling 许可证。Asset Scheduling 使 预订房间和设备。指示介于 1–10 之间的值。支持的数量1–10更多信息

请参阅在 Salesforce 中启用资产计划 Salesforce 帮助中的调度程序了解更多信息 信息。

关联引擎

启用关联引擎,该引擎会自动将新帐户与 通过创建分支单元客户记录来获取用户的当前分支。更多信息

提供 11 个 FSCComprehensivePsl 用户许可证席位和 11 个 FSCComprehensiveAddOn 附加许可证。

要求您安装 金融服务云。请参阅 Metadata API Developer 中的 AssociationEngineSettings 指导。

作者Apex

使您能够访问和修改临时组织中的 Apex 代码。默认启用 企业版和开发人员版。更多信息

对于组和专业版组织,默认情况下禁用此功能。启用 AuthorApex 功能后,您可以编辑和测试 Apex 类。

B2B商业

提供 B2B 许可证。B2BCommerce 支持企业对企业 (B2B) 组织中的 Commerce。创建和更新 B2B 商店。创建和管理买家账户。卖 产品给其他企业。更多信息

要求您还包括社区 scratch org 功能,用于使用 B2B 创建商店 商业。在 Professional、Partner Professional、Group 或 Partner Group 中不可用 版本组织。

B2B产品管理

启用 B2B 忠诚度管理许可证。创建忠诚度计划并设置忠诚度 特定于计划的流程,使您能够识别、奖励和留住客户。更多信息

有关更多信息,请参阅 Salesforce 帮助中的忠诚度管理 信息。

B2C商业GMV

提供 B2B2C 商业许可证。B2B2C Commerce 可让您快速站起来 电子商务网站,用于推广品牌并将产品销售到多个数字渠道。您可以创建 并更新组织中的零售店面,并创建和管理人员帐户。更多信息还需要临时组织定义文件中的社区功能。在 Professional、Partner Professional、Group 或 Partner Group Edition 中不可用 组织。有关详细信息,请参阅 Salesforce B2B Commerce 和 B2B2C Commerce 中的 Salesforce 帮助。

B2CLoyaltyManagement

启用 Loyalty Management – Growth 许可证。创建忠诚度计划并设置 特定于忠诚度计划的流程,可让您识别、奖励和留住员工 客户。更多信息

有关更多信息,请参阅 Salesforce 帮助中的忠诚度管理 信息。

B2CLoyaltyManagementPlus

启用 Loyalty Management – Advanced 许可证。创建忠诚度计划并设置 特定于忠诚度计划的流程,可让您识别、奖励和留住员工 客户。更多信息

有关更多信息,请参阅 Salesforce 帮助中的忠诚度管理 信息。

批处理管理

启用批量管理许可证。批处理管理允许您处理高 可管理批次的记录量。更多信息

有关详细信息,请参阅 Salesforce 帮助中的批处理管理 信息。

BigObjectsBulkAPI

使临时组织能够在批量 API 中使用 BigObjects。更多信息

查看大对象实现 指南了解更多信息。

公文包

允许在临时组织中使用 Briefcase Builder,这允许您离线创建 使所选记录可供离线查看的公文包。

预算管理

允许用户访问预算管理功能和对象。启用预算 管理,请将此功能添加到临时组织定义文件中。

更多信息

有关更多信息,请参阅 Salesforce 帮助中的预算管理 信息。

业务规则引擎

启用业务规则引擎,该引擎同时启用表达式集和查找 表。更多信息

提供 10 个业务规则引擎设计器和 10 个业务规则引擎运行时 许可证。有关详细信息,请参阅 Salesforce 帮助中的业务规则引擎

CacheOnlyKeys

启用仅缓存密钥服务。此功能允许您存储密钥材料 在 Salesforce 之外,并让仅缓存密钥服务按需从密钥中获取密钥 您控制的服务。更多信息

需要启用 PlatformEncryption 并使用安装程序进行配置 Scratch 组织中的菜单。请参阅 Salesforce 帮助中的 Shield Platform 加密需要哪些用户权限?使用 Salesforce 生成租户密码仅缓存密钥服务

标注大小MB:<值>

增加 Apex 标注的最大大小。指示介于 3–12.支持的数量3–12,乘数:1

活动影响力2

提供对 Sales Cloud 的可自定义营销活动影响的访问,以及 Marketing Cloud 帐户参与度。可定制的活动影响 可以自动关联或允许手动创建关系 广告系列和跟踪归因的机会。样本临时组织定义文件要启用可自定义的广告系列影响,请设置为 。enableCampaignInfluence2true

{
  "orgName": "NTOutfitters",
  "edition": "Enterprise",
  "features": ["CampaignInfluence2"],
  "settings": {
    "campaignSettings": {
        "enableCampaignInfluence2": true

    }
}

更多信息

此功能在 Salesforce Enterprise、Performance、Unlimited 和 开发人员版本。

可选的配置步骤可在临时组织的“设置”中访问。查看更多 信息,请参阅 Salesforce 帮助:可自定义的营销活动影响

级联删除

提供具有先前相同级联删除功能的查找关系 仅适用于主从关系。防止记录意外丢失 deleted,则默认情况下禁用 cascade-delete。

案例分类

启用 Einstein 案例分类。案例分类为您的座席提供建议,以便他们选择最佳价值。您还可以自动保存最佳建议并将案例路由到正确的代理。

案例总结

启用 Einstein 案例总结。为了帮助座席快速完成案例,Einstein Case 总结根据过去的聊天记录推荐案例字段值。更多信息

在 Enterprise Edition 临时组织中可用。

需要使用临时组织中的“设置”菜单进行配置。

请参阅设置 Einstein 分类 Salesforce 帮助中的应用程序,了解更多信息。

ChangeDataCapture(更改数据捕获)

如果临时组织版本未自动启用更改数据捕获,则启用它。

聊天机器人

支持将机器人元数据部署到临时组织,并允许您创建和编辑机器人。更多信息

若要使用此功能,请在 Dev Hub 组织中启用 Einstein 功能 接受服务条款。

查看 Einstein Bots Salesforce 帮助了解更多信息。

Chatter电子邮件页脚徽标

ChatterEmailFooterLogo 允许您使用徽标图像的文档 ID,您可以这样做 用于自定义 Chatter 电子邮件。

更多信息

请参阅将自定义品牌添加到电子邮件 Salesforce 帮助中的通知以获取更多信息。

聊天电子邮件页脚文本

ChatterEmailFooterText 允许您在自定义 Chatter 中使用页脚文本 电子邮件。

更多信息

请参阅将自定义品牌添加到电子邮件 Salesforce 帮助中的通知以获取更多信息。

ChatterEmailSenderName

ChatterEmailSenderName 允许您自定义显示为发件人的名称 电子邮件通知中的名称。例如,您的公司名称。

更多信息

有关更多信息,请参阅 Salesforce 帮助中的 Chatter 电子邮件设置和品牌。

克隆应用程序

CloneApplication 允许您克隆现有的自定义 Lightning 应用程序,并将 对新应用的自定义。这样,您就不必从头开始,尤其是当您 想要创建具有简单变体的应用程序。

更多信息

请参阅在 Salesforce 中创建 Lightning 应用程序 帮助以获取更多信息。

CMSMaxContType

将您可以在 Salesforce CMS 中创建的不同内容类型的数量限制为 21 种。

CMSMaxNodesPerContType

将可以为特定内容类型创建的最大子节点(字段)数限制为 15。

CMS有限使用

在 Salesforce CMS 中启用无限的内容记录、内容类型和带宽使用。

社区

允许组织创建客户社区。要使用社区,您还必须包括 communitiesSettings > settings部分中的 enableNetworksEnabled 临时组织定义文件。更多信息

在 Enterprise 和 Developer 临时组织中可用。

ConAppPluginExecuteAsUser

启用 ConnectedApp 元数据 API 对象中的 pluginExecutionUser 字段。

ConcStreamingClients:<值>

增加所有通道的最大并发客户端(订阅者)数,以及 适用于 API 版本 36.0 及更早版本的所有事件类型。 指示一个介于 20–4,000 之间的值。支持的数量20–4,000,乘数:1

ConnectedAppCustomNotif订阅

使连接的应用程序能够订阅用于发送的自定义通知类型 自定义桌面和移动通知。更多信息

发送自定义通知需要 CustomNotificationType 创建通知类型,并需要 ConnectedAppCustomNotifSubscription 创建通知类型 订阅通知类型。请参阅使用以下方式管理通知 Salesforce 帮助中的通知生成器,了解更多信息 在自定义通知上。

ConnectedAppToolingAPI

允许通过工具 API 使用连接的应用。

同意事件流

为组织启用同意事件流权限。更多信息

请参阅 Salesforce 帮助了解更多信息。

ConsolePersistenceInterval:<值>

增加保存控制台数据的频率(以分钟为单位)。指示介于 0–500.若要禁用自动保存,请将值设置为 0.支持的数量0–500,乘数:1

ContactsToMultipleAccounts

启用“联系人到多个帐户”功能。此功能允许您将联系人与两个或多个帐户相关联。

合同审批

启用合同审批,允许您通过审批流程跟踪合同。

合同管理

启用合同生命周期 (CLM) 管理功能 组织。

合同MgmtInd

为行业启用合同生命周期管理 (CLM) 功能。

CPQ系列

启用安装 Salesforce CPQ 托管软件包所需的许可功能。 不会自动安装包。更多信息

有关其他信息和配置步骤,请参阅使用以下方式管理您的报价 Salesforce 帮助中的 CPQ。

CustomFieldDataTranslation

支持翻译“工作类型组”、“服务区域”和 服务资源对象。您可以使用文本、文本区域、 文本区域(长)、文本区域(丰富)和 URL 类型。

更多信息

要求您还包括 EntityTranslation 临时组织定义文件中的临时组织功能。在 Professional、Partner 中不可用 专业版、组版或合作伙伴组版组织。

CustomNotificationType

允许组织创建自定义通知类型,这些通知类型用于发送自定义桌面 和移动通知。更多信息

发送自定义通知需要 CustomNotificationType 创建要订阅的通知类型和 ConnectedAppCustomNotifSubscription 通知类型。请参阅使用以下方式管理通知 Salesforce 帮助中的通知生成器,了解更多信息 在自定义通知上。

DataComDnb帐户

提供 Data.com 帐户功能的许可证。

数据ComFullClean

提供 Data.com 清洁功能的许可证,并允许用户打开自动 填写作业的干净设置。

数据掩码用户

提供 30 个数据掩码权限集许可证。此权限集允许访问已安装的 Salesforce 数据掩码包。更多信息

有关其他安装和配置步骤,请参阅在 Salesforce 中安装托管软件包 帮助。

数据处理引擎

启用数据处理引擎许可证。数据处理引擎帮助转换数据 在您的 Salesforce 组织中可用,并将转换结果写回为新的或 更新的记录。更多信息

有关更多信息,请参阅 Salesforce 帮助中的数据处理引擎 信息。

调试 Apex

启用 Apex 交互式调试器。您可以使用它通过设置断点和检查点以及检查代码以查找错误来调试 Apex 代码。

决策表

启用决策表许可证。决策表读取业务规则并决定 Salesforce 组织中的记录或您指定的值的结果。更多信息

有关更多信息,请参阅 Salesforce 帮助中的决策表 信息。

DefaultWorkflowUser

将临时组织管理员设置为默认工作流用户。

延迟共享计算器

允许管理员暂停组成员身份和共享规则计算并恢复 他们以后。更多信息

需要使用临时组织中的“设置”菜单进行配置。请参阅延迟共享 Salesforce 帮助中的计算。

发展浪潮

在临时组织中启用 CRM Analytics 开发。它分配了五个平台许可证和 向组织颁发五个 CRM Analytics 平台许可证,以及 将权限集许可证分配给管理员用户。它也 启用 CRM Analytics 模板和 Einstein Discovery 特征。

DeviceTrackingEnabled(设备跟踪已启用)

启用设备跟踪。

DevOps中心

在临时组织中启用 DevOps Center,以便合作伙伴可以创建第二代 扩展或增强 DevOps Center 应用程序中功能的托管包(基本) 包。Dev Hub 组织要求 Salesforce 管理员在开发人员中心组织中启用 DevOps Center。在“设置”中,输入“快速查找”框,然后选择“DevOps” 中心。您可以在启用组织首选项后创建临时组织。DevOps Center临时组织定义文件将以下选项添加到临时组织定义文件中:

{
    "orgName": "Acme",
    "edition": "Enterprise",
    "features": ["DevOpsCenter"],
    "settings": {
        "devHubSettings": {
            "enableDevOpsCenterGA": true
            }  
        }  
    }

从组织形状创建的临时组织的临时组织定义文件如果您基于启用了 DevOps Center 的组织配置创建临时组织,我们仍然 要求将 DevOps Center 功能和设置添加到临时组织定义中 作为 DevOps Center 条款一部分的法律原因,以及 条件。

{
    "orgName": "Acme",
    "sourceOrg": "00DB1230400Ifx5",
    "features": ["DevOpsCenter"],
    "settings": {
        "devHubSettings": {
            "enableDevOpsCenterGA": true
            }  
        }  
    }

更多信息Salesforce 帮助:为 DevOps Center 构建扩展包

DisableManageIdConfAPI

将对 LoginIP 和 ClientBrowser API 对象的访问限制为仅允许查看或删除。

披露框架

提供配置所需的权限集许可证和权限集 披露与合规中心。临时组织定义文件将这些选项添加到临时组织定义中 文件:

{
  "orgName": "dch org",
  "edition": "Developer",
  "features": ["DisclosureFramework"],
  "settings": {
    "industriesSettings":{
      "enableGnrcDisclsFrmwrk": true,
      "enableIndustriesAssessment" : true
    }
  }
}

更多信息

有关配置步骤,请参阅设置和维护净零云中的披露和合规性中心 Salesforce 帮助中的指南。

划分

打开“公司设置”下的“管理部门”功能。通过分区,可以将组织的数据划分为逻辑部分,使搜索、报表和列表视图对用户更有意义。分区对于拥有大量数据的组织非常有用。

多克根

在组织中启用文档生成功能。

DocGenDesigner的

使设计人员能够创建和配置文档模板。

DocGenInd

在组织中启用“行业文档生成”功能。

文件清单

启用“文档跟踪”和“审批”功能,并添加“文档清单”权限集。文档跟踪功能允许您定义要上传和批准的文档,从而支持贷款申请或行动计划等流程。更多信息

请参阅启用文档跟踪 和金融服务中的批准 云管理员指南了解更多信息 信息。

DocumentReaderPageLimit

将发送用于数据提取的页数限制为 5 页。更多信息

请参阅智能表单读取器 Salesforce 帮助了解更多信息。

DSAR可扩展性

使组织能够访问隐私中心中的 DSARPortability 功能。此外,还提供 PrivacyCenter 和 PrivacyCenterAddOn 许可证各一个席位。更多信息

请参阅 Salesforce 中的可移植性 REST API 开发人员指南,了解更多信息。

DurableClassicStreamingAPI

为 API 版本 37.0 及更高版本启用持久 PushTopic 流式处理 API。更多信息

在 Enterprise Edition 和 Developer Edition 临时组织中可用。

耐用的泛型流式处理API

为 API 版本 37.0 及更高版本启用 Durable Generic Streaming API。更多信息

在 Enterprise Edition 和 Developer Edition 中可用 临时组织。

DynamicClientCreationLimit

允许组织通过动态客户端注册多达 100 个 OAuth 2.0 连接的应用程序 注册终结点。

EAndUDigital销售

在组织中启用能源和公用事业数字销售功能。

EAndUSelfServicePortal

在 组织。

EAOutput连接器

启用 CRM Analytics 输出连接器。

更多信息

此暂存组织要求 Dev Hub 具有 EAOutputConnectors 权限。有关详细信息,请参阅 Salesforce 帮助中的 Salesforce 输出连接 详。

EASyncOut(英语:EASyncOut)

启用 CRM Analytics SyncOut。

更多信息

此暂存组织要求开发人员中心具有 EASyncOut 权限。有关更多信息,请参阅 Salesforce 帮助中的 Sync Out for Snowflake 详。

EdPredictionM3阈值

将有效负载中的记录数设置为 10,之后 Einstein Discovery 预测服务使用 M3。

EdPredictionTimeout

将单个 Einstein Discovery 预测的最长持续时间设置为 100 毫秒。

EdPredictionTimeoutBulk

设置单个 Einstein Discovery 预测批量运行时的最长持续时间 到 10 毫秒。

EdPredictionTimeoutByomBulk

设置单个自带模型 (BYOM) Einstein Discovery 的最长持续时间 预测为 100 毫秒。

EducationCloud:<价值>

允许使用教育云。

支持的数量

最大值:10;乘数: 1

更多信息

启用此功能后,需要执行标准设置步骤。有关更多信息,请参阅 Salesforce 帮助中的设置 Education Cloud 信息。

爱因斯坦分析加

为CRM Analytics平台提供一个CRM Analytics Plus许可证。

Einstein文章推荐

提供 Einstein 文章推荐的许可证。Einstein 文章推荐使用过去案例中的数据来识别最有可能帮助您的客户服务代理解决客户查询的知识文章。更多信息

在 Enterprise Edition 临时组织中可用。

需要使用 中的“设置”菜单进行配置 Scratch 组织。

请参阅设置 Einstein 一文 Salesforce 帮助中的建议,了解更多信息 信息。

EinsteinBuilder免费

提供允许管理员创建一个已启用的预测的许可证 使用 Einstein Prediction Builder。Einstein Prediction Builder 是 面向管理员的自定义 AI更多信息

有关配置步骤,请参阅 Einstein 预测 Salesforce 帮助中的构建器。

爱因斯坦文档阅读器

提供在临时组织中启用和使用 Intelligent Form Reader 所需的许可证。 智能表单阅读器使用光学字符识别自动提取数据 亚马逊提取物。

更多信息

要使用此暂存组织功能,Dev Hub 组织需要 EinsteinDocReader 和 SalesforceManagedIFR 权限。有关 Intelligent Form Reader 的信息,请参阅 Salesforce 帮助中的 Intelligent Form Reader

EinsteinRecommendationBuilder

提供使用 Einstein Recommendation Builder 创建建议的许可证。 Einstein Recommendation Builder 可让您构建自定义 AI 建议。更多信息

在 Developer Edition 和 Enterprise Edition 中启用。

需要使用 中的“设置”菜单进行配置 Scratch 组织。您还需要 EinsteinRecommendationBuilderMetadata 功能设置为 在 scratch 中使用 Einstein Recommendation Builder 组织。

请参阅《Einstein Recommendation Builder》中的《Einstein Recommendation Builder》。 Salesforce 帮助了解更多信息。

EinsteinRecommendationBuilderMetadata

使 Einstein Recommendation Builder 能够使用所需的元数据 蜜蜂属。启用此功能后,您可以构建自定义 AI 建议。更多信息

在 Developer Edition 和 Enterprise Edition 中启用。

需要使用 中的“设置”菜单进行配置 Scratch 组织。您还需要 EinsteinRecommendationBuilderMetadata 功能设置为 在 scratch 中使用 Einstein Recommendation Builder 组织。

请参阅《Einstein Recommendation Builder》中的《Einstein Recommendation Builder》。 Salesforce 帮助了解更多信息。

爱因斯坦搜索

提供在临时使用和启用 Einstein Search 功能所需的许可证 组织。更多信息

在专业版和企业版临时组织中可用。

需要使用临时组织中的“设置”菜单进行配置。

请参阅在 Salesforce 中管理 Einstein 搜索设置 帮助以获取更多信息。

爱因斯坦来访

启用消费品云。借助消费品云,改变您的生活方式 与您的零售渠道合作伙伴协作。使您的销售经理能够计划访问。 并分析您各门店的业务健康状况。此外,允许您的现场代表跟踪 使用零售执行移动设备进行库存、接受订单和捕获访问详细信息 应用程序。

爱因斯坦访问ED

启用 Einstein Discovery,可用于获取商店光顾建议。跟 Einstein Visits ED,您可以创建一个访问频率策略,允许 Einstein 提供 最佳店铺访问建议。更多信息

请参阅创建访问频率下一个最佳行动策略 Salesforce 帮助。

EmbeddedLoginForIE

提供支持 IE11 中嵌入式登录的 JavaScript 文件。

EmpPublishRateLimit:<值>

增加发布的标准卷平台事件通知的最大数量 每小时。指示介于 1,000–10,000.支持的数量1,000–10,000,乘数:1

启用PRM

为组织启用合作伙伴关系管理权限。

EnableManageIdConfUI

允许访问 LoginIP 和 ClientBrowser API 对象,以在 UI 中验证用户的身份。

EnableSetPasswordInApi

使您能够在不提供旧密码的情况下更改密码。

sf org generate password

EncryptionStatisticsInterval:<值>

定义加密统计信息收集过程之间的间隔(以秒为单位)。这 最大值为 604,800 秒(7 天)。默认值为每 86,400 秒一次 (24 小时)。支持的数量0–60,4800,乘数:1更多信息

需要启用 PlatformEncryption 并使用 临时组织中的设置菜单。查看 Shield Platform 加密需要哪些用户权限?,并在 Salesforce 中使用 Salesforce 生成租户密码 帮助。

EncryptionSyncInterval:<值>

定义组织将数据与活动密钥同步的频率(以秒为单位) 材料。默认值和最大值为 604,800 秒(7 天)。要同步更多数据 通常,指示一个值(以秒为单位),等于或大于 0。支持的数量0–604,800,乘数:1更多信息

需要启用 PlatformEncryption 并使用 临时组织中的设置菜单。查看 Shield Platform 加密需要哪些用户权限?,并在 Salesforce 中使用 Salesforce 生成租户密码 帮助。

能源和公用事业云

在组织中启用能源和公用事业云功能。

权利

启用权利。权利是 Salesforce 中的客户支持单位,例如 代表服务协议中条款的电话支持或 Web 支持。

事件日志文件

启用对组织的事件日志文件的 API 访问。事件日志文件包含信息 关于可用于分析使用趋势和用户的组织的操作事件 行为。

实体翻译

支持“工作类型组”、“服务区域”和“服务”的字段数据转换 资源对象。

更多信息

要转换自定义字段数据,还要包括 临时组织定义文件中的 CustomFieldDataTranslation 临时组织功能。不 在 Professional、Partner Professional、Group 或 Partner Group Edition 中可用 组织。

表达式:SetMaxExecPerHour

通过使用 Connect REST,使组织每小时最多可以运行 500,000 个表达式集 应用程序接口。

有关详细信息,请参阅 Salesforce 开发人员文档中的表达式集

ExternalIdentityLogin(外部身份登录)

允许临时组织使用与您的 外部身份许可证。

FieldAuditTrail (字段审计跟踪)

为组织启用现场审计跟踪,并允许总共 60 个跟踪字段。默认情况下, 跟踪所有组织的 20 个字段,跟踪另外 40 个字段 现场审计跟踪。更多信息

旧名称: RetainFieldHistory

FieldService:<值>

提供 Field Service 许可证。指示一个介于 1–25 之间的值。支持的数量1–25,乘数:1更多信息

在企业版中可用。在 Developer Edition 中默认启用。请参阅在 Salesforce 中启用 Field Service 帮助以获取更多信息。

FieldServiceAppointmentAssistantUser:<值>

添加 Field Service 约会助理权限集许可证。指示一个值 在 1-25 之间。

支持的数量

1–25,乘数:1

更多信息

请参阅设置 Field Service 约会 在 Salesforce 中分配 Assistant 和分配 Field Service 权限 帮助以获取更多信息。

FieldServiceDispatcherUser:<值>

添加 Field Service Dispatcher 权限集许可证。指示介于 1–25.支持的数量1–25,乘数:1更多信息

请参阅分配 Field Service Salesforce 帮助中的权限以获取更多信息。

FieldServiceLastMileUser:<值>

添加 Field Service 最后一英里权限集许可证。指示介于 1–25.

支持的数量

1–25,乘数:1

FieldServiceMobileExtension:<值>

添加 Field Service Mobile Extension 权限集许可证。

FieldServiceMobileUser:<值>

添加 Field Service Mobile 权限集许可证。指示介于 1–25.支持的数量1–25,乘数:1更多信息

请参阅分配 Field Service Salesforce 帮助中的权限以获取更多信息。

FieldServiceSchedulingUser:<值>

添加 Field Service 计划权限集许可证。指示介于 1–25.支持的数量1–25,乘数:1更多信息

请参阅分配 Field Service Salesforce 帮助中的权限以获取更多信息。

财务伐木

将 Finance Logging 对象添加到临时组织。此功能是必需的 用于 Finance Logging。

FinancialServicesCommunityUser:<值>

添加 Financial Services Insurance Community 权限集许可证,并启用 获得金融服务保险社区组成部分,以及 对象。指示介于 1–10 之间的值。支持的数量1–10,乘数:1

FinancialServicesInsuranceUser:<value>

添加金融服务保险权限集许可证,并允许访问 金融服务保险组件和对象。表示一个 值介于 1–10 之间。支持的数量1–10,乘数:1

FinancialServicesUser:<value>

添加 Financial Services Cloud Standard 权限集许可证。此权限集 允许访问 Lightning 组件和标准版本的 金融服务云。还提供对标准的访问 Salesforce 对象和自定义 Financial Services Cloud 对象。表明 介于 1-10 之间的值。支持的数量1–10,乘数:1

流站点

允许在 Salesforce Sites 和客户门户中使用流程。

ForceCom平台

添加一个 Salesforce Platform 用户许可证。

FSCAlert框架

使金融服务云记录警报实体在临时可访问 组织。更多信息

提供 11 个 FSCComprehensivePsl 用户许可证席位和 11 个席位 FSCComprehensiveAddOn 附加许可证。

要求您安装 Financial Services Cloud 和 OmniStudio。请参阅在财务中记录警报 Services Cloud 管理员指南。

FSCService流程

启用 Financial Service Cloud 的 Service Process Studio 功能。提供 10 个座位 每个 IndustriesServiceExcellenceAddOn 和 FinancialServicesCloudStardardAddOn 许可证。 若要启用该功能,还必须在安装程序中打开 StandardServiceProcess 设置,然后 授予用户 AccessToServiceProcess 权限。

筹款

允许用户访问 Salesforce 中的 Nonprofit Cloud for Fundraising 功能和对象。

临时组织定义文件

要启用筹款功能,请将这些设置添加到临时组织定义文件中。

{
    "orgName": "My Company",
    "edition": "Developer",
    "features": [
        "AccountingSubledgerGrowthEdition",
        "IndustriesActionPlan",
        "AnalyticsQueryService",
        "PublicSectorAccess",
        "Fundraising",
        "IndustriesSalesExcellenceAddOn",
        "IndustriesServiceExcellenceAddOn",
        "MarketingUser",
        "ProgramManagement",
        "OmniStudioDesigner",
        "OmniStudioRuntime",
        "EnableSetPasswordInApi",
        "PersonAccounts"
    ],
    "settings": {
        "lightningExperienceSettings": {
            "enableS1DesktopEnabled": true
        },
        "mobileSettings": {
            "enableS1EncryptedStoragePref2": false
        },
        "chatterSettings": {
            "enableChatter": true
        },
        "apexSettings": {
            "enableDisableParallelApexTesting": true
        },
        "enhancedNotesSettings": {
            "enableEnhancedNotes": true
        }
    }
}

更多信息

请参阅用于筹款的非营利性云 Salesforce 帮助了解更多信息。

泛型流式处理

为 API 版本 36.0 及更早版本启用通用流式处理 API。更多信息

在 Enterprise Edition 和 Developer Edition 临时组织中可用。

GenStreamingEventsPerDay:<值>

增加 24 小时内传递的事件通知的最大数量, 由所有 CometD 客户端共享,具有 API 的通用流式处理 版本 36.0 及更早版本。指示介于 10,000–50,000.支持的数量10,000–50,000,乘数:1

资助

允许用户访问 Salesforce 和 Experience 中的 Grantmaking 功能和对象 云。

更多信息

有关更多信息,请参阅 Salesforce 帮助中的资助 信息。要启用授权,请将这些设置添加到临时组织定义文件中。

{
  "features": ["Grantmaking"],
  "settings": {
    "IndustriesSettings": {
      "enableGrantmaking": true
    }
  }
}

HealthCloud插件

允许使用 Health Cloud。更多信息

请参阅 Salesforce 帮助中的管理 Health Cloud 了解更多信息。

HealthCloudEOLOverride

Salesforce 在 22 年春季停用了 Health Cloud CandidatePatient 对象,以专注于 更健壮的 Lead 对象。此临时组织功能允许您覆盖该停用和 访问对象。

更多信息

若要使用此暂存组织功能,开发人员中心组织需要 HealthCloudEOLOverride 权限。 请参阅候选患者数据实体停用 Salesforce 帮助了解更多信息。

HealthCloudForCmty

允许将 Health Cloud 用于 Experience Cloud Sites。更多信息

请参阅 Salesforce 帮助中的 Experience Cloud 站点 了解更多信息。

HealthCloudMedicationReconciliation

允许药物管理支持药物核对。更多信息

有关更多信息,请参阅 Salesforce 帮助中的启用药物管理以执行药物核对

HealthCloudPNMAddOn

允许使用提供商网络管理。更多信息

有关更多信息,请参阅 Salesforce 帮助中的提供商网络管理

HealthCloud用户

这使临时组织能够使用等效于 一个用户的 Health Cloud 权限集许可证。更多信息

请参阅分配 Health Cloud 权限集 和 Salesforce 帮助中的权限集许可证,了解更多信息。

高速销售

提供 Sales Engagement 许可证并启用 Salesforce 收件箱。销售参与 以高生产率优化内部销售流程 工作。销售经理可以创建自定义销售流程 指导销售代表处理不同类型的潜在客户。和销售 销售代表可以通过优先级列表和其他快速处理潜在客户 提高生产力的功能。Sales Engagement 功能可以是 部署在临时组织中,但该功能的设置不能 通过临时组织定义文件进行更新。相反,请配置 直接在 Sales Engagement 应用中进行设置。

HoursBetweenCoverageJob:<值>

共享继承覆盖率报告可以运行的频率(以小时为单位) 对象。指示一个介于 1–24 之间的值。支持的数量1–24,乘数:1

IdentityProvisioning功能

允许使用 Salesforce Identity 用户配置。

IgnoreQueryParam白名单

忽略查询参数筛选规则的白名单规则。如果启用,您可以添加 URL 的任何查询参数。

注意

在可能的情况下,我们更改了非包容性条款,以符合我们公司的价值 平等。我们保留了某些条款,以避免对客户产生任何影响 实现。

行业行动计划

为行动计划提供许可证。行动计划允许您定义用于完成业务流程的任务或文档清单项。更多信息

旧名称:ActionPlan。

有关详细信息和配置步骤, 请参阅 Salesforce 帮助中的启用行动计划

行业分支机构管理

分支管理允许分支经理和管理员跟踪 金融服务云中的分支机构、员工和客户群。更多信息

提供 Branch Management 附加许可证和用户权限,以及 11 个席位 FSCComprehensivePsl 用户许可证和 11 个 FSCComprehensiveAddOn 附加组件席位 许可证。

要求您安装 Financial Services Cloud。请参阅《Financial Services Cloud 管理员指南》中的“分支机构管理”。

行业合规数据共享

授予用户访问参与者管理和数据共享高级配置的权限 提高对法规和公司政策的遵守情况。更多信息

提供 1 个席位的 FinancialServicesCloudStandardAddOn 附加许可证。

要求您安装 Financial Services Cloud。请参阅《Financial Services Cloud 管理员指南》中的合规数据共享

行业Mfg目标

启用销售协议。通过销售协议,您可以协商购买和销售 产品持续一段时间。您还可以深入了解以下内容 产品、价格、折扣和数量。您可以跟踪您的 计划和实际数量和收入,实时更新 从订单和合同。更多信息

请参阅跟踪销售合规性 Salesforce 帮助中的销售协议 更多信息。

行业制造业制造

为社区权限集许可证提供制造销售协议, 供合作伙伴社区用户使用。它也 为管理员提供对制造社区模板的访问权限 用户创建社区。更多信息

请参阅改进合作伙伴 与社区合作 Salesforce 帮助了解更多信息。

行业MfgAccountForecast

启用帐户预测。借助 Account Forecast,您可以为您的 基于订单、商机和销售协议的帐户。你 还可以创建公式来计算您的预测 贵公司的要求。更多信息

请参阅将帐户预测创建到 在 Salesforce 帮助中增强您的规划 了解更多信息。

洞察平台

为CRM Analytics启用CRM Analytics Plus许可证。

保险计算用户

启用保险的计算功能。BRERuntimeAddOn 和 OmniStudioRuntime 许可证各提供 10 个席位。此外,还提供 OmniStudio 和 BREPlatformAccess 许可证各一个席位。

保险理赔管理

启用索赔管理功能。提供 InsuranceClaimMgmtAddOn 许可证的一个席位。更多信息

有关更多信息,请参阅 Salesforce 帮助中的管理索赔 信息。

保险政策管理员

启用策略管理功能。提供 InsurancePolicyAdministrationAddOn 许可证的一个席位。更多信息

有关更多信息,请参阅 Salesforce 帮助中的管理保险单 信息。

智能文档阅读器

提供临时启用和使用 Intelligent Document Reader 所需的许可证 智能文档阅读器使用光学字符识别自动提取数据。 使用您的 AWS 账户使用 Amazon Textract。

更多信息

若要使用此暂存组织功能,开发人员中心组织需要 EinsteinDocReader 和 BYOAForIFR 权限。有关智能文档阅读器的信息,请参阅 Salesforce 帮助中的智能文档阅读器

互动

启用流。流是 Salesforce Flow 中收集数据并执行的部分 Salesforce 组织或外部系统中的操作。Salesforce的 Flow 提供两种类型的流:屏幕流和自动启动 流。更多信息

需要在临时组织的“设置”菜单中进行配置。

物联网

启用 IoT,以便临时组织可以使用平台事件来执行业务和 使用编排和上下文的服务工作流。更多信息

需要在临时组织的“设置”菜单中进行配置。

Jigsaw用户

提供 Jigsaw 功能的一个许可证。

知识

启用 Salesforce Knowledge,为您的网站访问者、客户、合作伙伴和 服务代理 终极支持工具。创建和管理 包含公司信息的知识库,并安全地共享 无论何时何地需要它。构建文章知识库 可以包括有关流程的信息,例如如何重置您的产品 到其默认值或常见问题。更多信息

有关详细信息,请参阅 Salesforce 帮助中的 Salesforce 知识

旧版LiveAgentRouting

为 Chat 启用旧版 Live Agent 路由。使用 Live Agent 路由在 Salesforce Classic 中聊天。Lightning Experience 中的聊天必须使用全渠道进行路由。

LightningSales控制台

添加一个 Lighting Sales Console 用户许可证。

LightningScheduler (闪电调度程序)

启用 Lightning Scheduler。Lightning Scheduler 为您提供了简化 Salesforce 中约会安排的工具。通过安排客户约会(亲自、通过电话或视频)在正确的地点和时间与正确的人约会,创造个性化的体验。更多信息

有关更多信息,请参阅 Salesforce 帮助中的使用 Lightning Scheduler 管理约会 信息。

LightningServiceConsole

将 Lightning 服务控制台许可证分配给您的临时组织,以便您 可以使用 Lightning 服务控制台并访问有助于 更快地管理案例。更多信息

请参阅 Salesforce 中的 Lightning 服务控制台 帮助以获取更多信息。

LiveAgent的

为 Service Cloud 启用 Chat。使用基于 Web 的聊天功能,快速将客户与座席联系起来,以获得实时支持。

实时消息

为 Service Cloud 启用消息传递。使用“消息传递”快速支持使用 SMS 文本消息和 Facebook Messenger 等应用的客户。

LongLayoutSectionTitles

允许页面布局部分标题最多为 80 个字符。更多信息要启用此功能,请联系 Salesforce 客户支持。

忠诚度分析

启用 Analytics for Loyalty 许可证。Analytics for Loyalty 应用为您提供可操作的 深入了解您的忠诚度计划。更多信息

有关更多信息,请参阅 Salesforce 帮助中的忠诚度分析 信息。

忠诚度引擎

启用 Loyalty Management Promotion Setup 许可证。促销设置允许忠诚度 项目经理创建忠诚度计划流程。忠诚度计划流程可帮助您做出决定 如何处理传入和新的应计和赎回类型的交易。更多信息

请参阅在 Salesforce 中使用促销设置创建流程 帮助以获取更多信息。

忠诚管理入门

启用 Loyalty Management – Starter 许可证。创建忠诚度计划并设置 特定于忠诚度计划的流程,可让您识别、奖励和留住员工 客户。更多信息

有关更多信息,请参阅 Salesforce 帮助中的忠诚度管理 信息。

忠诚度最大合作伙伴:<价值>

增加可与忠诚度关联的忠诚度计划合作伙伴的数量 在启用了 Loyalty Management – Starter 许可证的组织中进行编程。默认值和 最大值为 1。支持的数量0–1,乘数:1

LoyaltyMaximumPrograms:<价值>

增加在忠诚度 管理 – 已启用入门许可证。默认值和最大值为 1。支持的数量0–1,乘数:1

LoyaltyMaxOrderLinePerHour:<值>

将每小时可累计处理的订单行数增加 忠诚度计划流程。指示介于 1–3,500,000 之间的值。支持的数量1–3,500,000,乘数:1

LoyaltyMaxProcExecPerHour:<值>

增加忠诚度计划可以处理的交易日记帐数量 每小时的进程数。指示介于 1–500,000 之间的值。支持的数量1–500,000,乘数:1

LoyaltyMaxTransactions:<价值>

增加可以处理的事务日记记录数。表示一个 值介于 1–50,000,000 之间。支持的数量1–50,000,000,乘数:1

LoyaltyMaxTrxnJournals:<值>

增加可以存储在组织中的事务日记记录数 已启用 Loyalty Management – Start 许可证。支持的数量1–25,000,000,乘数:1更多信息有关更多信息,请参阅 Salesforce 帮助中的事务日志限制 信息。

在临时组织中启用宏。启用宏后,将宏浏览器添加到 Lightning 控制台,以便您可以为常用操作配置预定义指令,并同时将它们应用于多个帖子。更多信息

请参阅 Salesforce 帮助中的设置和使用宏 了解更多信息。

营销用户

提供对 Campaigns 对象的访问。如果没有此设置,广告系列将是 只读。

MaxActiveDPEDefs:<值>

增加可在 组织。指示一个介于 1–50 之间的值。支持的数量1–50,乘数:1

MaxApexCodeSize:<值>

限制非测试、非托管 Apex 代码大小(以 MB 为单位)。要使用大于 默认值为 10,请联系 Salesforce 客户支持。

MaxAudTypeCriterionPerAud

限制每个访问群体可用的访问群体类型条件的数量。默认值为 10。

MaxCustomLabels:<值>

限制自定义标签的数量(以千为单位)。将限制设置为 10 使临时组织能够拥有 10,000 个自定义标签。表示一个 值介于 1–15 之间。支持的数量1–15,乘数:1,000

MaxDatasetLinksPerDT:<值>

增加可与决策表关联的数据集链接数。 指示一个介于 1–3 之间的值。支持的数量1–3,乘数:1

MaxDataSourcesPerDPE:<值>

增加数据处理引擎定义可以的源对象节点数 包含。指示一个介于 1–50 之间的值。支持的数量1–50,乘数:1

MaxDecisionTableAllowed:<值>

增加可在组织中创建的决策表规则数。表示一个 值介于 1–30 之间。支持的数量1–30,乘数:1

MaxFavoritesAllowed:<值>

增加允许的收藏夹数量。收藏夹允许用户创建快捷方式 Salesforce 页面。用户可以通过单击来查看他们的收藏夹 标题中的收藏夹列表下拉列表。指示一个值 介于 0–200 之间。支持的数量0–200,乘数:1

MaxFieldsPerNode:<值>

增加数据处理引擎定义中的节点可以包含的字段数。 指示一个介于 1–500 之间的值。支持的数量1–500,乘数:1

MaxInputColumnsPerDT:<值>

增加决策表可以包含的输入字段数。指示一个值 在 1-10 之间。支持的数量1–10,乘数:1

MaxLoyaltyProcessRules:<值>

增加可在组织中创建的会员计划流程规则的数量。 指示一个介于 1–20 之间的值。支持的数量1–20,乘数:1

MaxNodesPerDPE:<值>

增加数据处理引擎定义可以包含的节点数。 指示一个介于 1–500 之间的值。支持的数量1–500,乘数:1

MaxNoOfLexThemesAllowed:<值>

增加允许的主题数。主题允许用户配置颜色、字体、 图像、大小等。在“设置”中访问主题列表, 在主题和品牌下。指示介于 0–300.支持的数量0–300,乘数:1

MaxOutputColumnsPerDT:<值>

增加决策表可以包含的输出字段数。指示一个值 在 1-5 之间。支持的数量1–5,乘数:1

MaxSourceObjectPerDSL:<值>

增加可在 决策表。指示一个介于 1–5 之间的值。支持的数量1–5,乘数:1

MaxStreamingTopics:<值>

增加 24 小时内传递的 PushTopic 事件通知的最大数量 期间,由所有 CometD 客户端共享。指示介于 40–100.支持的数量40–100,乘数:1

MaxUserNavItemsAllowed:<值>

增加用户可以添加到导航栏的导航项数。表示一个 值介于 0–500 之间。支持的数量0–500,乘数:1

MaxUserStreamingChannels:<值>

增加通用流式处理的用户定义通道的最大数量。表示一个 值介于 20–1,000 之间。支持的数量20–1,000,乘数:1

MaxWritebacksPerDPE:<值>

增加数据处理引擎定义可以的写回对象节点数 包含。指示一个介于 1–50 之间的值。支持的数量1–10,乘数:1

MedVisDescriptorLimit:<值>

将每条记录允许的共享定义数增加到 应用于对象。指示介于 150–1,600.支持的数量150–1,600,乘数:1

MinKeyRotationInterval

每 60 秒设置一次加密密钥材料轮换间隔。如果这 未指定功能,则旋转间隔默认为每 604,800 秒(7 天)一次 搜索索引密钥材料,所有其他密钥每 86,400 秒(24 小时)搜索一次 材料。更多信息

需要启用 PlatformEncryption 和一些 使用临时组织中的“设置”菜单进行配置。查看 Shield Platform 具有哪些用户权限 需要加密吗?使用 Salesforce 生成租户密码 Salesforce 帮助。

MobileExtMaxFileSizeMB:<值>

增加 Field Service Mobile 扩展的文件大小(以 MB 为单位)。表示一个 值介于 1–2,000 之间。支持的数量1–2,000,乘数:1

移动安全

实现增强的移动安全性。借助增强的移动安全性,您可以控制范围 的策略,以创建适合您组织需求的安全解决方案。您可以限制用户 基于操作系统版本、应用版本以及设备和网络安全的访问。 您还可以指定违规的严重性。

MultiLevelMasterDetail

允许在一个对象之间创建特殊类型的父子关系,即 子对象、细节对象和另一个对象、父对象或主对象。

相互身份验证

需要客户端证书来验证相互身份验证的入站请求。

我的 Trailhead

允许访问临时组织中的 myTrailhead 启用站点。临时组织定义文件将以下选项添加到临时组织定义文件中:

{
    "orgName": "Acme",
    "edition": "Enterprise",
    "features": ["MyTrailhead"],
    "settings": {
        "trailheadSettings": {
            "enableMyTrailheadPref": true
            }  
        }  
    }

更多信息Salesforce 帮助:Enablement Sites (myTrailhead)

非营利性CloudCaseManagementUser

提供使用和配置 Salesforce.org 所需的权限集许可证 非营利性云案例管理托管包。然后,您可以从头开始安装该软件包 组织。更多信息

有关安装和配置步骤,请参阅 Salesforce.org 非营利组织云案例管理

NumPlatformEvents:<值>

增加可创建的最大平台事件定义数。表明 介于 5–20 之间的值。支持的数量5–20,乘数:1

对象链接

创建规则以快速将渠道交互链接到联系人、潜在顾客或客户的个人帐户等对象 (Beta)。

订单管理

提供 Salesforce 订单管理许可证。订单管理是您的中心枢纽 用于处理订单生命周期的所有方面,包括订单 捕获、履行、运输、付款处理和 服务。更多信息

在 Enterprise Edition 和 Developer Edition 临时组织中可用。

如果要将订单管理配置为 使用这些功能中的任何一个,请在 Scratch 组织:

  • 多币种
  • 个人帐户
  • ProcessBuilder的
  • StateAndCountry选择列表

需要使用 中的“设置”菜单进行配置 Scratch 组织。用于安装和 配置步骤,请参阅 Salesforce 帮助:Salesforce 订单管理

注意

实施过程包括车削 在多个订单和订单管理功能上 在“设置”中切换。在临时组织中,您可以转动 它们通过在 临时组织定义文件。有关的详细信息 这些设置,请参阅元数据 API 开发人员指南中的 OrderSettings 和 OrderManagementSettings

OrderSaveLogicEnabled

启用对新订单保存行为的临时组织支持。更多信息OrderSaveLogicEnabled 仅支持新订单保存行为。如果您的临时组织同时需要两者 旧订单和新订单保存行为,请使用 OrderSaveBehaviorBoth。要启用 OrderSaveLogicEnabled,请更新临时组织定义文件。

{
  "features": ["OrderSaveLogicEnabled"],
  "settings": {
    "orderSettings": {
      "enableOrders": true
    }
  }
}

OrderSaveBehaviorBoth(订单保存行为两者)

启用对“新订单保存行为”和“旧订单保存”的临时组织支持 行为。更多信息要启用 OrderSaveLogicEnabled,请更新临时组织定义 文件。

{
   "features": ["OrderSaveBehaviorBoth"],
  "settings": {
    "orderSettings": {
      "enableOrders": true
    }
  }
}

出站消息HTTPSession

允许在具有“发送”的出站消息定义中使用 HTTP 终结点 URL 已选择会话 ID 选项。

成果管理

允许用户访问 Salesforce 中的结果管理功能和对象。

更多信息

有关更多信息,请参阅 Salesforce 帮助中的结果管理 信息。要启用结果管理,请将这些设置添加到临时组织定义中 文件。

{
  "features": ["OutcomeManagement"],
  "settings": {
    "IndustriesSettings": {
      "enableOutcomes": true
    }
  }
}

PardotScFeaturesCampaignInfluence

启用额外的活动影响模型、首次接触、最后一次接触,甚至 分发给 Pardot 用户。

个人帐户

在临时组织中启用个人帐户。更多信息

在 Enterprise Edition 和 Developer Edition 临时组织中可用。

管道检测

启用管道检测。管道检测是 整合的管道视图,包含指标、机会和最近的亮点 变化。更多信息在企业版临时组织中可用。需要启用和配置 PipelineInspection,使用临时组织中的“设置”菜单。有关更多信息,请参阅 Salesforce 帮助中的打开管道检查

平台缓存

启用平台缓存并分配 3 MB 缓存。Lightning 平台缓存层在缓存 Salesforce 会话和组织数据时提供更快的性能和更好的可靠性。更多信息

请参阅《Apex 开发人员指南》中的平台缓存 了解更多信息。

PlatformConnect:<值>

启用 Salesforce Connect 并允许用户查看、搜索和修改数据 存储在 Salesforce 组织外部。指示 1-5 之间的值。支持的数量1–5,乘数:1

平台加密

Shield Platform Encryption 对静态数据进行加密。您可以管理密钥材料并加密字段、文件和其他数据。

PlatformEventsPerDay:<值>

增加已传送的标准卷平台事件通知的最大数量 在 24 小时内,由所有 CometD 客户共享。指示一个值 在 10,000–50,000 之间。支持的数量10,000–50,000,乘数:1

ProcessBuilder的

启用 Process Builder,这是一种 Salesforce Flow 工具,可帮助您实现业务自动化 过程。更多信息

需要在临时组织的“设置”菜单中进行配置。

请参阅 Salesforce 帮助中的 Process Builder,了解 更多信息。

产品和时间表

在临时组织中启用产品计划。启用此功能后,您可以创建 产品上的默认产品明细表。用户还可以为个人创建时间表 机会上的产品。

项目管理

允许访问所有“项目群管理”和“案例管理”功能和对象。更多信息要启用 ProgramManagement,请将这些设置添加到临时组织定义中 文件。

{
  "orgName": "Sample Org" ,
  "edition": "Enterprise",
  "features": ["ProgramManagement"],
  "settings": {
    "IndustriesSettings": {
      "enableBenefitManagementPreference": true,
      "enableBenefitAndGoalSharingPref": true,
      "enableCarePlansPreference": true
    }
  }
}

或者,手动启用组织中的设置。请参阅 Salesforce 帮助。

提供程序FreePlatformCache

提供 3 MB 的免费平台缓存容量,用于安全审查 托管包。此功能通过称为“无提供程序”的容量类型提供 容量,并在 Developer Edition 组织中自动启用。免费分配提供程序 容量添加到平台缓存分区,并将其添加到托管包中。更多信息

请参阅设置平台缓存 Salesforce 帮助中的“使用提供商可用容量进行分区”,了解更多信息 信息。

PublicSectorAccess

允许访问所有公共部门功能和对象。

PublicSectorApplicationUsageCreditsAddOn

支持公共部门应用程序的其他用途,具体取决于其 定价。

PublicSectorSiteTemplate(公共部门网站模板)

允许公共部门用户访问以从模板构建 Experience Cloud 站点 可用。

记录类型

启用记录类型功能。记录类型可让您提供不同的业务 流程、选择列表值和页面布局给不同的用户。

RefreshOnInvalidSession

启用在用户会话无效时自动刷新 Lightning 页面。但是,如果页面检测到新令牌,它会尝试设置该令牌并继续而不刷新。

RevSubscriptionManagement

启用订阅管理。订阅管理是 API 优先的, 用于 B2B 订阅和一次性销售的产品到现金解决方案。更多信息在 Enterprise 和 Developer 临时组织中可用。启用订阅管理 在临时组织中,将此设置添加到临时组织定义中 文件。

"settings": {
    ...
    "subscriptionManagementSettings": {
      "enableSubscriptionManagement": true
    },
    ...
  }

有关订阅管理的详细信息,请参阅 https://developer.salesforce.com/docs/revenue/subscription-management/overview

S1ClientComponentCacheSize

允许组织为 Lightning 组件提供最多 5 页的缓存。

销售云爱因斯坦

启用 Sales Cloud Einstein 功能和 Salesforce 收件箱。Sales Cloud Einstein 带来 人工智能渗透到销售过程的每一步。更多信息

在 Enterprise Edition 临时组织中可用。

有关更多信息,请参阅 Salesforce 帮助中的 Sales Cloud Einstein

SalesforceContent用户

允许访问 Salesforce 内容功能。

Salesforce反馈管理入门

提供使用 Salesforce 反馈管理 – Starter 的许可证 特征。更多信息

在 Enterprise 和 Developer Edition 临时组织中可用。使用 Salesforce 反馈 管理 – 入门功能,启用调查并分配 Salesforce 高级功能 临时组织用户的 Starter 用户权限。有关如何启用的其他信息 调查和配置步骤,请参阅启用调查和 配置调查设置分配用户 Salesforce 帮助中的权限。

SalesforceIdentityForCommunities(SalesforceIdentityFor社区)

将 Salesforce Identity 组件(包括登录和自助注册)添加到 Experience 中 建筑工人。此功能是 Aura 组件所必需的。

销售用户

提供 Sales Cloud 功能的许可证。

SAML20单注销

允许使用 SAML 2.0 单点注销。

SCIMProtocol

启用对 SCIM 协议基 API 的访问支持。

SecurityEventEnabled(安全事件启用)

允许在事件监控中访问安全事件。

SentimentInsights功能

提供在临时组织中启用和使用 Sentiment Insights 所需的许可证。 产品用途 Sentiment Insights,用于分析客户的情绪并获得可操作的见解,以 改进它。

更多信息

若要使用此暂存组织功能,开发人员中心组织需要 IESentimentAnalysis、 AwsSentimentAnalysis、BYOAForSentiment 和 IESentimentAnalysisEnabled 权限。为 有关 Sentiment Insights 的信息,请参阅 Salesforce 帮助中的 Sentiment Insights

服务目录

启用员工服务目录,以便您可以创建产品和服务目录 为您的员工服务。它还可以将员工对这些产品和服务的要求转化为 已批准并记录在案的订单。

更多信息

若要使用此暂存组织功能,开发人员中心组织需要 ServiceCatalog 权限。要了解 更多,请参阅员工服务 目录

服务云

将 Service Cloud 许可证分配给您的临时组织,以便您可以选择如何 客户可以通过电子邮件、电话、社交媒体、在线社区、 聊天和发短信。

ServiceCloudVoicePartner电话

将 Service Cloud Voice with Partner Telephony 附加许可证分配给 您的 Scratch 组织,因此您可以设置一个与 支持的电话提供商。表示 1–50 之间的值。支持的数量1–50,乘数:1更多信息有关设置和配置步骤,请参阅 Salesforce 帮助中的 Service Cloud Voice with Partner Telephony

服务用户

添加一个 Service Cloud 用户许可证,并允许访问 Service Cloud 功能。

SessionIdInLogEnabled

使 Apex 调试日志能够包含会话 ID。如果禁用,则在调试日志中将会话 ID 替换为“SESSION_ID_REMOVED”。

SFDOInsightsDataIntegrityUser

提供 Salesforce.org Insights Platform 数据完整性托管包的许可证。 然后,您可以在临时组织中安装该软件包。更多信息

有关安装和配置步骤,请参阅 Salesforce.org Insights Platform 数据完整性帮助。

共享活动

允许用户将多个联系人与任务和事件相关联。更多信息

用于其他安装和配置 步骤,请参阅 Salesforce 帮助中的启用共享活动的注意事项

网站

启用 Salesforce Sites,允许您创建公共网站和应用程序 直接与您的 Salesforce 组织集成。用户不是 需要使用用户名和密码登录。更多信息

您可以在临时组织中创建站点和社区,但不支持自定义域(如 www.example.com)。

社交客户服务

启用 Social Customer Service,设置帖子默认值,并激活 Starter 打包或登录您的 Social Studio 帐户。

StateAndCountry选择列表

启用州和国家/地区选择列表。州和国家/地区选择列表让 用户从预定义的标准化列表中选择州和国家/地区,而不是输入 州、国家和地区数据转换为文本字段。

流式处理API

启用流式处理 API。更多信息

在 Enterprise Edition 和 Developer Edition 临时组织中可用。

StreamingEventsPerDay:<值>

增加 24 小时内传递的 PushTopic 事件通知的最大数量 句点,由所有 CometD 客户端共享(API 版本 36.0 及更早版本)。 指示一个介于 10,000–50,000 之间的值。支持的数量10,000–50,000,乘数:1

SubPerStreamingChannel:<值>

增加每个通用流式处理的最大并发客户端(订阅者)数 通道(API 版本 36.0 及更早版本)。指示介于 20–4,000.支持的数量20–4,000,乘数:1

SubPerStreamingTopic:<值>

增加每个 PushTopic 流式处理的最大并发客户端(订阅者)数 通道(API 版本 36.0 及更早版本)。指示介于 20–4,000.支持的数量20–4,000,乘数:1

SurveyAdvanced功能

为 Salesforce 反馈管理提供的可用功能启用许可证 – 增长许可证。更多信息

在 Enterprise 和 Developer Edition 临时组织中可用。使用 Salesforce 反馈 管理 – 增长功能,启用调查并分配 Salesforce 调查高级 具有对临时组织用户的用户权限。有关如何启用的其他信息 调查和配置步骤,请参阅启用调查和 配置调查设置分配用户 Salesforce 帮助中的权限。

可持续发展云

提供安装和 配置 Sustainability Cloud。要启用或使用 CRM Analytics 和 CRM Analytics 模板,包括 DevelopmentWave 临时组织 特征。更多信息

有关安装和配置步骤,请参阅 Sustainability Cloud 旧版 集合中的文档 向上 并维护网络 零 Salesforce 帮助中的云指南。

可持续发展应用程序

提供所需的权限集许可证和权限集 配置 Net Zero Cloud。启用或使用 Tableau CRM 和 Tableau 的步骤 CRM 模板,包括 DevelopmentWave 临时组织 特征。临时组织定义文件将这些选项添加到临时组织定义中 文件:

{
  "orgName": "net zero scratch org",
  "edition": "Developer",
  "features": ["SustainabilityApp"],
  "settings": {
    "industriesSettings":{
      "enableSustainabilityCloud": true,
      "enableSCCarbonAccounting" : true
    }
  }
}

更多信息

有关配置步骤,请参阅“设置和维护净零”中的“配置净零云” Salesforce 帮助中的云指南。

TCRMfor可持续发展

通过以下方式启用管理 Net Zero Analytics 应用程序所需的所有权限 启用 Tableau CRM。您可以创建和共享分析应用程序 您的用户使您的环境会计与您的 财务会计。更多信息

有关更多信息,请参阅“设置”和“设置”中的“部署净零分析”。 Salesforce 帮助中的维护 Net Zero Cloud 指南。

TimelineConditionsLimit

将每个事件类型的时间轴记录显示条件数限制为 3。更多信息

有关更多信息,请参阅 Salesforce 帮助中的通过增强的时间线提供整体患者护理

时间轴事件限制

将时间轴上显示的事件类型数限制为 5 个。更多信息

请参阅提供 增强的整体患者护理 Salesforce 帮助中的时间线了解更多信息 信息。

时间轴记录类型限制

将每个事件类型的相关对象记录类型数限制为 3 个。更多信息

请参阅提供 增强的整体患者护理 Salesforce 帮助中的时间线了解更多信息 信息。

TimeSheetTemplateSettings

使用时间表模板,可以配置设置以自动创建时间表。例如,您可以创建一个设置开始日期和结束日期的模板。将模板分配给用户配置文件,以便为正确的用户创建时间表。更多信息

有关配置步骤,请参阅在 Salesforce 中创建时间表模板 帮助。

TransactionFinalizers 交易终结器

使您能够实施 Apex 终结器并将其附加到可排队的 Apex 作业。更多信息

注意

此功能目前处于开放状态 试点并受到限制。

请参阅 Apex 中的事务终结器(试点) 开发人员指南了解更多信息。

WaveMax货币

增加 CRM Analytics 支持的最大货币数。指示一个值 在 1-5 之间。

Wave平台

启用 Wave Platform 许可证。

工作流程

启用工作流,以便您可以自动执行标准内部程序和 过程。更多信息

需要在临时组织的“设置”菜单中进行配置。

工作流流操作功能

允许您从工作流操作启动流程。更多信息

仅当您在组织中为流触发器启用了试点计划时,才支持此设置 工作流操作。如果启用了试点,则 可以继续创建和编辑流触发器 工作流操作。

如果未启用试点,请使用流 ProcessBuilder 临时组织功能中的操作 相反。

WorkplaceCommandCenter用户

允许访问 Workplace Command Center 功能,包括访问 Employee、Crisis 和 员工危机评估。更多信息

用于其他安装和配置 步骤,请参阅在 Workplace Command Center 中设置 Work.com 开发组织 Work.com 开发人员指南。

工作感谢Pref

启用 Chatter 中的“感谢”功能。

临时组织设置

临时组织设置是在临时组织中定义组织首选项的格式 定义。由于可以使用所有元数据 API 设置,因此它们是最全面的 配置临时组织的方式。如果某个设置在元数据 API 中受支持,则在 临时组织。设置为您提供细粒度控制,因为您可以定义值 对于设置的所有字段,而不仅仅是启用或禁用它。

有关元数据 API 设置及其支持字段的信息,请参阅元数据 API 开发人员指南中的设置

重要

尽管“设置”在“元数据”中是大写驼峰式的 API 开发者指南,请务必在 临时组织定义。

{
  "orgName": "Acme",
  "edition": "Enterprise",
  "features": ["Communities", "ServiceCloud", "Chatbot"],
  "settings": {
      "communitiesSettings": {
          "enableNetworksEnabled": true
      },
      "lightningExperienceSettings": {
          "enableS1DesktopEnabled": true
      },
      "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
      },
      "omniChannelSettings": {
          "enableOmniChannel": true
      },
      "caseSettings": {
          "systemUserEmail": "support@acme.com"
      }
  }
}

下面是如何在临时组织中配置 SecuritySettings 的示例。在 在这种情况下,要定义会话超时,请嵌套字段值。

{
  "orgName": "Acme",
  "edition": "Enterprise",
  "features": [],
  "settings": {
       "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
       },
      "securitySettings": {
          "sessionSettings":{
             "sessionTimeout": "TwelveHours"
          }  
      }
  }
}

此示例演示如何使用 NameSettings 启用中间名和 组织中以下人员对象的后缀:联系人、潜在顾客、人员帐户和 用户。

{
  "orgName": "Acme",
  "edition": "Enterprise",
  "settings": {
      "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
       },
       "nameSettings": {
          "enableMiddleName": true,
          "enableNameSuffix": true
      }
  }
}

临时组织设置

临时组织设置是在临时组织中定义组织首选项的格式 定义。由于可以使用所有元数据 API 设置,因此它们是最全面的 配置临时组织的方式。如果某个设置在元数据 API 中受支持,则在 临时组织。设置为您提供细粒度控制,因为您可以定义值 对于设置的所有字段,而不仅仅是启用或禁用它。

有关元数据 API 设置及其支持字段的信息,请参阅元数据 API 开发人员指南中的设置

重要

尽管“设置”在“元数据”中是大写驼峰式的 API 开发者指南,请务必在 临时组织定义。

{
  "orgName": "Acme",
  "edition": "Enterprise",
  "features": ["Communities", "ServiceCloud", "Chatbot"],
  "settings": {
      "communitiesSettings": {
          "enableNetworksEnabled": true
      },
      "lightningExperienceSettings": {
          "enableS1DesktopEnabled": true
      },
      "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
      },
      "omniChannelSettings": {
          "enableOmniChannel": true
      },
      "caseSettings": {
          "systemUserEmail": "support@acme.com"
      }
  }
}

下面是如何在临时组织中配置 SecuritySettings 的示例。在 在这种情况下,要定义会话超时,请嵌套字段值。

{
  "orgName": "Acme",
  "edition": "Enterprise",
  "features": [],
  "settings": {
       "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
       },
      "securitySettings": {
          "sessionSettings":{
             "sessionTimeout": "TwelveHours"
          }  
      }
  }
}

此示例演示如何使用 NameSettings 启用中间名和 组织中以下人员对象的后缀:联系人、潜在顾客、人员帐户和 用户。

{
  "orgName": "Acme",
  "edition": "Enterprise",
  "settings": {
      "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
       },
       "nameSettings": {
          "enableMiddleName": true,
          "enableNameSuffix": true
      }
  }
}

基于组织形状创建临时组织

我们知道,构建一个反映功能和 生产组织中的设置。使用 Organizational Shape for Scratch Orgs,您可以继续构建 从头开始组织定义。捕获组织的形状后,可以启动刮擦 基于它的组织。

适用于: 开发人员、组、专业、无限制和 企业版。从组织形状创建的临时组织与 源组织。

不适用于: 临时组织和沙箱

组织形状中包含哪些内容?

功能、元数据 API 设置、 版本、限制和许可证决定了我们所说的组织形态。为 进一步说明,组织形式包括:

  • 包含字段的元数据 API 设置。boolean
  • 与已安装的软件包关联的许可证,但与软件包本身无关。自 使用关联的软件包,将其安装在从组织创建的临时组织中 形状。

注意

创建组织形状时,不会捕获某些功能。但是,您可以添加 手动将功能添加到临时组织定义文件中。有关详细信息,请参阅组织形状疑难解答

组织形状中不包含哪些内容?

  • 带有 或 字段的元数据 API 设置。但是,您可以 手动添加非布尔设置或源中未包含的其他设置 org 添加到您的 scratch 组织定义。有关示例,请参阅组织形状的临时组织定义integerstring
  • 元数据类型
  • 数据

组织形状特定于发布

临时组织形状与特定的 Salesforce 版本相关联。请务必 在源组织升级到新的 Salesforce 后重新创建组织形状 释放。在 Salesforce 主要版本转换期间,您的 Dev Hub 组织和源 org 可以采用不同的发布版本。有关期间的选项,请参阅组织形状的临时组织定义 过渡期。

  • 为 Scratch 组织启用组织形状 为要捕获其形状的组织(源组织)中的临时组织
    启用组织形状
  • 组织形状权限
    开发人员中心组织的 Salesforce 管理员必须向计划创建组织形状或基于组织形状创建临时组织的用户分配权限。如果您已经为 Salesforce DX 用户设置了权限,则可以将其更新为包含访问权限。
  • 创建和管理组织形状
    创建组织形状以模拟源组织的基线设置(功能、限制、版本和元数据 API 设置),而不使用无关的数据和元数据。如果该组织的功能、设置或许可证发生更改,您可以通过重新创建组织配置来捕获这些更新。一次只能有一个活动组织结构。
  • 组织形状的临时组织定义 在组织形状
    创建期间,我们捕获指定源组织的功能、设置、版本、许可证和限制。这样,您就不必手动将这些项目包含在临时组织定义文件中。您可以仅基于源组织形状创建临时组织。或者,您可以在临时组织定义文件中添加更多功能和设置,以包括源组织中不存在的功能。
  • 组织形状疑难解答 以下是将组织形状
    用于临时组织时可能遇到的一些问题。

为临时组织启用组织形状

为要捕获其形状的组织中的临时组织启用组织形状(来源 组织)。

适用于:开发人员版、组版、专业版、无限制版和企业版 版本

不适用于:临时组织和沙盒

请务必:

  • 如果需要,请在源组织和开发人员中心组织中为临时组织启用组织形状 捕获不是开发人员中心组织的组织的形状。
  • 输入组织 ID 时,请仅使用前 15 个字符,而不是完整的 18 个字符 组织 ID。

您可以在“公司设置”>中找到组织 ID 信息

  1. 在用于创建临时组织的 Dev Hub 组织中为 Scratch 组织启用组织形状。 如果您需要帮助,请联系 Salesforce 管理员。
    1. 在“设置”中,在“快速查找”框中输入“组织形状”,然后选择“组织形状”。
    2. 单击“为临时组织启用组织形状”(Enable Organizational Shape for Scratch Orgs) 的切换开关。
    3. 在文本框中,输入开发人员中心的 15 个字符的组织 ID,然后单击“保存”。
  2. (可选)如果源组织与开发人员中心组织不同,请为 源组织中的临时组织。
    1. 登录到源组织。
    2. 在“设置”中,在“快速查找”框中输入“组织形状”,然后选择“组织形状”。
    3. 单击“为临时组织启用组织形状”(Enable Organizational Shape for Scratch Orgs) 的切换开关。
    4. 输入用于创建临时组织的 15 个字符的 Dev Hub 组织 ID。

最多可以指定 50 个开发人员中心组织 ID 来解决以下常见用例:

  • 您有多个生产组织,但您的开发团队只能访问一个。对于 他们正在构建的定制,他们需要另一个生产组织的形状。
  • 开发人员使用自己的开发人员中心组织,并且无权访问生产组织。 但是,他们希望根据生产组织的形状创建临时组织。
  • 您是使用生产组织创建临时组织的 ISV。您想要捕获 第一代打包组织的形状,以便您可以构建第二代包。

组织形状权限

Dev Hub 组织的 Salesforce 管理员必须将权限分配给计划以下用户: 创建组织形状,或基于组织形状创建临时组织。如果您已经拥有权限 设置为 Salesforce DX 用户,您可以将其更新为包含访问权限。

访问权限
创建组织形状对象设置>形状表示>创建、编辑
删除组织形状对象设置>形状表示>删除
使用组织形状创建临时组织除了用于创建暂存的权限外,不需要其他权限 组织。

您不需要“全部修改”权限即可删除其他人创建的形状,因为 组织中一次只能有一个活动形状。

支持的许可证

除了为用户提供适当的权限外,请务必将 Salesforce 许可给 Org Shape 用户。目前不支持其他用户许可证 时间。

创建和管理组织形状

创建组织形状以模拟基线设置(功能、限制、版本和元数据) API 设置),没有无关数据和元数据的源组织。如果功能、设置、 或该组织更改的许可证,您可以通过重新创建组织形状来捕获这些更新。您可以 一次只有一个活动组织形状。

组织配置捕获元数据 API 设置,而不是所有元数据类型。例如 组织中显示的自定义项(如 Lightning Experience 主题)不包括在内 组织形状的一部分。请参阅元数据 API 中的设置 完整列表指南。

组织形状包括组织首选项和权限。它不包括 AddressSettings 等数据条目。

重要

临时组织形状与特定的 Salesforce 版本相关联。是 确保在源组织升级到新的 Salesforce 版本后重新创建组织配置。

  1. 同时授权开发人员中心组织和源组织。为每个组织运行此命令。sf auth web login --alias
  2. 为源组织创建组织形状。此命令启动一个异步进程,以 创建组织形状。sf org create shape --target-org <source org username/alias> Successfully created org shape for 3SRB0000000TXbnOCG.
  3. 检查 shape:create 命令的状态。sf org shape list=== Org Shapes ALIAS USERNAME ORG ID SHAPE STATUS CREATED BY CREATED DATE ────── ──────── ────────────────── ──────────── ────────── ───────────── SrcOrg me@my.org 00DB1230000Ifx5MAC InProgress me@my.org 2020-08-06您可以在状态为 : 之后使用组织形状:Active=== Org Shapes ALIAS USERNAME ORG ID SHAPE STATUS CREATED BY CREATED DATE ────── ───────── ────────────────── ──────────── ──────────── ──────────── SrcOrg me@my.org 00DB1230000Ifx5MAC Active me@my.org 2020-08-06

如果再次运行该命令 此组织,以前的形状被标记为非活动状态,并被新的活动形状替换。

sf org create shape

如果你 不想基于此形状创建临时组织,可以删除组织形状。删除 一个组织 形状:

sf org delete shape --target-org <username/alias>

组织形状的临时组织定义

在组织形状创建期间,我们会捕获功能、设置、版本、许可证和 指定源组织的限制。这样,您就不必手动包含这些项目 在临时组织定义文件中。您可以仅基于源创建临时组织 组织形状。或者,您可以在临时组织定义文件中添加更多功能和设置 包括源组织中不存在的功能。

重要

在临时组织定义中,指示 15 个字符而不是 .sourceOrg 是您创建其形状的组织的组织 ID。 仅使用前 15 个字符,而不是完整的 18 个字符的组织 ID。sourceOrgedition

简单的临时组织定义文件

如果您的 Dev Hub 组织、源组织和组织形状都位于同一 Salesforce 上 版本,您可以使用简单的临时组织定义。

{
  "orgName": "Acme",
  "sourceOrg": "00DB1230400Ifx5"
}

Salesforce 版本过渡期间的临时组织定义文件

在 Salesforce 主要版本过渡期间,您的 Dev Hub 组织和源组织可以 使用不同的版本。如果你的 Dev Hub 组织与你的版本不同 source org,将选项添加到 临时组织定义文件,以使用组织形状创建临时组织。release

{
  "orgName": "Acme",
  "sourceOrg": "00DB1230400Ifx5",
  "release": "previous"
}
源 Org/Org Shape 版本Dev Hub 版本支持的 Scratch Org 版本在临时组织定义文件中使用的释放选项
当前预览仅限当前版本“release”: “previous”
预览当前仅限预览版“release”: “preview”

DevOps Center 的临时组织定义文件

如果您基于启用了 DevOps Center 的组织配置创建临时组织,我们将 仍要求将 DevOps Center 功能和设置添加到临时组织 定义。我们要求客户出于法律原因明确启用它 DevOps Center 条款和条件。

{
    "orgName": "Acme",
    "sourceOrg": "00DB1230400Ifx5",
    "features": ["DevOpsCenter"],
    "settings": {
        "devHubSettings": {
            "enableDevOpsCenterGA": true
            }  
        }  
    }

具有其他功能和设置的临时组织定义文件

添加组织形状未捕获的功能,或测试源组织的功能 没有,您可以添加更多临时组织功能和元数据 API 设置。 设置是指“设置”元数据类型,而不是所有元数据类型。

{
  "orgName": "Acme",
  "sourceOrg": "00DB1230000Ifx5",
  "features": ["Communities", "ServiceCloud", "Chatbot"],
  "settings": {
      "communitiesSettings": {
          "enableNetworksEnabled": true
      },
      "mobileSettings": {
          "enableS1EncryptedStoragePref2": true
      },
      "omniChannelSettings": {
          "enableOmniChannel": true
      },
      "caseSettings": {
          "systemUserEmail": "support@acme.com"
      }
  }
}

下一步:使用组织形状临时组织定义文件创建临时组织。

组织形状疑难解答

以下是在将 Org Shape 用于临时组织时可能遇到的一些问题。

组织形状未捕获的某些功能

描述:某些功能和设置未在组织结构中启用, 在许多情况下,由于安全或法律原因,这是设计使然。

  • DevOps中心
  • 多币种
  • 个人帐户

解决方法:将它们添加到临时组织定义中。

{
    "orgName": "Acme",
    "sourceOrg": "00DB1230400Ifx5",
    "features": ["PersonAccounts", "DevOpsCenter"],
    "settings": 
      {
       "currencySettings": 
          "enableMultiCurrency": true
      }
  }

某些 Field Service 功能未在组织形状中启用

描述:即使 Field Service 增强了调度 和优化,并在源中启用 Field Service 集成功能 创建组织形态的组织,则在创建 基于组织形状的 scratch 组织。

解决方法:手动添加缺少的 Field Service 元数据 临时组织定义的 API 设置,具体取决于启用的功能 在源组织中。

方案 1:如果组织配置同时包括 Field Service 增强计划和 优化和 Field Service 集成功能,手动添加 Field Service 临时组织定义中的增强计划和优化元数据 API 设置 文件,这将启用这两个功能。o2EngineEnabled

"settings": 
    { 
     "fieldServiceSettings": 
      { 
        "fieldServiceOrgPref": true,
          "o2EngineEnabled": true
      }
    }

方案 2:如果组织结构仅包含 Field Service 集成功能, 手动添加 Field Service 增强型计划和优化元数据 API 将 ,设置为 临时组织定义文件。optimizationServiceAccess

"settings": 
    { 
     "fieldServiceSettings": 
      { 
        "fieldServiceOrgPref": true,
           "optimizationServiceAccess": true
      }
    }

DevOps Center 未在基于组织形状的临时组织中启用

描述:尽管在源中启用了 DevOps Center org,从源组织的形状创建的临时组织没有 DevOps Center 启用。故意关闭 DevOps Center 组织首选项。我们要求 客户通过在临时中指示功能和设置来显式启用它 出于法律原因的组织定义文件,作为 DevOps Center 条款的一部分,以及 条件。

解决方法:将 DevOps Center 功能和设置添加到 临时组织定义文件。请参阅组织形状的临时组织定义 详。

运行 force:org:shape:list 时出错

描述:从中创建组织形状的试用组织 已过期。您可以看到以下任一错误:

ERROR running org list shape: Error authenticating with the refresh token due to: inactive user
ERROR running org list shape: Error authenticating with the refresh token due to: expired access/refresh token

解决方法:

  • 用于注销和删除 已过期的组织。sf org logout
  • 再次运行。sf org list shape

无法使用 Org Shape 创建 Digital Experience Cloud 站点

描述:当您尝试从组织创建临时组织时 包含 Experience Cloud 站点的形状,则会出现错误。

Required fields are missing: [Welcome Email Template, Change Password Email Template, Lost Password Template]

解决方法:没有。

使用形状创建临时组织时出错

描述:创建临时组织时会看到此错误 使用形状。

ERROR running org create scratch: A fatal signup error occurred. Please try again. 
If you still see this error, contact Salesforce Support for assistance.

解决方法:使用命令生成新形状,然后重试。org create shape

使用带字段的形状时,不会填充班次状态选择列表 服务

描述:当您从形状创建临时组织时 启用 Field Service,排班的 状态 字段选择列表为空。

解决方法:使用禁用了现场服务的组织结构,然后 在临时组织定义文件设置中启用 Field Service。

{
 "orgName": "Acme",
 "sourceOrg": "00DB1230000Ifx5",
 "settings": {
     "fieldServiceSettings": {
         "fieldServiceOrgPref": true
     }
 }
}

组织形状功能仅接受 15 个字符的组织 ID

描述:在以下情况下,您只能使用 15 个字符的组织 ID 为 Scratch 组织启用组织形态,并在临时组织中指定源组织 定义文件。组织 ID 的长度通常为 18 个字符,这是命令显示的内容。org list

解决方法:仅使用标准的前 15 个字符 使用“组织形状”功能时的 18 个字符的组织 ID。

创建临时组织

轻松启动临时组织并直接从命令行打开它。

在创建临时组织之前:

  • 设置您的 Salesforce DX 项目
  • 授权开发人员中心组织
  • 创建临时组织定义文件(构建自己的组织或使用组织形状)

您可以为不同的功能创建临时组织,例如用于功能开发、 开发包含命名空间的包,或用于用户验收测试。

提示

删除开发人员中心组织中任何不需要或出现故障的暂存组织,或通过 命令行,这样它们就不会计入您的活动临时组织分配。

指示临时定义文件相对于当前目录的路径。为 示例存储库和新项目,此文件位于 config 目录中。

创建临时组织的方法

使用 临时组织定义文件,给临时组织一个别名,并指明这个临时组织 是默认值。使用标志指定 您的 Dev Hub 组织的用户名或别名;如果未指定此标志,则该命令将使用 默认 Dev Hub。

–target-dev-hub

sf org create scratch --definition-file config/project-scratch-def.json --alias MyScratchOrg --set-default --target-dev-hub MyHub

你 可以通过指定相应的 标志,当您运行 .此技术允许多个用户或持续集成作业 共享基本定义文件,然后在运行命令时自定义选项。这 example 覆盖 adminEmail 和 edition 选项。org create scratch

sf org create scratch --definition-file config/project-scratch-def.json --admin-email me@email.com --edition developer

你是 创建临时组织时不需要指定定义文件,只要您 指定所需的标志。–edition

sf org create scratch --edition developer

这 示例从具有指定 ID 的组织形状创建临时组织。

sf org create scratch --source-org 00DB1230000Ifx5

创造 用于用户验收测试或测试软件包安装的临时组织。在这个 情况下,您不想创建具有命名空间的临时组织。您可以使用此命令执行以下操作 覆盖临时组织定义文件中的命名空间值。此示例还指定 临时组织的持续时间,指示临时组织的到期时间(1-30 天后)。这 默认持续时间为 7 日。

sf org create scratch --definition-file config/project-scratch-def.json --no-namespace --duration-days 30

指定 临时文件的 Salesforce 版本。在 Salesforce 版本过渡期间,您 可以在创建临时组织时指定版本(预览版或上一个版本)。请参阅为 Scratch 组织选择 Salesforce 版本 详。

sf org create scratch --edition developer --release preview

请求 一个临时组织,但不要等待它完成,通过指定标志。–async

sf org create scratch --edition developer --async

这 command 显示传递给该命令的作业 ID。使用此命令还可以恢复临时组织创建,该 超时。org resume scratch

sf org resume scratch --job-id 2SRB0000CSqdJOAT

创造 具有源代码跟踪功能的临时组织 禁用。

sf org create scratch --definition-file config/project-scratch-def.json --no-track-source

如果临时组织创建成功

执行时,命令 显示有关后台进程的运行信息,例如发送请求、 部署组织设置等。命令完成后,它会显示两个重要的 信息片段:组织 ID 和用户名。org create scratch

Creating Scratch Org... 
RequestId: 2SRB000000CSqdEOAT (https://cbdocorg.my.salesforce.com/2SRB000000CSqdEOAT)
OrgId: 00D8I000000PhAk 
Username: test-st9thgoyyyq3@example.com 
✓ Prepare Request
✓ Send Request
✓ Wait For Org
✓ Available
✓ Authenticate
✓ Deploy Settings
Done

Your scratch org is ready.

您现在可以打开 组织。

sf org open --target-org test-st9thgoyyyq3@example.com

如果使用该标志设置别名,则可以 将该值用于 。–alias–target-org

sf org open --target-org MyScratchOrg

疑难解答提示

如果 create 命令遇到错误,则并不总是清楚临时组织是否 创建。在 Dev Hub 组织上发出此命令,查看它是否返回暂存组织 ID。 这证实了今天创建并由您拥有的临时组织的存在:

sf data query --query "SELECT ID, Name, Status FROM ScratchOrgInfo WHERE CreatedBy.Name = '<your name>' AND CreatedDate = TODAY" --target-org <Dev Hub org>

使用此信息可确定创建是否实际有效。例如,假设 你的名字是 Jane Doe,你为 Dev Hub 组织创建了一个名为 DevHub 的别名:

sf data query --query "SELECT ID, Name, Status FROM ScratchOrgInfo WHERE CreatedBy.Name = 'Jane Doe' AND CreatedDate = TODAY" --target-org DevHub

选择临时组织的 Salesforce 版本

在 Salesforce 版本转换期间,您可以指定版本(预览或 previous) 创建临时组织时。

什么是 Salesforce Preview?

在每个主要的 Salesforce 版本中,您都可以在 您的 Scratch 组织和沙盒,用于在生产之前测试新的自定义和功能 org 已升级。此窗口称为 Salesforce 预览,并在 即将发布的版本称为预览暂存组织。

通常,创建与开发人员中心版本相同的临时组织。然而 在每年发生三次的主要 Salesforce 版本过渡期间,您可以选择 Salesforce 发行版或 ,具体取决于 Dev Hub 的版本。PreviewPrevious

若要在即将发布的版本中试用新功能,不再需要创建试用版 Dev Hub 在即将推出的版本上创建预览暂存组织。您可以使用现有的 Dev 中心,包括您现有的临时组织、活动和每日限制。

例如,您可以在这些版本中选择接下来的三个版本中的一个版本 发布过渡日期。预览开始日期是升级沙盒实例的时间。预览结束 date 是所有实例都处于 GA 版本上的时间。

发布版本预览开始日期预览结束日期
冬季 ’248月 27, 202310月 14, 2023
春季 ’241月 7, 20242月 10, 2024
夏季 ’245月 12, 20246月 15, 2024

由于“以前”和“预览”是相对术语,因此开发人员中心组织 版本在发布转换期间决定了它们的相对重要性。内容如下 当您尝试使用其中一个发布值创建临时组织时发生。

Dev Hub 版本预览以前
Dev Hub 已升级到最新版本错误(Dev Hub 已在最新版本上)以前的 Dev Hub 版本
Dev Hub 仍处于 GA 版本上Dev Hub 版本之后的版本(新发布的 Salesforce 版本)错误(Dev Hub 在 GA 版本上;以前的版本不可用)

注意

如果未指定发布值,则临时组织版本与 Dev Hub 组织。

为特定版本创建临时组织

您可以在临时组织定义文件中指定发布版本,也可以直接在 命令行。您在命令行上设置的任何值都会覆盖您在 临时定义文件。

  • 找出你的 Dev Hub 组织所在的实例:https://status.salesforce.com
  • 将释放选项(小写)添加到临时组织定义文件中。{ "orgName": "Dreamhouse", "edition": "Developer", "release": "preview", "settings": { "mobileSettings": { "enableS1EncryptedStoragePref2": true } } }或者,您可以直接在命令行上指定发布值 与旗帜。您在 命令行将覆盖临时组织定义中的值。–release
  • 通过在终端(macOS 和 Linux)或命令提示符 (Windows) 中执行命令来创建临时组织。org create scratch在 在此示例中,我们将在预览版上创建一个临时组织 释放。sf org create scratch --definition-file config/project-scratch-def.json --alias PreviewOrg --target-dev-hub DevHub --release preview

请务必将 设置为与临时组织匹配 版本。apiVersion

要为所有 DX 项目全局设置它:

sf config set org-api-version 59.0 --global

要在命令行上设置它,请执行以下操作:

SF_ORG_API_VERSION=59.0 sf org create scratch  --definition-file config/project-scratch-def.json --alias PreviewOrg --target-dev-hub DevHub --release preview

注意

无论开发人员中心的发布版本如何,都可以使用临时组织功能,这些功能可以 在您创建的临时文件的发行版(预览版或更早版本)中可用。

如果我想创建一个预发布的 Scratch 组织,该怎么办?

预发布版是最新版本的 Salesforce 的早期版本,之前可用 Salesforce 预览版。它不是为处理规模而构建的,也不附带任何 Salesforce 支持 服务级别协议 (SLA)。因此,创建预发布临时数据的唯一方法 org 将注册预发布试用版 Dev Hub 组织(视情况而定)。

将源代码从您的项目部署到 Scratch 组织

更改源后,您可以通过部署将更改同步到临时组织 使用命令更改的源。

project deploy start

注意

默认情况下,临时组织启用了源跟踪。但有时你不想要来源 跟踪,例如在持续集成环境中,当您想要加快速度时 部署。您可以在创建临时组织时选择退出源跟踪,方法是指定 旗帜。–no-track-source

sf org create scratch --definition-file config/project-scratch-def.json --no-track-source

请参阅创建临时组织,了解禁用源跟踪的更多原因。

首次将源部署到组织时,该文件的包目录中的所有源都将部署到临时组织 以完成初始设置。此时,Salesforce CLI 在 文件系统和远程在临时组织中,以确定哪些元数据已更改。让我们 假设您将一个 Apex 类部署到一个临时组织,然后决定修改 临时组织,而不是本地文件系统。Salesforce CLI 跟踪哪个本地包 创建类的目录,因此当您将其检索回项目时,它知道在哪里 它属于。sfdx-project.json

若要运行本主题其余部分中所述的部署命令,请首先打开终端 (macOS 和 Linux)或命令窗口 (Windows),然后切换到您的 Salesforce DX 项目 目录。

预览部署

在将源部署到组织之前,您可以预览将要部署的组件。 潜在的冲突,以及通过执行 忽略的文件。例如,此命令显示 将项目中的所有源代码部署到别名为 的临时组织。project deploy previewMyGroovyScratchOrg

sf project deploy preview --target-org MyGroovyScratchOrg

使用标志来定位要预览的源,例如仅 清单。在此示例中,指向 Scratch Org 的用户名。–target-org

sf project deploy preview --manifest package.xml --target-org test-am6xqkossaq8@example.com

提示

您可以使用 为组织创建别名。要显示您创建的所有临时文件的用户名和别名, 跑。alias setorg list

将源部署到临时组织

要将更改的本地源部署到默认临时组织,请运行此命令。

sf project deploy start

该命令显示它部署的内容。此示例输出显示了 Apex 类的部署。PropertyController

Deploying v58.0 metadata to test-am6xqkossaq8@example.com using the v59.0 SOAP API.
Deploy ID: 0Af7e00001WsuoSCAR
Status: Succeeded | ████████████████████████████████████████ | 1/1 Components (Errors:0) | 0/0 Tests (Errors:0)

Deployed Source
=====================================================================================================
| State   Name               Type      Path                                                           
| ─────── ────────────────── ───────── ────────────────────────────────────────────────────────────── 
| Changed PropertyController ApexClass force-app/main/default/classes/PropertyController.cls          
| Changed PropertyController ApexClass force-app/main/default/classes/PropertyController.cls-meta.xml

使用标志来定位要部署的源,而不是更改的所有内容。

  • 使用标志部署特定元数据 组件,例如 Apex 类。–metadata
  • 使用标志在 清单文件。–manifest
  • 用于在包中部署源 目录。–source-dir

有关示例和其他标志,请参阅有关项目部署启动的参考信息 您可以指定。

选择要在部署期间忽略的文件

您可能有一些不想在项目和项目之间同步的文件 Scratch 组织。将这些文件添加到文件中 因此,deploy 命令会忽略它们。.forceignore

如果 Deploy 检测到警告

如果运行 ,并出现警告, Salesforce CLI 不会部署源。例如,如果项目出现以下情况,则可能会出现警告 源正在使用过时的版本。如果要忽略这些警告并部署 源到 Scratch 组织,运行:project deploy start

sf project deploy start --ignore-warnings

提示

尽管可以使用此选项成功部署,但我们建议 解决源文件中的问题。例如,如果您看到一条警告,因为 Visualforce 页面使用的版本已过时,请考虑将您的页面更新为当前版本 Visualforce 版本。这样,您就可以利用新功能和性能 改进。

如果 Deploy 检测到文件冲突

在开发过程中,您可以在文件系统中本地更改文件并更改临时组织 直接使用 Salesforce 提供的构建器和编辑器。通常,这些变化 不会引起冲突并涉及唯一文件。此外,该命令不处理合并。项目和临时组织 旨在由一个开发人员使用。project deploy start

但是,如果运行 ,并且 检测到冲突时,Salesforce CLI 会终止操作,并且不会部署 源。相反,它显示冲突信息,例如此示例输出。这 PropertyController Apex 类已在本地和组织中更改,但更改 处于冲突之中。project deploy start

sf project deploy start
 STATE    FULL NAME          TYPE      FILE PATH                                                                                                 
 ──────── ────────────────── ───────── ───────────────────────────────────────────────────────────────────────────────────────────────────────── 
 Conflict PropertyController ApexClass <dir>/force-app/main/default/classes/PropertyController.cls-meta.xml 
 Conflict PropertyController ApexClass <dir>/force-app/main/default/classes/PropertyController.cls          
Error (1): There are changes in the org that conflict with the local changes you're trying to deploy.

首先确定要保留的更改。要保留本地更改,请重新运行 deploy 和 指定标志。–ignore-conflicts

sf project deploy start --ignore-conflicts

若要保留组织中的更改,请运行命令以检索对本地项目的更改,并指定标志。project retrieve start–ignore-conflicts

sf project retrieve start --ignore-conflicts

从 Scratch 组织检索到您的项目的源代码

执行初始部署后,将在本地文件系统之间跟踪更改 和你的 Scratch 组织。如果更改临时组织中的元数据,请将这些更改检索到 您的本地项目,以保持两者同步。

注意

默认情况下,临时组织启用了源跟踪。但有时你不想要 源跟踪,例如在持续集成环境中,当您想要加速时 部署。在创建临时组织时,您可以通过以下方式选择退出源跟踪 指定标志。–no-track-source

sf org create scratch --definition-file config/project-scratch-def.json --no-track-source

请参阅创建临时组织,了解禁用源跟踪的更多原因。

要运行本主题其余部分中描述的检索命令,请首先打开 终端(macOS 和 Linux)或命令窗口 (Windows),然后切换到您的 Salesforce DX 项目目录。

预览检索

在从组织中检索元数据之前,您可以预览将 检索到的潜在冲突,以及通过执行 来忽略的文件。例如,以下命令 显示从具有别名的临时组织检索本地项目的更改元数据的预览。project retrieve previewMyGroovyScratchOrg

sf project retrieve preview --target-org MyGroovyScratchOrg

提示

您可以使用 为组织创建别名。显示您拥有的所有临时文件的用户名和别名 创建,运行 .alias setorg list

从 Scratch 组织中检索元数据

要从默认临时组织检索到项目中更改的源代码,请运行以下命令 命令

sf project retrieve start

该命令显示它检索到的内容以及它在本地 Salesforce DX 项目中的位置 说。此示例输出显示 Apex 类和权限集到目录中的检索。DiscountSpecialDiscountPermSetforce-app/main/default

Preparing retrieve request... ⣟
Preparing retrieve request... Succeeded

Retrieved Source
====================================================================================================================
| State   Name            Type          Path                                                                         
| ─────── ─────────────── ───────────── ──────────────────────────────────────────────────────────────────────────── 
| Created DiscountSpecial ApexClass     force-app/main/default/classes/DiscountSpecial.cls                           
| Created DiscountSpecial ApexClass     force-app/main/default/classes/DiscountSpecial.cls-meta.xml                  
| Created DiscountPermSet PermissionSet force-app/main/default/permissionsets/DiscountPermSet.permissionset-meta.xml

使用标志来定位要检索的源,而不是所有内容 改变。

  • 使用标志检索特定的 元数据组件,例如 Apex 类。–metadata
  • 使用标志检索组件 在清单文件中。–manifest
  • 用于检索 package 目录。–source-dir

有关示例和其他,请参阅有关项目检索开始的参考信息 可以指定的标志。

选择要在检索过程中忽略的文件

您可能有一些不想在项目和项目之间同步的文件 Scratch 组织。将这些文件添加到文件中,以便 retrieve 命令忽略它们。.forceignore

如果检索检测到文件冲突

在开发过程中,您可以在文件系统中本地更改文件并更改临时 组织使用构建器和编辑器。通常,这些更改不会导致冲突,并且 涉及唯一文件。此外,该命令不处理合并。项目和临时组织旨在 由一个开发人员使用。project retrieve start

但是,如果运行 ,并且 检测到冲突时,Salesforce CLI 会终止操作,并且不会检索 源。相反,它显示冲突信息,例如此示例输出。这 PropertyController Apex 类已在本地和组织中更改,但 更改是相互冲突的。project retrieve start

sf project retrieve start
Preparing retrieve request... ⣾ Sending request to org
 STATE    FULL NAME          TYPE      FILE PATH                                                                                                 
 ──────── ────────────────── ───────── ─────────────────────────────────────────────────────────────────── 
 Conflict PropertyController ApexClass <dir>force-app/main/default/classes/PropertyController.cls-meta.xml 
Preparing retrieve request... Error
Error (1): There are changes in your local files that conflict with the org changes you're trying to retrieve.

首先确定要保留的更改。要保留组织中的更改,请重新运行 检索并指定标志。–ignore-conflicts

sf project retrieve start --ignore-conflicts

要保留本地更改,请运行命令以将更改部署到您的组织,并指定标志。project deploy start–ignore-conflicts

sf project deploy start --ignore-conflicts

Scratch 组织用户

默认情况下,临时组织包括一个管理员用户。管理员用户通常为 足以满足您的所有测试需求。但有时您需要其他用户使用不同的用户进行测试 配置文件和权限集。

您可以通过在浏览器中打开临时组织并导航到“用户”页面来创建用户 在设置中。您还可以使用 CLI 命令,以便轻松地将任务集成到持续集成作业中。org create user

Scratch Org 用户限制、默认值和注意事项

  • 您只能对临时运行该命令 组织。如果尝试为非临时组织创建用户,则该命令将失败。org create user
  • 临时组织版本决定了可用用户许可证的数量。数量 许可证决定了您可以创建的用户数。例如,开发人员 Edition 组织最多包含两个 Salesforce 用户许可证。因此,在 除了默认管理员用户之外,还可以创建一个标准用户。
  • 新用户的用户名必须在所有 Salesforce 组织中是唯一的,并且必须采用电子邮件的形式 地址。该命令提供 旗帜要确保 唯一性。用户名仅在关联的临时划线范围内处于活动状态 组织。org create user–set-unique-username
  • 您无法使用 Salesforce CLI 删除用户,就像您无法删除 Salesforce 用户一样 使用设置。当您删除临时组织时,用户将被停用,该临时组织与该组织 用户已关联。停用用户会释放用户许可证。但你不能 重复使用用户名,即使关联的用户已被停用。
  • 创建用户的最简单方法是让命令将默认特征或生成的特征分配给新用户。 如果要自定义新用户,请创建一个定义文件,并使用 () 标志。在文件中,您可以包含所有用户 sObject 字段和一组特定于 Salesforce DX 的选项,如用于自定义临时组织用户的用户定义文件中所述。您可以 此外,在命令行上指定这些选项。org create user–definition-file-f
  • 如果不自定义新用户,该命令将创建具有以下默认特征的用户。org create user
    • 用户名是现有管理员的用户名,前面加上 时间戳。例如,如果管理员用户名是 test-wvkpnfm5z113@example.com,新用户名类似于 1505759162830_test-wvkpnfm5z113@example.com。
    • 用户的配置文件是标准用户。
    • 用户 sObject 的必填字段的值是对应的 管理员用户的值。例如,如果管理员的区域设置 (特别是用户 sObject 的 LocaleSidKey 字段)en_US,新用户的 locale 也en_US。
  • 创建临时组织用户 尽管临时组织被设计为供一个开发人员使用,但有时您需要其他用户
    使用不同的配置文件和权限集进行测试。
  • 用于自定义临时组织用户
    的用户定义文件 要自定义新的临时组织用户,而不是使用默认值和生成的值,请创建定义文件。
  • 生成或更改临时组织用户的
    密码 默认情况下,新的临时组织包含一个没有密码的管理员用户。使用 CLI 命令生成或更改此管理员用户的密码。设置后,您无法取消设置密码,只能更改密码。org generate password

创建临时组织用户

尽管临时组织被设计为供一个开发人员使用,但有时您需要 其他用户使用不同的配置文件和权限集进行测试。

使用该命令创建用户。 指定要为其分配简单名称的标志 您可以在以后的 CLI 命令中引用的用户。命令完成后,它会输出 新的用户名和用户 ID。org create user–set-alias

sf org create user --set-alias qa-user --target-org my-scratch
Successfully created user "1690397809_test-st9thgoyyyq3@example.com" with ID 0058I002inzvQAA for org 00D80000PhAkUAK.

See more details about this user by running "sf org user display -o 1690397809774_test-st9thgoyyyq3@example.com".

用户与特定的临时组织相关联。指定临时组织用户名或别名 在命令行中带有标志,如果它 尚未设置为默认值。如果尝试为非临时组织创建用户,则该命令将失败。–target-orgorg create user

您可以通过创建定义文件并指定它来自定义新用户 与旗帜。–definition-file

sf org create user --set-alias qa-user --definition-file config/user-def.json

使用该命令查看与临时组织关联的用户列表。左侧的 (A) 标识 在创建临时组织时创建。org list users

sf org list users --target-org my-scratch
=== Users in org 00D80000PhAkUAK

 Default Alias      Username                                    Profile Name         User Id            
 ─────── ────────── ─────────────────────────────────────────── ──────────────────── ─────────────── 
 (A)     my-scratch test-st9thgoyyyq3@example.com               System Administrator 0058I002inzvQAA 
         qa-user    1690397809_test-st9thgoyyyq3@example.com    Standard User        0058I002inzvQAA

使用命令显示有关用户的详细信息。org display user

sf org display user --target-org qa-user
Warning: This command exposes sensitive information <truncated for readability>

=== User Description

 key          label                                                                                                            
 ──────────── ──────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
 Username     1690397809_test-st9thgoyyyq3@example.com                                                                         
 Profile Name Standard User                                                                                                    
 Id           0058I002inzvQAA                                                                                                  
 Org Id       00D80000PhAkUAK                                                                                                  
 Access Token 00D8I<truncated> 
 Instance Url https://connect-enterprise-1121-dev-ed.scratch.my.salesforce.com                                                 
 Login Url    https://connect-enterprise-1121-dev-ed.scratch.my.salesforce.com                                                 
 Alias        qa-user

用于自定义临时组织用户的用户定义文件

要自定义新的临时组织用户,而不是使用默认值和生成的值, 创建定义文件。

用户定义文件使用 JSON 格式,可以包含任何 Salesforce 用户 sObject 字段和 这些特定于 Salesforce DX 的选项。

Salesforce DX 选项描述默认值(如果未指定)
permsets分配给用户的权限集数组。用逗号分隔多个值, 并用方括号括起来。您必须之前已将权限集部署到 带有 .project deploy start没有
generatePassword布尔。指定是否为用户生成随机密码。如果设置为 ,则在完成后显示生成的密码。您还可以查看 密码使用 。trueorg create userorg display user
profileName要与用户关联的配置文件的名称。类似于 ProfileId 字段 用户 sObject,但您指定了配置文件的名称,而不是其 ID。 方便 您只知道配置文件的名称。标准用户

用户定义文件选项不区分大小写。但是,我们建议您使用较低的 驼峰大小写用于 Salesforce DX 特定选项,驼峰大小写用于用户 sObject 领域。此格式与其他 Salesforce DX 定义文件一致。

此用户定义文件包括一些用户 sObject 字段和三个 Salesforce DX 选项 (、 和 )。profileNamepermsetsgeneratePassword

{
    "Username": "tester1@sfdx.org",
    "LastName": "Hobbs",
    "Email": "tester1@sfdx.org",
    "Alias": "tester1",
    "TimeZoneSidKey": "America/Denver",
    "LocaleSidKey": "en_US",
    "EmailEncodingKey": "UTF-8",
    "LanguageLocaleKey": "en_US",
    "profileName": "Standard Platform User",
    "permsets": ["Dreamhouse", "Cloudhouse"],
    "generatePassword": true
}

在此示例中,用户名 tester1@sfdx.org 在整个 Salesforce 中必须是唯一的 生态系统;否则,该命令将失败。我们 建议您使用标志,即 覆盖配置文件中的值,并确保用户名唯一。别名 别名选项与使用 标志 指定的别名不同。使用 别名选项仅适用于 Salesforce UI。该标志是运行 CLI 的计算机的本地标志,您可以将其与其他 CLI 一起使用 命令。org create user–set-unique-username–set-aliasorg create user–set-alias

使用标志指示用户定义文件的路径。您可以随心所欲地命名此文件并将其存储在任何地方 CLI 可以访问。–definition-file

sf org create user --set-alias qa-user --definition-file config/user-def.json --target-org my-scratch

您可以通过将用户定义文件中的选项指定为名称/值对来覆盖该选项 命令行。此技术允许多个用户或持续集成作业共享一个 基本定义文件,然后在运行命令时自定义选项。此示例覆盖 用户名、权限集列表以及是否生成密码。

sf org create user --set-alias qa-user --definition-file config/user-def.json permsets="Dreamy,Cloudy" Username=tester345@sfdx.org generatePassword=false --target-org my-scratch

您还可以在命令行中添加不在用户定义文件中的选项。这 example 添加 City 选项。

sf org create user --set-alias qa-user --definition-file config/user-def.json City=Oakland --target-org my-scratch

为 Scratch 组织用户生成或更改密码

默认情况下,新的临时组织包含一个没有密码的管理员用户。使用 CLI 命令生成或更改 此管理员用户的密码。设置后,无法取消设置密码,只能更改密码 它。

org generate password您还可以使用该标志来 为使用该命令在本地创建的临时组织用户生成密码。您不能将该命令用于您在 带有设置的 scratch 组织。

–on-behalf-oforg create userorg generate password

  1. 使用以下命令为临时组织用户生成密码:sf org generate password --target-org <username-or-alias>您只能对临时组织用户运行此命令。该命令输出生成的 密码。目标组织必须是临时组织管理员用户的用户名或别名。使用标志将密码分配给 一次多个用户,包括管理员用户,或无权访问的用户 自己动手。通过指定多个标志来指定多个本地创建的用户。例如,假设 my-scratch 别名对应于 Scratch 组织的 admin 用户,您希望生成一个 具有别名和–on-behalf-of–on-behalf-ofci-userqa-usersf org generate password --target-org my-scratch --on-behalf-of ci-user --on-behalf-of qa-user默认情况下,该命令会生成长度为 13 个字符的密码;这 可能的字符包括所有小写和大写字母、数字和符号。自 更改密码强度,使用 和 标志。标志是从 0 到 5 的数字;这 该值越高,使用的可能字符越多,从而增强了密码。 默认值为 5。有关每个值的说明,请参阅命令行帮助。这 示例演示如何生成 20 个字符的密码 长:–length–complexity–complexitysf org generate password --target-org my-scratch --length 20
  2. 查看生成的密码和其他用户详细信息:sf org display user --target-org qa-user Warning: This command exposes sensitive information <truncated for readability> === User Description key label ──────────── ──────────────────────────────────────────────────────────────────────────────────────────────────────────────── Username 1690397809_test-st9thgoyyyq3@example.com Profile Name Standard User Id 0058I002inzvQAA Org Id 00D80000PhAkUAK Access Token 00D8I<truncated> Instance Url https://connect-enterprise-1121-dev-ed.scratch.my.salesforce.com Login Url https://connect-enterprise-1121-dev-ed.scratch.my.salesforce.com Alias qa-user Password ogihymg%lXa
  3. 使用新密码登录临时组织:
    1. 组织显示用户输出中,复制 实例 URL 的值,并将其粘贴到浏览器中。在我们的示例中,实例 URL 已 https://connect-enterprise-1121-dev-ed.scratch.my.salesforce.com
    2. 如果您已经使用临时组织打开了临时组织 打开 Command,您将自动再次登录。试用新的 password,注销并输入 org display user 命令输出中列出的用户名和密码。
    3. 单击登录到沙盒

注意

如果您使用 Salesforce UI 更改临时组织用户的密码,则新密码 不会显示在输出中。org display user

从 Dev Hub 组织管理 Scratch 组织

您可以从开发人员中查看和删除临时组织及其相关请求 中心组织。

在 Dev Hub 组织中,ActiveScratchOrg 标准对象表示临时组织 目前正在使用中。ScratchOrgInfo 标准对象表示用于 创建临时组织并提供历史背景。

  1. 以系统管理员或 Salesforce DX 用户身份登录 Dev Hub 组织 权限。
  2. 在应用程序启动器中,选择 Active Scratch Orgs 以查看 所有活跃的 Scratch 组织。要查看有关临时文件的更多详细信息,请单击“数字”列中的链接。
  3. 要从“活动临时组织”列表视图中删除活动临时组织,请从下拉列表中选择“删除”。删除活动临时组织不会删除创建它的请求 (ScratchOrgInfo), 但它确实释放了一个临时组织,这样它就不会计入你的分配。
  4. 要查看创建临时组织(Scratch Org)的请求,请选择临时组织(Scratch Org) 来自应用程序启动器的信息。若要查看有关请求的更多详细信息,请单击“数字”列中的链接。一个细节 临时组织请求包括它是活动、过期还是已删除。
  5. 要删除用于创建临时组织的请求,请从下拉列表中选择 Delete。删除请求 (ScratchOrgInfo) 也会删除活动的临时组织。

暂存组织错误代码

如果临时组织创建失败,系统会生成一个错误代码,以帮助您 确定原因。其中一些错误由 SignupRequest API 生成,并应用于所有 组织注册。

错误代码描述
编号:C-1007重复的用户名。
C-1015型建立新组织的“我的域”(子域)设置时出错。联系 Salesforce 支持寻求帮助。
编号:C-1016为代理注册配置 OAuth 连接的应用程序时出错。验证您的 连接的应用具有有效的使用者密钥、回调 URL 和未过期的证书(如果 适用)。
编号:C-1018注册期间提供的子域值无效。
C-1019型子域正在使用中。选择新的子域值。
C-1020型未找到模板。模板不存在或已删除。
编号:C-1033模板是错误的版本。
编号:C-1034无法创建组织。 请联系 Salesforce 客户支持寻求帮助。
编号:C-9998不是有效的临时组织。 请联系 Salesforce 客户支持寻求帮助。
编号:C-9999一般致命错误。请联系 Salesforce 客户支持寻求帮助。
编号:S-1017命名空间未注册。要将命名空间与临时组织一起使用,必须将 将命名空间注册到 Dev Hub 组织的 Developer Edition 组织。查看 Salesforce 帮助:将命名空间链接到开发人员中心 组织
S-2006系列无效的国家/地区。
SH-0001型无法从组织形状创建临时组织。联系源组织管理员以添加您的开发人员 中心组织 ID。在“设置”的“快速查找”框中,输入 和 ,然后选择“组织形状”。Org Shape
SH-0002型无法创建临时组织。指定的 不存在组织结构。创建组织形状,然后重试。sourceOrg
SH-0003型无法从组织形状创建临时组织,因为它是在以前的 Salesforce 发布版本,已过时。重新创建组织形状,然后重试。
SH-9999型由于致命错误,无法验证组织形状。联系 Salesforce 客户支持 援助。
VR-0001型无法创建临时组织。请稍后再试。
VR-0002型无法创建临时组织。检查发布值是否有效。如果没有发布 值,请联系 Salesforce 客户支持。
VR-0003型无法创建临时组织。检查发布值是否有效。如果没有发布 值,请联系 Salesforce 客户支持。

授权

授权是指登录到组织,以便您可以运行需要访问权限的命令 到组织。使用 CLI 命令创建组织也会自动对其进行授权。例如 您授权 Dev Hub 组织允许您创建、删除和管理 Salesforce 临时 组织。在本地计算机上设置项目后,对开发人员中心组织进行授权 在创建临时组织之前。当您运行命令以创建临时组织时, Salesforce CLI 会自动对其进行授权。

您还可以授权其他现有组织(例如沙盒或打包组织)提供 使用 CLI 命令时具有更大的灵活性。

您只能授权一个组织一次。要在开发期间在组织之间切换,请指定 您用于使用 OR 标志登录组织的用户名。 您还可以设置默认组织或使用别名。–target-org–target-dev-hub

在授权组织时,您有一些选择,具体取决于您尝试执行的操作 完成。

  • 最简单的选择是运行 ,其中 打开一个浏览器,您可以在其中输入 Salesforce 凭据。此选项是 正式称为 OAuth 2.0 Web 服务器流程。org login web
  • 对于持续集成 (CI) 或自动化环境,请使用以下命令。此选项的正式名称为 OAuth 2.0 JSON Web 令牌 (JWT) 持有者流。此流程非常适合以下情况 您无法以交互方式登录到浏览器,例如从 CI 脚本登录。org login jwt重要如果您的组织配置了高确定性(升级) 身份验证时,Salesforce 会提示用户验证其身份。这 验证过程意味着您不能将 JWT 流程和 Salesforce CLI 用于 无外设身份验证。
  • 使用浏览器
    授权组织 通过运行 CLI 命令并在自动打开的浏览器中输入您的凭据,使用浏览器授权组织。就是这样!
  • 使用 JWT 流
    授权组织 持续集成 (CI) 环境是完全自动化的,不支持登录浏览器的人工交互性。在这些环境中,您必须使用 JWT 流对组织进行授权。
  • 创建私钥和自签名数字证书 使用该命令授权组织需要数字证书和用于签署证书
    的私钥。您可以使用自己的私钥和证书颁发机构颁发的证书。或者,您可以使用 OpenSSL 创建密钥和自签名数字证书。当您通过登录浏览器对组织进行授权时,使用私钥和证书是可选的。org login jwt
  • 在您的组织
    中创建连接的应用程序 Salesforce CLI 要求您授权的组织中有一个连接的应用程序。连接的应用程序是一个框架,它使外部应用程序(在本例中为 Salesforce CLI)能够使用 API 和标准协议(如 OAuth)与 Salesforce 集成。当您使用命令授权组织时,我们会提供默认连接的应用程序。为了提高安全性,您可以使用“设置”在组织中创建自己的连接应用程序,并使用所选设置对其进行配置。使用命令授权组织时,您需要创建连接的应用程序。org login weborg login jwt
  • 安全地使用默认连接的应用程序
    如果您使用命令授权组织,但未指定标志,则 Salesforce CLI 会在组织中创建一个名为 .但是,其刷新令牌设置为永不过期。作为安全最佳实践,Salesforce 建议组织中的刷新令牌在 90 天或更短时间后过期。另一个最佳安全做法是将访问令牌的过期时间设置为 15 分钟。与刷新令牌类似,默认连接应用中的访问令牌设置为永不过期。若要继续以安全的方式使用此默认连接的应用程序,请配置其策略。org login web–client-idSalesforce CLI
  • 使用现有访问令牌
    当您使用命令授权组织时,Salesforce CLI 会负责生成和刷新所有令牌,例如访问令牌。但有时您希望对现有组织运行一些 CLI 命令,而无需完成整个授权过程。在这种情况下,您需要提供托管要连接到的组织的 Salesforce 实例的访问令牌和 URL。org login
  • 组织的
    授权信息 您可以查看已授权的所有组织以及已创建的临时组织的信息。
  • 注销组织
    出于安全考虑,您可以使用 Salesforce CLI 注销您之前授权的任何组织。如果您不希望其他用户访问您的组织,这种做法会阻止他们访问您的组织。

使用浏览器授权组织

通过运行 CLI 命令并输入您的凭据,使用浏览器授权组织 在自动打开的浏览器中。就是这样!

  1. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  2. 运行 org login web CLI 命令。我们建议 使用 –alias 标志使其易于引用 组织稍后。sf org login web --alias my-org如果您希望组织 是接受该标志的命令的默认值。如果要授权 Dev Hub 组织,请改用该标志。有关示例,请参阅 org login web 命令。–set-default–target-org–set-default-dev-hub
  3. 在打开的浏览器窗口中,使用 Salesforce 登录名登录您的组织 凭据。单击允许,这将允许 Salesforce CLI 访问 您的组织。
  4. 关闭浏览器窗口。您的组织现已获得授权!

如果用于登录组织的 URL 不是默认 (),请更新项目配置文件 (sfdx-project.json)中。 将该选项设置为增强的 My Domain 登录 URL。为 例:

login.salesforce.comsfdcLoginUrl

"sfdcLoginUrl" : "https://MyDomainName.my.salesforce.com"

这 示例是针对 沙盒。

"sfdcLoginUrl" : "https://MyDomainName--SandboxName.sandbox.my.salesforce.com"

或者 可以使用 的标志来指定 URL。此值将覆盖 您在 sfdx-project.json 文件中指定的登录 URL。为 例:–instance-urlorg login web

sf org login web --alias my-hub-org --instance-url https://exciting.sandbox.my.salesforce.com

注意

我们 建议您使用增强的 My Domain 登录 URL,因为它不受组织的影响 更改组织的 Salesforce 实例的迁移。请确保使用结束的版本 而不是您在 Lightning Experience ()。验证 有效的 My Domain URL,在“设置”中,输入“快速” “查找”框,然后选择“我的域”。my.salesforce.com.lightning.force.comMy Domain

此外,您的组织 需要对 Salesforce CLI 进行授权才能连接应用程序。我们提供默认 名为 的连接应用程序。如果您需要更多 安全或控制,例如设置刷新令牌超时或指定 IP 范围, 创建自己的连接应用。您还可以将默认连接的应用程序配置为更多 安全。Salesforce CLI

使用 JWT 流程授权组织

持续集成 (CI) 环境是完全自动化的,不支持 登录浏览器的交互性。在这些环境中,必须使用 JWT 流 对组织进行授权。

JWT 流程需要数字证书(也称为数字签名)来对 JWT 请求。您可以使用自己的证书,也可以使用 OpenSSL。

重要

如果您的组织配置了高确定性(升级) 身份验证时,Salesforce 会提示用户验证其身份。此验证 进程意味着您不能将 JWT 流程和 Salesforce CLI 用于无头 认证。

  1. 如果您没有自己的私钥和数字证书,则可以使用 OpenSSL 创建密钥和自签名证书。在此任务中,假定私钥文件名为 server.key,数字证书名为 server.crt。
  2. 创建连接的应用,并将其配置为 Salesforce DX的。此任务包括上载 server.crt 数字证书文件。保存连接的应用时记下使用者密钥 因为你以后需要它。
  3. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  4. 运行 org login jwt CLI 命令。我们建议 使用 –alias 标志使其易于引用 组织稍后。使用标志(JWT 私钥文件的路径)指定已连接应用中的使用者密钥 (server.key) 和组织的用户名。 为 例:–client-idsf org login jwt --client-id 04580y4051234051 --jwt-key-file /Users/jdoe/JWT/server.key --username jdoe@myorg.com --alias my-hub-org如果您希望组织 是接受该标志的命令的默认值。如果要授权 Dev Hub 组织,请改用该标志。有关示例,请参阅 org login jwt 命令。–set-default–target-org–set-default-dev-hub

您可以使用相同的使用者密钥和私钥文件对临时组织进行授权,该文件 你曾经授权其关联的 Dev Hub 组织。请参阅使用 JWT 流程授权临时组织

如果用于登录组织的 URL 不是默认 (),请更新项目配置文件 (sfdx-project.json)中。 将该选项设置为增强的 My Domain 登录 URL。为 例:login.salesforce.comsfdcLoginUrl

"sfdcLoginUrl" : "https://MyDomainName.my.salesforce.com"

这 示例是针对 沙盒。

"sfdcLoginUrl" : "https://MyDomainName--SandboxName.sandbox.my.salesforce.com"

或者 您可以使用命令的标志来指定 URL。此值 覆盖您在 sfdx-project.json 文件中指定的登录 URL。 为 例:–instance-urlorg login jwt

sf org login jwt --client-id 04580y4051234051 --jwt-key-file /Users/jdoe/JWT/server.key --username jdoe@myorg.com --alias my-hub-org --instance-url https://mydomain--mysandbox.sandbox.my.salesforce.com

注意

我们 建议您使用增强型 My Domain 登录 URL,因为它不受组织的影响 更改组织的 Salesforce 实例的迁移。请确保使用结束的版本 而不是您在 Lightning Experience ()。验证 有效的 My Domain URL,在“设置”中,输入“快速” “查找”框,然后选择“我的域”。my.salesforce.com.lightning.force.comMy Domain

  • 使用 JWT 流程
    授权临时组织 如果使用该命令授权开发人员中心组织,则可以使用相同的数字证书和私钥来授权关联的临时组织。此方法适用于持续集成 (CI) 系统,这些系统必须在创建临时组织后对其进行授权,但无权访问临时组织的访问令牌。org login jwt

另见

  • Salesforce CLI 命令参考:org login jwt
  • 创建私钥和自签名数字证书
  • 在组织中创建连接的应用程序
  • Salesforce DX 项目配置
  • Salesforce 帮助:增强型域
  • Salesforce 帮助:设置多重身份验证

使用 JWT 流程授权临时组织

如果使用该命令对开发人员中心组织进行授权,则可以使用相同的数字证书和私钥来授权 关联的 Scratch 组织。此方法对于必须 在创建临时组织后授权它们,但无权访问临时组织的访问权限 令 牌。

org login jwt

在开始之前,我们假设:

  • 你之前使用该命令授权了 Dev Hub 组织。org login jwt
  • 授权 Dev Hub 组织时使用的私钥文件可在 /Users/jdoe/JWT/server.key 中访问。
  • 您已创建一个临时组织,并拥有其管理用户的用户名,例如 test-wvkpnfm5z113@example.com。
  • 您知道临时组织的实例 URL。如果你不知道,你可以查询你的开发人员 中心组织。为 例:sf data query --target-org my-dev-hub --query "SELECT SignupUsername,LoginUrl FROM ScratchOrgInfo WHERE SignupUsername='test-wvkpnfm5z113@example.com'"
  1. 从在开发人员中心创建的已连接应用中复制使用者密钥 组织。
    1. 登录到开发人员中心组织。
    2. 在“设置”中,在“快速查找”框中输入“应用程序管理器”以获取 到 Lightning Experience 应用程序管理器。
    3. 在应用列表中找到已连接的应用,然后单击右侧操作下拉列表的下拉菜单,然后选择“查看”。
    4. 在“API(启用 OAuth 设置)”部分中,单击“管理使用者” 详如果出现提示,请输入验证码以验证您的身份 自动发送到您的电子邮件地址。
    5. 将使用者密钥复制到剪贴板。使用者密钥是一长串 数字、字母和字符,例如3MVG9szVa2Rx_sqBb444p50Yj(示例缩短 为清楚起见。
  2. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  3. 运行 org login jwt CLI 命令。–client-id 和 –-jwt-key-file 标志值与运行命令时相同 授权 Dev Hub 组织。将 –-username 设置为 临时组织的管理员用户名,并将 —instance-url 设置为临时组织的实例 URL,例如 https://energy-enterprise-2539-dev-ed.scratch.my.salesforce.com。为 例:sf org login jwt --client-id 3MVG9szVa2Rx_sqBb444p50Yj \ --jwt-key-file /Users/jdoe/JWT/server.key --username test-wvkpnfm5z113@example.com \ --instance-url https://energy-enterprise-2539-dev-ed.scratch.my.salesforce.com如果您收到用户未获批准的错误,则表示临时组织 信息尚未复制。请稍等片刻,然后重试。

注意

如果您的临时组织在 Hyperforce 上运行,并且 的值是 非管理员临时组织用户,不能使用 Dev Hub 的数字证书和私有证书 钥匙。要在此方案中授权临时组织,请遵循标准的 JWT 流步骤。–usernameorg login jwt

创建私钥和自签名数字证书

使用命令授权组织 需要数字证书和用于对证书进行签名的私钥。你可以使用 您自己的私钥和证书颁发机构颁发的证书。或者,您可以 使用 OpenSSL 创建密钥和自签名数字证书。使用私钥和 当您通过登录浏览器对组织进行授权时,证书是可选的。

org login jwt

此过程会生成两个文件:

  • server.key – 私钥。您可以指定此项 文件,当您使用命令授权组织时。org login jwt
  • server.crt – 数字证书。您上传 此文件,当您创建所需的连接应用时。
  1. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  2. 如有必要,请在计算机上安装 OpenSSL。要检查您的计算机上是否安装了 OpenSSL,请在 macOS 或 Linux 上运行命令,或者在 窗户。whichwherewhich openssl
  3. 创建一个用于存储生成的文件的目录,并切换到该目录。mkdir /Users/jdoe/JWTcd /Users/jdoe/JWT
  4. 生成一个私钥,并将其存储在名为 server.key 的文件中。openssl genpkey -des3 -algorithm RSA -pass pass:SomePassword -out server.pass.key -pkeyopt rsa_keygen_bits:2048openssl rsa -passin pass:SomePassword -in server.pass.key -out server.key您可以删除 server.pass.key 文件 因为你不再需要它。
  5. 使用 server.key 文件生成证书签名请求。将证书签名请求存储在名为 server.csr 的文件中。输入有关您的信息 公司在出现提示时。openssl req -new -key server.key -out server.csr
  6. 从 server.key 和 server.csr 文件生成自签名数字证书。 将证书存储在名为 server.crt 的文件中。openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt

现在创建一个自定义连接的应用程序,然后 将数字证书上传到其中。

在组织中创建连接的应用程序

Salesforce CLI 要求您授权的组织中有一个连接的应用程序。一个互联的 app 是一个框架,它使外部应用程序(在本例中为 Salesforce CLI)能够 使用 API 和标准协议(如 OAuth)与 Salesforce 集成。我们提供默认 连接的应用程序,当您使用命令授权组织时。为了提高安全性,您可以在组织中创建自己的连接应用程序 使用设置并使用您选择的设置对其进行配置。您需要创建一个 使用命令授权组织时连接的应用程序。

org login weborg login jwt

注意

标记为 JWT 必需的步骤仅在创建 连接的应用程序与命令一起使用。在 在这种情况下,您还需要一个包含数字证书的文件,例如 .如果要创建 连接的应用程序与 .org login jwtserver.crtorg login web

  1. 登录到您的组织。
  2. 在“设置”中,在“快速查找”框中输入应用程序管理器”,然后选择“应用程序管理器”。
  3. 在右上角,单击“新建连接的应用”。
  4. 将基本信息更新为 需要,例如连接的应用名称和电子邮件地址。
  5. 选择启用 OAuth 设置
  6. 对于回调 URL,请输入 http://localhost:1717/OauthRedirect。如果端口 1717(默认值)已在本地计算机上使用,请指定 可用一个。然后,通过将属性设置为新端口来更新 sfdx-project.json 文件。例如,如果将 回调 URL 设置为:oauthLocalPorthttp://localhost:1919/OauthRedirect"oauthLocalPort" : "1919"
  7. (JWT 需要)选择使用数字签名
  8. (JWT 需要)单击“选择文件”并上传 包含您的数字证书,例如 server.crt。
  9. 添加以下 OAuth 范围:
    • 通过 API 管理用户数据 (api)
    • 通过 Web 浏览器 (web) 管理用户数据
    • 随时执行请求(refresh_token、 offline_access)
  10. 如果启用,请禁用 代码交换 (PKCE) 扩展所需的证明密钥 支持的授权流程
  11. 点击保存,然后点击继续
  12. 单击“管理使用者详细信息”。如果出现提示,请输入验证码以验证您的身份 自动发送到您的电子邮件地址。
  13. 单击“使用者密钥”旁边的“复制”,因为稍后在以下情况下需要用到它 运行组织登录命令。
  14. 单击“返回”以管理连接的应用程序
  15. 单击“管理”。
  16. 单击编辑策略
  17. 在“OAuth 策略”部分中,对于“刷新令牌策略”字段,单击“刷新令牌在以下时间后过期:”,然后输入 90 天或更短时间。将刷新令牌过期时间设置为最多 90 天是最佳安全性 实践。继续对刷新令牌具有 过期,请使用 or 命令重新授权。org login weborg login jwt
  18. 在“会话策略”部分中,将“超时值”设置为 15 分钟。为访问令牌设置超时是最佳安全做法。Salesforce 命令行界面 通过引用刷新令牌自动处理过期的访问令牌。
  19. (JWT 需要)在“OAuth 策略”部分中,选择“管理员批准” 用户已获得允许用户的预授权,然后单击确定
  20. 点击保存
  21. (JWT 需要)单击“管理配置文件”,选择配置文件 已获得使用此连接应用程序的预授权,然后单击保存。 同样,单击“管理权限集”以选择权限 集。如有必要,创建权限集。

若要指定使用者密钥,请使用命令的标志。例如,如果您的 使用者密钥是 04580y4051234051,你通过登录 Dev Hub 组织来授权它 浏览器,在终端(macOS 和 Linux)或命令提示符下运行此命令 (视窗):

–client-idorg login

sf org login web --client-id 04580y4051234051 --set-default-dev-hub --alias my-hub-org

看 有关更多示例,请参阅组织登录 Web 和组织登录 JWT 的参考。

安全地使用默认连接的应用程序

如果您使用命令授权组织,但未指定标志,则 Salesforce CLI 在组织中创建一个名为 的默认连接应用程序。但是,其刷新令牌设置为永不过期。作为安全最佳 实践中,Salesforce 建议组织中的刷新令牌在 90 天或更短时间后过期。 另一个最佳安全做法是将访问令牌的过期时间设置为 15 分钟。 与刷新令牌类似,默认连接应用中的访问令牌设置为永不过期。 若要继续以安全的方式使用此默认连接的应用程序,请配置其策略。

org login web–client-idSalesforce CLI

  1. 登录到您的组织。
  2. 在“设置”中,在“快速查找”框中输入“OAuth”,然后选择“连接的应用程序 OAuth 使用情况”。
  3. 选择 Salesforce CLI 应用程序,然后单击安装。再次单击“安装”进行确认。
  4. 单击编辑策略
  5. 在“OAuth 策略”部分中,对于“刷新令牌策略”字段,单击“刷新令牌过期时间:”,然后输入 90 天或更短。
  6. 在“会话策略”部分中,将“超时值”设置为 15 分钟
  7. 点击保存

如果对刷新令牌已过期的组织运行 CLI 命令,则会收到 错误。为 例:

ERROR running org open: Error authenticating with the refresh token due to: expired access/refresh token

该命令还显示过期的刷新令牌 “已连接状态”列中的信息。要继续使用组织,请使用 or 命令重新授权它。

org listorg login weborg login jwt

Salesforce CLI 通过以下方式自动处理过期的访问令牌 引用刷新令牌。

使用现有访问令牌

当您使用命令授权组织时,Salesforce CLI 会负责生成和刷新所有令牌,例如访问权限 令 牌。但有时您想对现有组织运行一些 CLI 命令,而无需 贯穿整个授权过程。在本例中,您需要提供 托管要连接到的组织的 Salesforce 实例。

org login几乎所有具有该标志的 CLI 命令都接受访问令牌。唯一的例外是 .

–target-org | -oorg display user

  1. 打开终端(macOS 和 Linux)或命令提示符 (Windows)。
  2. 要获取要连接到的组织的实例 URL 和访问令牌,请运行 org display 命令。查看 Access Token 和 Instance 的值 Url 键。sf org display --target-org myorg === Org Description KEY VALUE ─────────────── ─────────────────────────────────────────────── Access Token 00D8H0000007wpr!AQkAQAlOT5H (truncated for security) ... Instance Url https://creative-impala-20hx3-dev-ed.my.salesforce.com ...
  3. 使用 config set 设置 org-instance-url 配置变量。要在本地设置它, 从 Salesforce DX 项目运行命令;若要全局设置它,请使用 –-global 标志。sf config set org-instance-url=https://creative-impala-20hx3-dev-ed.my.salesforce.com --global
  4. 运行 CLI 命令时,请使用组织的访问令牌作为 —target-org 标志的值,而不是组织的用户名。sf project deploy start --source-dir <source-dir> --target-org 00D8H0000007wpr!AQkAQAlOT5H

Salesforce CLI 不会将访问令牌存储在其内部文件中。它仅用于此目的 CLI 命令运行。

组织的授权信息

您可以查看已授权的所有组织的信息,以及 您已经创建。

要查看有关组织的授权信息,请从终端(macOS 和 Linux) 或命令提示符 (Windows)。

sf org display --target-org <username-or-alias>

如果已设置默认组织,则不必指定标志。要显示 您已授权或创建,请运行 .–target-orgorg list

如果您为组织设置了别名,则可以使用标志指定它。此示例使用别名。–target-orgmy-scratch-org

sf org display --target-org my-scratch-org

Warning: This command will expose sensitive information that allows for subsequent activity using your current authenticated session.
Sharing this information is equivalent to logging someone in under the current credential, resulting in unintended access and escalation of privilege.
For additional information, please review the authorization section of the https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_web_flow.htm

=== Org Description

 KEY             VALUE                                                                                                            
 ─────────────── ──────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
 Access Token    <long-string> 
 Alias           my-scratch-org                                                                                                        
 Api Version     58.0                                                                                                             
 Client Id       PlatformCLI                                                                                                      
 Created By      jdoe@fabdevhub.org                                                                       
 Created Date    2023-06-09T17:59:18.000+0000                                                                                     
 Dev Hub Id      jdoe@fabdevhub.org                                                                       
 Edition         Developer                                                                                                        
 Expiration Date 2023-06-16                                                                                                       
 Id              00D8H0000007wprU                                                                                               
 Instance Url    https://java-connect-41-dev-ed.scratch.my.salesforce.com                                                       
 Org Name        Your Company                                                                                          
 Signup Username test-gm9uud@example.com                                                                                    
 Status          Active                                                                                                           
 Username        test-gm9uud@example.com

要获取更多信息,例如 Salesforce DX 身份验证 URL,请包含该标志。此标志显示 Sfdx 仅当您使用 而不是 授权组织时,身份验证 Url 值才可用。–verboseorg login weborg login jwt

注意

为了帮助防止安全漏洞,输出不包括组织的客户端密码或刷新令牌。org display

注销组织

出于安全考虑,您可以使用 Salesforce CLI 注销您拥有的任何组织 先前已授权。如果您不这样做,这种做法会阻止其他用户访问您的组织 希望他们这样做。

重要

注销组织后访问组织的唯一方法是使用密码。 默认情况下,新的临时组织包含一个没有密码的管理员。因此,要避免 失去对临时组织的访问权限,请为临时组织的至少一个用户设置密码,如果您 想要在注销后再次访问它。如果您不想再次访问临时组织, 删除它,而不是注销 它。org delete scratch

要注销组织,请从终端运行 (macOS 和 Linux)或命令提示符 (Windows)。此示例使用别名注销。org logoutmy-hub-org

sf org logout --target-org my-hub-org

要注销所有组织(包括临时组织),请使用该标志。–all

sf org logout --all

要再次访问临时组织以外的组织,请重新授权它。

当您注销某个组织时,它将不再显示在输出中。如果注销 Dev Hub 组织,则会显示关联的临时组织 仅当指定标志时。org list–all

元数据覆盖率

启动“元数据覆盖率”报告以确定临时组织支持的元数据 源跟踪目的。元数据覆盖率报告是 跨多个渠道的元数据覆盖。这些渠道包括元数据 API、临时组织 源跟踪、解锁包、第二代托管包、经典托管包 包裹等。

查看“元数据覆盖范围”报告。

有关更多信息,请参阅《元数据 API 开发人员指南》中的元数据类型。

我们移动了有关已解锁包中硬删除组件的信息。