您可以在安装SalesforceCLI后立即开始使用它。
CLI命令分为多个顶级主题。例如,顶级主题包含用于创建和管理的命令组织,例如、和。顶级主题包含用于管理配置变量。orgorglistorgcreatesandboxorggeneratepasswordconfig
sf--help//listsalltop-leveltopicssforg--help//listsallthetopicsandcommandsunder"org"sforgcreate--help//listsallthecommandsinthesubtopic"orgcreate"sforgcreatesandbox--help//detailedinfoaboutthe"orgcreatesandbox"commandsforgcreatesandbox-h//quickandshortinfoaboutthe"orgcreatesandbox"command运行以下命令可查看所有可用的SalesforceCLI命令:
sfcommands--json自动完成CLI命令和标志部分键入SalesforceCLI命令,然后按Tab键自动完成该命令。这自动完成功能也适用于SalesforceCLI标志。
您必须先安装自动完成功能,然后才能使用它。
Windows用户可以通过先安装PowerShell,然后再安装PowerShell来使用自动完成功能。请按照下列步骤操作。
如果您在公司防火墙后面的计算机上安装或更新SalesforceCLI,或者Web代理时,您有时会收到错误消息。在这种情况下,您必须进一步配置您的系统。
当您在后面安装SalesforceCLI后运行命令时,您会收到此类错误防火墙或Web代理。此错误来自Linux计算机,但Windows和macOS用户有时会看到类似的错误。
@salesforce/cli:UpdatingCLI...!'ECONNRESET':tunnelingsocketcouldnotbeestablished,cause=connectEHOSTUNREACH0.0.23.221:8080-Local(10.126.148.39:53107)若要解决此问题,请从终端或Windows命令提示符运行以下命令。替换为您的Web代理用户名和密码。如果你的代理不需要这些值,请省略它们。此外,请替换为公司代理的URL和端口。username:pwdproxy.company.com:8080
如果设置了代理环境变量,但仍然看到错误消息,则可能是您的代理需要额外的证书颁发机构(CA)。询问您的IT部门在哪里以查找或下载证书。
将此环境变量设置为指向CA文件:NODE_EXTRA_CA_CERTS。
您的企业网络阻止了Salesforce主机
您的公司网络可能阻止Salesforce主机进行更新或安装SalesforceCLI。请与您的IT部门联系,将以下网址添加到您的许可名单中:
请遵循以下建议来提高SalesforceCLI的性能窗户。
警告
从WindowsDefender中排除项目文件夹。WindowsDefender也可能不断重新扫描您的项目文件夹,从而导致负面表现。若要排除项目文件夹,请按照下列步骤操作。从其他安全性中排除sf可执行文件软件。一些公司使用比WindowsDefender更广泛的安全软件,并且这种安全性软件可能会导致SalesforceCLI执行缓慢。与内部IT部门合作部门排除可执行文件来自所有安全软件。sf关闭内存密集型程序。SalesforceCLI可能执行缓慢,因为其他程序(如GoogleChrome或VS)代码占用了过多的内存。尝试重新启动这些程序以释放记忆。
您可以为当前项目或所有项目设置配置(配置)变量项目。您可以设置两种配置变量:全局变量和局部变量。全局配置变量应用于计算机上的所有项目。本地配置变量适用于特定项目。当从SalesforceDX中运行命令时,本地配置变量会覆盖全局变量项目目录。
要为当前项目设置配置变量:
sfconfigsetname
要为所有项目设置配置变量,请执行以下操作:
sfconfigsetname
查看使用该命令设置的局部和全局配置变量。输出列出了从中运行命令的项目目录和所有全局变量。configlist
sfconfiggettarget-orgtarget-dev-hub--json要取消设置配置变量,请运行以下命令。例如,要取消设置配置变量:configunsetorg-instance-url
sfconfigunsetorg-instance-url注意
或者,您可以将所有CLI配置变量设置为环境变量。环境变量覆盖配置变量。
org-api-版本特定项目或所有项目的API版本。通常,SalesforceCLI假定你使用的CLI版本与DevHub组织相同。这个例子将所有项目的API版本(全局)设置为57.0。
sfconfigsetorg-api-version57.0--global是请确保不要将此配置变量与具有类似名称的sourceApiVersion项目选项混淆。有关更多信息,请参阅在SalesforceCLI中API版本和源API版本的工作原理信息。
环境变量:SF_ORG_API_VERSION
SF_ORG_API_VERSION=57.0组织自定义元数据模板指定本地目录或克隆的GitHub存储库,其中包含命令使用的默认自定义代码模板。GitHubURL指向以下任一根目录:包含您的模板或存储库中包含模板。例如:projectgenerate
sfconfigsettarget-orgtest-scratch-org@example.com环境变量:SF_TARGET_ORG
SF_TARGET_ORG=test-scratch-org@example.com目标开发中心默认DevHub组织的用户名或别名。
sfconfigsettarget-dev-hubmy-dev-hub@devhub.org环境变量:SF_TARGET_DEV_HUB
SF_TARGET_DEV_HUB=my-dev-hub@devhub.orgtarget-devops-center(仅限DevOpsCenter命令)安装DevOpsCenter的组织的用户名或别名。
sfconfigsettarget-devops-centermyDevOpsCenterOrg@example.comdisable-telemetry默认情况下,SalesforceCLI收集使用信息、用户环境信息、和崩溃报告。此选项允许您选择外。
例如,假设您在具有15,000个角色的Salesforce组织上运行。默认情况下该命令仅显示10,000个角色。将显示一条消息,警告您检索到的命令只有部分角色。要查看所有这些变量,请将此配置变量设置为更大的数。sforglistmetadata-mRole
sfconfigsetorg-max-query-limit20000环境变量:SF_ORG_MAX_QUERY_LIMIT
SF_ORG_MAX_QUERY_LIMIT=200000组织元数据rest-deploy如果,SalesforceCLI使用元数据RESTAPI用于部署。默认情况下,SalesforceCLI使用SOAP。使用REST的部署不是受适用于SOAP的39-MB.zip文件大小限制的约束部署。true
sfconfigsetorg-metadata-rest-deploytrue环境变量:SF_ORG_METADATA_REST_DEPLOY
您可以设置环境变量来配置SalesforceCLI的某些值使用。
环境变量将覆盖配置变量。设置环境变量只有您正在运行的命令,才能附加变量:
SF_ORG_API_VERSION=57.0sforgcreatescratch-
SF_APPLY_REPLACEMENTS_ON_CONVERT设置为测试字符串替换,而不使用实际将文件部署到组织。相反,请运行以将文件转换为元数据API格式,然后检查文件以查看将要部署的内容。trueprojectconvertsource
请参阅之前替换代码中的字符串部署了解详细信息。
例:
如果Apex测试的代码覆盖率百分比等于或高于此设置显示为绿色。如果百分比较低,则显示为红色。此环境变量仅适用于人类可读的输出。默认值为70%.
SF_CODE_COVERAGE_REQUIREMENT=75SF_CONTAINER_MODE当设置为时,通常会打开org在浏览器中,例如或,而是输出组织的URL,而不是打开浏览器。当设置为(默认值值),这些命令会在浏览器中打开组织。trueorgopenorgloginwebfalse
此环境变量很有用在无头环境中,例如Docker或持续集成。SF_CONTENT_TYPE设置为时,指定所有CLI命令JSON格式的输出结果。如果将环境变量设置为任何其他值,或取消设置它,CLI命令将输出其结果,如标志。JSON
SF_CONTENT_TYPE=JSONSF_CUSTOM_ORG_METADATA_TEMPLATES
指定本地目录或克隆的GitHub存储库,其中包含命令使用的默认自定义代码模板。GitHubURL指向以下任一根目录:包含您的模板或存储库中包含模板。projectcreate
设置为以禁用CLI.默认情况下,CLI会定期检查并安装更新。trueSF_DISABLE_DNS_CHECK设置为停止SalesforceCLI命令需要组织检查组织是否已连接。例如,该命令需要DevHub组织。这默认值为(AlwaysCheck.)trueorgcreatescratchfalse这如果您在运行某些Salesforce时遇到此错误,环境变量很有用命令行界面命令。
DomainNotFound:Theorgcannotbefound第一尝试设置SF_DNS_TIMEOUT环境变量以增加秒数SalesforceCLI等待响应。如果这不起作用,请尝试禁用完全使用SF_DISABLE_DNS_CHECK环境变量进行检查。
SF_DISABLE_SOURCE_MEMBER_POLLING设置为以禁用对组织的轮询SourceMember对象。trueprojectdeploy|retrieve
环境变量适用于两者临时组织和沙箱。
默认值为240(4分钟)。将变量设置为0以绕过LightningExperience完全自定义域检查。SF_HIDE_RELEASE_NOTES设置为静音自动显示运行时的发行说明。这缺省值为。truesfupdatefalse
SF_HIDE_RELEASE_NOTES=trueSF_HIDE_RELEASE_NOTES_FOOTER设置为使样板页脚静音关于在运行时显示发行说明。缺省值为。truesfupdatefalse
SF_HIDE_RELEASE_NOTES_FOOTER=trueSF_IMPROVED_CODE_COVERAGE将Apex测试结果的范围限定为在测试运行期间输入的类,当运行和。设置为以改进代码覆盖。apexruntestapexgettesttrueSF_JSON_TO_STDOUT当SalesforceCLI命令失败时发送消息,而不是。设置此项环境变量to对脚本用例。stdoutstderrtrue
SF_JSON_TO_STDOUT=trueSF_LOG_LEVEL设置CLI写入日志的消息级别文件。
SF_LOG_ROTATION_PERIOD=2wSF_LOG_ROTATION_COUNT轮换日志文件时要保留的备份文件数。缺省值为。查看SF_LOG_ROTATION_PERIOD了解更多信息信息2
SF_LOG_ROTATION_COUNT=10SF_MDAPI_TEMP_DIR在运行某些CLI时将文件(元数据格式)放在指定目录中命令,例如.挡由于多种原因,这些文件可能很有用。您可以调试在命令执行。您可以在以下情况下使用生成的包.xml运行后续命令,或作为创建清单的起点包括您关心的所有元数据大约。projectretrievestart
SF_MDAPI_TEMP_DIR=/users/myName/myDXProject/metadataSF_NEW_VERSION_CHECK_FREQ一个数字,指定显示有关新SalesforceCLI版本的可用性。默认情况下,每个CLI命令执行检查是否有新的SalesforceCLI版本可用,并打印出警告消息(如果找到)。使用此环境变量with更改消息的频率显示。要完全禁用版本检查,请使用。SF_NEW_VERSION_CHECK_FREQ_UNITSF_SKIP_NEW_VERSION_CHECK
默认值为,表示显示警告消息每次找到新版本时。0
可能的值为、、、、和。缺省值为。dayshoursminutessecondsmillisecondsminutes
例如,要查看警告消息每天一次:
仅当您同时将SF_USE_NETWORK_MUTEX。默认值为31997。SF_NPM_REGISTRY将URL设置为专用npm服务器,其中发布的所有包都是专用的。我们仅支持不需要的存储库认证。
SF_ORG_MAX_QUERY_LIMIT=200000SF_ORG_METADATA_REST_DEPLOY设置为使SalesforceCLI使用用于部署的元数据RESTAPI。默认情况下,SalesforceCLI使用SOAP。部署使用REST不受39MB.zip文件大小限制的约束,该限制适用于SOAP部署。trueSF_PRECOMPILE_ENABLE设置为在运行测试。此变量与命令一起使用。缺省值为。trueapexruntestfalse
重要
例如,如果部署在3分钟后超时,请尝试将超时5分钟(300秒):
SF_SOURCE_MEMBER_POLLING_TIMEOUT=300SF_SOURCE_TRACKING_BATCH_SIZE在部署或检索期间设置源跟踪的文件批大小。默认值是8,000(Windows)或15,000(Linux/macOS)。
示例将其设置为别名:
SF_TARGET_DEV_HUB=myDevHub例将其设置为组织用户名:
设置示例它到一个别名:
SF_TARGET_ORG=myscratchorg例将其设置为用户名:
Salesforce命令行界面插件安装使用。如果你在安装或更新过程中遇到错误,请尝试将此环境变量设置为打开本地网络以管理并发实例。这种行为更可靠,有时可以修复安装错误。此本地网络的默认端口服务器是31997。将SF_NETWORK_MUTEX_PORT环境变量设置为使用不同的港口。yarntrueyarn
有关更多信息,请参阅yarn文档。SF_USE_PROGRESS_BAR设置为禁用进度酒吧。projectdeploystartfalse
例子:
SF_USE_PROGRESS_BAR=false.
HTTP_PROXY如果您在防火墙或Web代理后面的计算机,请设置此环境变量。用公司代理的URL和端口,用于例:
有关详细信息,请参见NODE_EXTRA_CA_CERTS=file。NODE_TLS_REJECT_UNAUTHORIZED要允许Node.js在证书链中使用自签名证书,表明。0
SalesforceCLI在部署或向组织检索元数据或从组织检索元数据。虽然它们听起来相同,并且通常设置为相同值,这两个设置的工作方式不同。
为简单起见,让我们使用本主题中的术语和,并首先定义每个术语方法。apiVersionsourceApiVersionapi版本该值决定了HTTPS请求或响应。apiVersion
更深入地挖掘,指的是用于为HTTPS提供服务的核心元数据API版本请求或响应。将元数据源部署到组织时,SalesforceCLI会设置对象的值,并使用具有SOAP或RESTAPI的HTTPS请求。因为目前没有REST用于元数据检索的API,SalesforceCLI使用在对象上设置的值来创建URL用于SOAP端点。apiVersionapiVersionConnectionapiVersionConnectionsourceApiVersion该值决定了形状HTTPS请求或响应中的元数据。sourceApiVersion
SalesforceCLI在清单文件中设置元素时使用该值()。在以下情况下,该文件包含在HTTPS请求或响应中分别部署或检索。sourceApiVersion
以下示例显示了这两个设置如何协同工作:
有多种方法可以设置和,以及SalesforceCLI确定的多种方式如果尚未显式设置它们,则为它们的值。使用以下优先级列表可以确定环境中这两个设置的值。设置在列表的更高位置优先于较低的。请参阅本节后面的示例以了解这是如何实现的优先级会影响元数据的部署和检索。apiVersionsourceApiVersionapiVersion:优先顺序
sourceApiVersion:优先顺序
结果:SalesforceCLI将部署请求发送到API版本端点。清单中随请求的值为,这意味着正在部署的元数据源处于API版本形状中。56.0
结果:SalesforceCLI将检索请求发送到API版本SOAP端点。清单中随请求的值为,这意味着要检索的元数据源处于API版本形状中。56.0
由于您可以通过多种方式为给定的SalesforceCLI命令指定参数,了解解析顺序很重要。
SalesforceCLI解析命令行标志和参数、定义文件、环境变量和设置按此顺序排列,这意味着列表顶部的项目采用优先级低于以下项目:
SalesforceCLI命令通常将其输出显示在控制台(stdout)中非结构化、人类可读的格式。写入日志文件(stderr)的消息始终采用JSON格式。
exportSF_CONTENT_TYPE=JSON按任意顺序指定主题和命令在终端或命令提示符下键入命令时,可以输入主题和命令以任意顺序排列。SalesforceCLI确定您指的是哪个命令并自动运行它没有错误。
sfloginorgjwt
例如,当您键入时,您会看到以下内容对话框中,您可以选择所需的命令:sflist
SalesforceCLI将所有日志消息写入文件。CLI调用将日志消息附加到此运行日志文件。只有错误会输出到运行的终端或命令窗口CLI.
USER_HOME_DIR/.sf/sf.log
USER_HOME_DIR/.sf目录中的文件是由SalesforceCLI在内部使用。请勿删除或编辑它们。
日志消息的缺省级别为。您可以设置日志级别设置为以下级别之一,按信息从少到多的顺序列出。这级别是累积的:对于级别,日志文件还包括、和级别的消息。warndebuginfowarnerror
使用SF_LOG_LEVEL环境变量全局设置所有CLI命令的日志级别。例如,在UNIX上:
exportSF_LOG_LEVEL=debug注意
SalesforceCLI使用轮换日志文件。默认情况下,每天午夜SalesforceCLI创建日志文件的备份副本,然后清除其条目以重新开始。备份将与当天的日志一起保留过去两天。此行为确保当前日志文件不会变得太大。
您可以使用以下环境变量更改默认行为:
例如,假设您选择的轮换周期为2周,计数为2。这些值可确保您拥有当前日志。
我们使用这些数据来改进CLI,方法是查看命令执行的趋势以及CLI如何已配置。我们还研究错误数据以改进CLI并在我们的工作(和你的)。使用CLI时,会自动注册遥测。
如果希望选择退出遥测,请将配置变量设置为。disableTelemetrytrue
sfconfigsetdisable-telemetry=true--global或者,您可以通过设置环境变量来选择退出:。SF_DISABLE_TELEMETRY=true
卸载SalesforceCLI会将其从计算机中完全删除。
在终端中输入所有这些命令以删除SalesforceCLI。命令卸载(v7)和(v1和v2)。sfdxsf
sudorm-rf/usr/local/sfdxsudorm-rf/usr/local/lib/sfdxsudorm-rf/usr/local/bin/sfdxsudorm-rf~/.local/share/sfdx~/.config/sfdx~/.cache/sfdxsudorm-rf~/Library/Caches/sfdxsudorm-rf/usr/local/sfsudorm-rf/usr/local/bin/sfsudorm-rf~/.local/share/sf~/.config/sf~/.cache/sfsudorm-rf~/Library/Caches/sf窗户以下步骤将卸载(v7)和(v1和v2):sfdxsf
如果仍安装SalesforceCLI,请删除以下目录:
在macOS或Linux上:
sudorm-rf~/.sfdxsudorm-rf~/.sf在Windows上,删除家中的这些目录目录:
使用命令卸载您之前安装的插件。plugins:uninstall
例如,假设您以前安装了该插件的特定版本,但现在您想要返回到最新版本。卸载插件将带您回到核心与CLI捆绑在一起的版本。从终端或Windows命令输入此命令提示:auth
sfplugins:uninstallauth如果插件是独立的,并且未与CLI捆绑在一起,则卸载它会将其删除来自SalesforceCLI。
Salesforce在DockerHub上发布SalesforceCLI的Docker容器映像。我们遵循与我们的安装程序和软件包相同的发布流程。每周我们都会发布一个当周候选发布(.接下来的一周,我们将图像重新标记为.您可以运行或CLI版本,或者特定编号版本。
npmlatest-rc)latestlatestlatest-rc
对于每个SalesforceCLI版本,我们提供两种风格:
请参阅此网页或下表确定要使用的映像的名称。
例如,要拉取并运行精简的CLI候选发布映像,请执行以下操作:
dockerpullsalesforce/cli:latest-rc-slimdockerrun-itsalesforce/cli:latest-rc-slim然后,您可以运行SalesforceCLI命令,例如:
sfversion要退出SalesforceCLIDocker容器,请执行以下操作:
exit您还可以在容器运行后从容器外部远程执行命令,并且知道容器ID:
dockerexec-it8b1e2696a243bin/bashsfversionSalesforceCLI插件SalesforceCLI由一个名为npm包和多个插件(也称为npm包)组成,其中包含命令。SalesforceCLI提供的大多数核心功能都来自插件。
@salesforce/cli
安装SalesforceCLI时会自动安装某些插件。这些核心插件包含支持源代码驱动开发的命令,例如:
有些插件只是在您需要时安装,而不是自动包含在SalesforceCLI安装中。在“实时”(JIT)中运行命令时插件,SalesforceCLI首次安装插件的最新版本,然后运行该命令。插件安装会自动发生,尽管我们显示一条小消息,这样你就知道发生了什么。从那时起,运行包含的任何命令像往常一样在插件中。当您下次使用时更新SalesforceCLI,如果JIT插件发布了新版本,则它也会更新。这些JIT插件包含大多数CLI用户通常不使用的专用命令,如:sfupdate
要确定插件是核心插件还是JIT,请检查聚合器插件:@salesforce/cli
请参阅SalesforceCLI状态页面,了解核心和JIT插件及其GitHub的完整列表存储库及其状态。
您还可以安装更多插件,例如CRMAnalytics,以合并其他Salesforce功能添加到您的开发环境中。你也可以开发自己的插件来添加你的SalesforceCLI的自定义功能。请参阅SalesforceCLI插件开发人员指南。
默认情况下,安装Salesforce时会安装最新版本的核心插件第一次使用CLI。同样,当您将CLI更新到最新版本时,核心插件以及随后安装的任何JIT插件也会更新。
要确定CLI中当前安装的插件版本,请运行:
sfplugins--core该命令显示以下示例输出等信息。
apexrun
当您使用该命令安装插件时,SalesforceCLI首先验证其数字签名。如果插件提供有效的签名,CLI将安装它。否则,SalesforceCLI不会安装它直到您回答警告提示并确认您了解风险。这个过程当您在命令行中以交互方式安装插件时,效果很好,但可能会阻止批处理完成作业。要在不提示的情况下自动安装插件,即使未签名,在本地文件系统上创建一个允许列表文件,并添加您信任的插件。
sfpluginsinstall
安装插件并在终端中运行其命令之一后,命令以您的用户权限运行。因此,该命令可以读取加密数据,与您经过身份验证的任何Salesforce组织通信,或删除您家中的文件目录。仅安装您信任的未签名和未经验证的插件。
查看这些与特定Salesforce功能配合使用的其他插件。这些插件由Salesforce创建。ISV技术支持插件
ISVTE插件是一个按需技术布道者。它会扫描您的包元数据和代码,并提供有针对性的反馈,以帮助您改进应用并使其面向未来。反馈包括详细的元数据清单、有关功能或要考虑使用的技术、启用资源和安装限制。这反馈还包括最佳做法、合作伙伴警报、改进合作伙伴Trailblazer分数等。虽然它是为ISV和OEM合作伙伴设计的,任何在平台上开发的人都可以使用它。
安装插件时,系统会要求您确认其未签名。答。此行为是预期的。yes
请参阅GitHub获取文档和更多内容信息。CRMAnalytics插件
使用CRMAnalyticsCLI插件通过AnalyticsStudio创建临时组织,该可用于开发和测试源代码。该插件包含调用用于管理CRMAnalytics资产的AnalyticsRESTAPI端点的子集编程。创建和迭代开发CRMAnalytics模板。更新和删除应用、仪表板、镜头和数据流。使用历史记录命令恢复以前的仪表板和数据流的版本。管理嵌入式的自动安装生命周期模板化应用。
请参阅使用Analytics插件进行开发,了解SalesforceCLI提供文档和更多信息。Salesforce代码分析器插件
SalesforceCodeAnalyzer插件是用于源静态分析的统一工具代码,使用多种语言(包括Apex),具有一致的命令行界面和报告输出。我们目前支持PMD规则引擎、ESLint和RetireJS。
当扫描程序发现问题时,该插件会创建“规则违规”。开发人员使用此信息作为反馈来修复其代码。集成此插件添加到您的持续集成(CI)解决方案中,以持续执行规则和确保高质量的代码。
有关文档和详细信息,请参阅GitHub。
有时,您想快速卸载所有非核心SalesforceCLI插件在首次安装CLI之后安装。
非核心插件的示例包括:
要卸载所有非核心插件,请运行此命令。
sfpluginsreset命令完成后,您只剩下核心SalesforceCLI插件,就好像您一样刚刚从头开始安装了CLI。
以下是SalesforceCLI错误及其修复方法的列表。
使用命令快速收集SalesforceCLI配置数据并运行诊断测试。使用命令轻松生成您可以附加到GitHub问题或提供给Salesforce客户的信息文件支持。
doctor
CLI医生已准备好诊断您的所有问题!
最近安装SalesforceCLI后,当您运行以下命令时,您会收到此错误如。
projectgenerate
ERRORrunningprojectgenerate:CommandfailedwithENOENT:npmroot-g--prefix/Users/johndoe/Documents/sf_workspaces/.yo-repository--loglevelerrorspawnSyncnpmENOENT答:安装节点.js。
例如,Salesforce在底层API时弃用CLI命令和标志变化。
SalesforceCLI弃用策略为:
请继续阅读,了解安装SalesforceCLI后要执行的操作。
查看示例库中的示例。图库包含示例应用程序,显示您可以在Salesforce平台上构建的内容。他们是不断更新以纳入最新功能和最佳实践。
使用快速入门快速提升SalesforceCLI上速:SalesforceDXTrailhead项目。然后,使用“与包开发一起构建应用”跟踪直接进入开发阶段。
想要更直观的开发人员体验?我们为您提供保障!查看适用于VSCode的Salesforce扩展,它基于SalesforceCLI构建。
阅读SalesforceDX文档:
SalesforceCLI是一个功能强大的工具,可用于在许多不同的方式。以下是一些常见的途径,以及获得所需的步骤开始并就下一步做什么提出建议。入门:使用ScratchOrgs进行开发临时组织是Salesforce代码的源代码驱动和一次性部署,并且元数据。Scratch组织在开发过程,并促进自动化测试和持续集成。
入门:开发第二代托管包作为AppExchange合作伙伴,使用第二代托管打包(2GP)来组织您的源代码,构建小型模块化包,与您的版本集成控制系统,并更好地使用您的自定义Apex代码。
入门:使用沙盒沙盒是可用于开发的Salesforce组织的副本,测试和训练,而不会影响生产组织。您可以在生产组织中启用源跟踪,以便开发人员DeveloperPro沙盒会自动跟踪生产组织和本地开发工作区。
SalesforceCLI是一个命令行界面,可简化开发和构建与您的Salesforce组织合作时的自动化。使用它来创建和管理组织,将源文件与组织同步,创建和安装软件包等。
你还在使用(v7)吗?如果是这样,请参见从sfdx(v7)移动到sf(v2)。sfdx
SalesforceCLI基于oclif,这是一个用于构建命令行的开源框架Node.js中的接口。在本地计算机或持续集成(CI)上运行它系统。它支持安装自定义插件。
我们每周都会发布新版本的CLI和插件。阅读每周发行说明,了解最近和即将到来的更改。
在开始之前,请查看这些系统要求以充分利用SalesforceCLI和开发人员工具。操作系统SalesforceCLI支持以下操作系统。
代码编辑器或IDE您可以使用任何代码编辑器。建议使用VisualStudioCode(VSCode)并安装适用于VSCode的Salesforce扩展专为在SalesforcePlatform上进行开发而设计。
注意
如果您使用适用于VSCode的Salesforce扩展,请记住,某些CLI命令在命令面板中不可用。如果在VSCode,在集成终端中运行它。开启API系统权限SalesforceCLI需要启用API的系统权限,该权限提供以编程方式访问组织的信息。如果无法运行CLI命令,请您的Salesforce管理员启用此权限。版本控制系统您可以使用任何版本控制系统(VCS)。我们建议您使用GitHub利用GitHub存储库中的示例。节点.js我们将Node.js捆绑在每个特定于操作系统的SalesforceCLI中安装。我们包含具有活动LTS状态的Node.js版本,并与Node.js发布计划。如果您更喜欢使用安装SalesforceCLI,我们建议您也使用ActiveLTS版本节点.js。npm
Salesforce仅支持最新版本的SalesforceCLI。请参阅SalesforceCLI发行说明,了解最新版本信息。
使用发行说明了解Salesforce的最新更新和更改命令行界面。
我们每周发布SalesforceCLI的新版本。阅读每周发行说明,了解新功能、更改和错误修复在当前版本和候选版本中。
如果您当前正在使用(v7),我们高度建议移至(v2)。搬家很简单:你首先卸载(v7),然后安装(v2)。移动后,CLI命令在终端或持续集成(CI)脚本中运行将继续像以前一样工作。
sfdxsfsfdxsf
您必须先卸载(v7)安装(v2),也可以获取安装错误。此要求适用于所有安装方法:npm、特定于操作系统的安装程序和TAR文件。sfdxsf
确定(v7)是否安装在您的计算机,请在终端(macOS和Linux)或命令提示符下运行此命令(视窗):sfdx
sfdxversionsfdx-cli/7.208.10darwin-arm64node-v18.16.0如果显示的版本开始如图所示,则(v7)已安装在您的计算机上。sfdx-cli/7sfdx
本文档中的各节说明如何将三种安装方法移至(v2):、macOS或Windows安装程序和TAR文件。选择适用于您的环境的部分。如果您不确定最初如何安装(v7),阅读此文档。你是使用Docker?阅读我们更新的Docker说明,了解如何获取(v2)映像。sfnpmsfdxsf
恭喜,你已成功迁移到(v2)!sf
安装程序是指Windows或macOS安装程序文件。.exe.pkg
SalesforceCLI分发TAR文件,您可以在所有受支持的操作上安装这些文件系统。
如果您在持续集成(CI)系统中使用SalesforceCLI,请将您的脚本更新为使用(v2)。sfnpm如果您的CI脚本使用安装SalesforceCLI,请更新它们以使用此命令安装(v2):npmsf
npminstall@salesforce/cli--global警告
更新CI脚本时,如果它包含以下命令以安装(v7),则必须将其删除:sfdx
npminstallsfdx-cli--global如果你保留这两个命令,则安装命令(v2)将返回错误,并且脚本将失败。sfTAR文件如果您的CI脚本使用TAR文件安装SalesforceCLI,请将下载URL更新为指向(v2)下载。例如,更改此URL:sf
以下是您搬家后需要注意的几件事。
sf(v2)已于2023年7月12日正式发布。当时,我们停止发布对(v7)的更新和(v1)。获取新的SalesforceCLI功能和错误修复,您必须使用(v2)。sfdxsfsf
此外,(v7)的大小是(v2)的两倍,因为它还包括(v1)。要减小SalesforceCLI安装和下载的大小,我们建议您迁移到(v2)。sfdxsfsfsf
如果您尝试在不先卸载(v7)的情况下使用(v2)进行安装,则会出现以下错误:sfnpmsfdx
npmERR!codeEEXISTnpmERR!path/Users/user/.nvm/versions/node/v18.16.0/bin/sfdxnpmERR!EEXIST:filealreadyexistsnpmERR!Fileexists:/Users/user/.nvm/versions/node/v18.16.0/bin/sfdxnpmERR!Removetheexistingfileandtryagain,orrunnpmnpmERR!with--forcetooverwritefilesrecklessly.npmERR!Acompletelogofthisruncanbefoundin:npmERR!/Users/user/.npm/_logs/2023-06-28T22_16_15_181Z-debug-0.log当(v2)正式发布时,在持续集成(CI)系统中也会遇到此错误。如果您的CI脚本已经用于安装(v7)和(v1),并且您不更新脚本,错误可能会从7月12日开始自动发生,2023.sfnpmsfdxsf
若要解决此问题,请从脚本中删除此命令。
npminstallsfdx-cli--global保留此命令,该命令将安装(v2)。sf
npminstall@salesforce/cli--global返回sfdx(v7)我们预计您没有任何理由返回(v7)。但是,如果您必须返回,请按照下列步骤操作。sfdx
使用特定于操作系统的工件在计算机上安装SalesforceCLI,例如与macOS一样,TAR文件或使用.
.pkgnpm
选择一种方法在计算机上安装。例如,不要在同时使用两者的macOS上安装文件和.两种方式安装它可能会导致计算机上出现令人困惑的路径问题,有时没有一个明显的错误,因此难以诊断。.pkgnpm
使用.pkg文件在macOS上安装SalesforceCLI。
使用.exe文件在Windows上安装SalesforceCLI。
SalesforceCLI在本机Windows命令提示符下效果最佳(cmd.exe)和MicrosoftWindowsPowerShell。我们不建议将SalesforceCLI与Linux终端模拟器(如Windows10)一起使用适用于Linux、cygwin或MinGW的子系统,因为对bug的支持有限。
使用此表查找适用于您的操作系统的TAR文件(.tar.gz或.tar.xz)的未版本控制URL。当我们发布新版本时每周,我们还会更新这些URL,以便它们指向最新的版本。非版本控制的URL对于CI用例特别有用。该表还包括清单URL,显示每个文件的版本控制URL。
我们强烈建议您使用安装程序或安装SalesforceWindows上的CLI。但是,如果您决定使用WindowsTAR文件,则必须首先安装一个单独的程序,如7Zip,用于提取文件内容。npm
在这些示例中,假设您正在Linux上和主目录的子目录中安装SalesforceCLI。cli/sf
如果您在计算机上安装了Node.js,则可以用于安装SalesforceCLI。此方法允许您安装命令行中的SalesforceCLI,对于持续集成特别有用(CI)用例。
npm
如果您没有管理员权限,则此安装方法是一个不错的选择您的工作站,或者如果组策略阻止CLI安装和更新。安装SalesforceCLI不需要root权限。npm
我们建议您始终使用Salesforce的最新版本或候选版本但是,我们也知道有时您需要旧版本的CLI。
使用此命令可返回到当前版本。
sfupdatestablenpm要更新到旧版本的SalesforceCLI,请使用在包名称后指定版本。例如,要更新toversion,在终端(macOS和Linux)或命令提示符(Windows)。npm@
npminstall@salesforce/cli@2.0.1--global若要返回到当前版本,请运行此命令。
npminstall@salesforce/cli--global请参阅SalesforceCLInpmjs.com页面,了解所有列表版本。我们保留了所有旧版本的@salesforce/cli和sfdx-cli(已弃用)npm包。
我们发布JSON文件,其中列出了最新版本的安装程序的下载URL,以及每个受支持的操作系统的TAR文件。我们不断向列表中添加新版本;版本在列表中保留20周。我们保留TAR和安装程序文件本身至少40周。
SF(V2)
自2023年7月12日起,我们不再更新(v7)。我们保留这些旧版本只是出于历史原因。sfdx
要确保您已正确安装SalesforceCLI,请运行以下命令以查看可用命令的版本和列表。要查看已安装的SalesforceCLI版本,请运行以下命令终端(macOS和Linux)或命令提示符(Windows)中的命令。
sf--version这命令返回有关版本的详细信息,例如以下示例输出。
@salesforce/cli/2.17.10darwin-x64node-v20.9.0要查看已安装的核心插件及其版本,请运行此命令命令。
@oclif/plugin-autocomplete3.0.1(core)@oclif/plugin-commands3.0.6(core)@oclif/plugin-help6.0.5(core)@oclif/plugin-not-found3.0.3(core)@oclif/plugin-plugins4.1.0(core)@oclif/plugin-search1.0.6(core)@oclif/plugin-update4.1.3(core)@oclif/plugin-version2.0.6(core)@oclif/plugin-warn-if-update-available3.0.2(core)@oclif/plugin-which3.0.8(core)@salesforce/cli2.17.10(core)apex2.3.20(core)auth2.8.26(core)data2.6.3(core)deploy-retrieve1.20.0(core)info3.0.1(core)limits3.0.1(core)login2.0.1(core)marketplace1.0.2(core)org2.11.8(core)schema3.0.1(core)settings2.0.2(core)sobject0.2.15(core)source2.11.0(core)telemetry3.1.0(core)templates55.5.18(core)trust3.0.1(core)user2.3.42(core)UninstalledJITPlugins:community2.4.9custom-metadata2.2.12dev1.3.2devops-center1.2.4env3.0.1functions1.22.9packaging1.27.1signups1.5.6@salesforce/sfdx-plugin-lwc-test1.1.1@salesforce/sfdx-scanner3.18.0查看所有可用的SalesforceCLI命令,运行此命令命令。
sfcommands这命令列表包括别名命令,例如-style命令别名为。force:apex:executesfdxapexrun
自显示SalesforceCLI版本的发行说明当前安装在您的计算机上,请运行此命令命令。
sfwhatsnew更新SalesforceCLI如果要确保运行的是最新版本的SalesforceCLI,可以手动更新它。
由于更新SalesforceCLI的方法因您是否使用了安装程序或npm,您必须先知道如何安装,然后才能更新。万一你忘记了,这里有两种方法可以确定您如何安装SalesforceCLI:
要安装最新的SalesforceCLI和插件版本,请在终端中运行此命令(macOS)或命令提示符(Windows):
sfupdate默认情况下,CLI会定期检查并安装更新。要禁用自动更新,将环境变量设置为。SF_AUTOUPDATE_DISABLEtrue
当您更新SalesforceCLI时,我们会自动显示该版本的发行说明您正在更新,以便了解新增、更改和修复的功能。沉默显示中,将和环境变量设置为。SF_HIDE_RELEASE_NOTESSF_HIDE_RELEASE_NOTES_FOOTERtrue
自动更新选项不可用。当CLI的新版本可用时,运行终端(macOS和Linux)或命令提示符中的此命令(视窗):
npminstall--global@salesforce/cli更新到CLI候选发布版或每晚更新我们每周发布新版本的CLI。同时,我们还发布了一个版本CLI的候选者,其中包含我们计划在下一个每周版本中包含的更改。将候选版本视为Salesforce沙盒预览的CLI版本。您可以如果您想查看即将推出的功能,请更新到候选版本。或者保持当前状态并正式发布。或者来回走动。由你决定!
我们还每天发布夜间版本。Nightly版本包括所有我们的库和插件。如果您想尝试一天前合并的修复程序,请尝试安装夜间构建。与候选版本类似,每日构建有助于改进SalesforceCLI的稳定性,在问题进入稳定版之前捕获问题释放。
虽然最新的(稳定)版本是最可靠的,但我们鼓励用户也测试一下发布候选版本和夜间构建,并向我们的GitHub报告问题问题存储库。建议针对当前版本和候选版本,用于识别潜在的中断性变更在它们发生之前。
要显示已安装的SalesforceCLI的版本,请从终端运行此命令(macOS和Linux)或命令提示符(Windows)。该版本未指示它是否为发布候选版本或夜间版本,因此请查看发行说明以获取当前版本号。
sfversion使用安装程序进行更新安装程序使用当前release,用于候选版本和夜间生成。stablestable-rcnightly
如果您已安装SalesforceCLI并且正在使用当前版本,请在终端(macOS和Linux)或命令提示符(Windows)切换到版本候选人。
sfupdatestable-rc同样地运行以下命令以安装nightly建。
sfupdatenightly要卸载候选发布或夜间构建并返回到当前版本,运行此命令。
sfupdatestable使用npm安装Npm安装使用当前版本、候选版本和夜间构建的标记。latestlatest-rcnightly
要使用npm安装候选版本,请在终端(macOS和Linux)中运行此命令,或者命令提示符(Windows)。
npminstall--global@salesforce/cli@latest-rc同样地运行以下命令以安装nightly建。
npminstall--global@salesforce/cli@nightly自卸载候选发布版本或夜间构建并返回到当前版本,运行此命令命令。
npminstall--global@salesforce/cli@latest要查看当前与npm标记关联的SalesforceCLI版本,请运行以下命令命令。
npmview@salesforce/clidist-tags--json从TAR文件安装SalesforceCLI分发TAR文件候选版本和夜间版本,可以安装在所有受支持的操作上系统。下载URL类似于用于安装当前释放,但使用or通道而不是通道。stable-rcnightlystable
例如,到发行版的LinuxTAR文件候选人,在终端(macOS和Linux)或命令提示符(Windows)中运行此命令,从频道下载。wgetstable-rc
当您运行命令时,SalesforceCLI会检查您是否拥有最新版本。如果不会,CLI会自动更新。您可以使用以下命令禁用此自动更新环境变量。
要保留当前版本的CLI并禁用自动更新,请将环境变量设置为。环境变量的设置方式因不同的操作系统。有关如何操作的说明,请参阅操作系统供应商的帮助设置环境变量。SF_AUTOUPDATE_DISABLEtrue
持续集成(CI)是一种软件开发实践,开发人员在其中定期将他们的代码更改集成到源代码存储库中。确保新代码不引入错误,自动构建和测试在开发人员签入之前或之后运行变化。
许多第三方CI工具可供您选择。SalesforceDX轻松集成添加到这些工具中,以便您可以为Salesforce设置持续集成应用。
CircleCI是一种常用的集成工具,可与您现有的集成版本控制系统,用于将增量更新推送到您指定的环境。CircleCI系列可用作基于云的或本地工具。这些说明演示了如何使用GitHub、CircleCI和DevHub组织,用于持续集成。
在集成现有的CircleCI框架之前,请配置开发人员中心组织和CircleCI项目。
接下来,将server.key.enc的密钥、iv和内容存储为CircleCIUI中受保护的环境变量。这些值被认为是机密的,因此采取适当的预防措施来保护它们。
你准备好了!现在,当您提交并推送更改时,您的更改将启动一个CircleCI构建。
为存储库做贡献
如果您发现任何问题或改进此存储库的机会,请修复它们!随意为这个项目做贡献,分叉这个仓库,然后将内容。进行更改后,通过发送拉取请求与社区共享这些更改。有关参与的详细信息,请参阅如何发送拉取请求到GitHub项目。
报告问题
如果您发现此演示中有任何问题无法修复,请随时在此存储库的问题部分报告。
Jenkins是一个开源的、可扩展的自动化服务器,用于实现连续集成和持续交付。您可以轻松地将SalesforceDX集成到Jenkins中框架,用于针对临时组织自动测试Salesforce应用程序。
为了集成Jenkins,我们假设:
在将DevHub和Scratch组织集成到现有的Jenkins框架之前,配置Jenkins环境。我们的示例假定你正在包中工作发展模式。
示例Jenkinsfile展示了如何将DevHub和Scratch组织集成到Jenkins作业。此示例使用Jenkins多分支管道。每个Jenkins设置都是不同。本演练介绍自动测试Salesforce的方法之一应用。本演练重点介绍了用于创建临时组织的SalesforceCLI命令。上传代码并运行测试。
本演练依赖于sfdx-jenkins-packageJenkinsfile。我们假设你熟悉Jenkinsfile、JenkinsPipelineDSL和Groovy编程语言的结构。这演练演示如何使用SalesforceCLI实现Jenkins管道,以及临时组织。有关所使用的命令,请参阅CLI命令参考。
此工作流与Jenkinsfile阶段最接近。
使用关键字定义所需的变量通过SalesforceCLI命令。为每个变量分配相应的环境变量您之前在Jenkins环境中设置。def
defSF_USERNAME虽然不是必需的,但我们假设你使用Jenkins全局工具配置来创建指向CLI安装目录。在Jenkinsfile中,使用tool命令将变量的值设置为此自定义工具。toolbelttoolbelt
deftoolbelt=tool'toolbelt'现在,您可以使用在Jenkinsfile中引用SalesforceCLI可执行文件。${toolbelt}/sf
在测试代码之前,请从版本控制中获取相应的版本或分支系统(VCS)存储库。在此示例中,我们使用Jenkins命令。我们假设Jenkins管理员已经配置环境以访问正确的VCS存储库并检出正确的分支。checkoutscm
stage('checkoutsource'){//whenrunninginmulti-branchjob,onemustissuethiscommandcheckoutscm}将所有阶段包装在withCredentials命令中您之前使用凭据接口。因此,您必须使用Jenkinsfile正文中的命令来访问机密文件。该命令允许您命名凭据条目,然后从凭据存储中提取,并通过变量提供给包含的代码。使用时,将所有阶段放在其代码块。withCredentialswithCredentialswithCredentials
此示例将JWT密钥文件的凭据ID存储在变量中。您之前定义了并将其设置为其相应的环境变量。该命令从以下位置获取密钥文件的内容凭据存储并将内容放置在临时位置。位置存储在变量中。你将变量与命令一起使用以指定私钥安全。SERVER_KEY_CREDENTALS_IDSERVER_KEY_CREDENTALS_IDwithCredentialsserver_key_fileserver_key_fileorgloginjwt
运行单个作业时,此设置不会出现问题,但在运行时可能会导致问题多个作业。因此,如果使用同一个DevHub运行多个作业,会发生什么情况,或者其他Salesforce用户?当CLI尝试以用户身份连接到开发人员中心时,你经过身份验证时,无法刷新令牌。为什么?CLI尝试使用JWT密钥其他工作区中不再存在的文件,而不考虑当前作业。withCredentials
如果使用设置主目录以匹配工作区目录,则每个作业的身份验证文件都是唯一的。为每个作业创建唯一的身份验证文件也更安全,因为每个作业只能访问它创建的身份验证文件。withEnv
使用时,将所有阶段都放在其代码中块withEnv
如果不使用管道或在管道阶段之外运行命令,请添加主页脚本的环境规范:。exportHOME=$WORKSPACE
如果确实要在Jenkins上对DevHub进行身份验证IfyoudowanttoauthtoauthtoyourDevHubonyourJenkins机器,请按照下列步骤操作:
解析命令的JSON输出的Groovy代码提取自动生成的用户名组织创建的一部分。使用此用户名,存储在SF_USERNAME变量中,用于使用推送源、分配权限集等的CLI命令。orgcreatescratch
让我们用元数据填充您的新临时组织。此示例使用命令部署源到组织。源代码包括构成Salesforce的所有部分application:Apex类和测试类、权限集、布局、触发器、自定义对象等。projectdeploystart
现在,您的源代码和测试源代码已推送到临时组织,请运行命令以运行Apex测试。apexruntest
//-------------------------------------------------------------------------//Rununittestsintestscratchorg.//-------------------------------------------------------------------------stage('RunTestsInTestScratchOrg'){rc=command"${toolbelt}/sfapexruntest--target-orgciorg--wait10--result-formattap--code-coverage--test-level${TEST_LEVEL}"if(rc!=0){error'Salesforceunittestrunintestscratchorgfailed.'}}您可以为CLI指定各种标志命令。在示例中:apexruntest
该命令将其测试结果写入JUnit格式。apexruntest
Salesforce保留在临时文件后指定天数内删除临时组织的权利已创建。您还可以在管道中创建一个阶段,用于显式删除测试完成后的scratch组织。此清理可确保更好地管理您的资源。orgdeletescratch
//-------------------------------------------------------------------------//Createpackageversion.//-------------------------------------------------------------------------stage('CreatePackageVersion'){if(isUnix()){output=shreturnStdout:true,script:"${toolbelt}/sfpackageversioncreate--package${PACKAGE_NAME}--installation-key-bypass--wait10--json--target-dev-hubHubOrg"}else{output=bat(returnStdout:true,script:"${toolbelt}/sfpackageversioncreate--package${PACKAGE_NAME}--installation-key-bypass--wait10--json--target-dev-hubHubOrg").trim()output=output.readLines().drop(1).join("")}//Wait5minutesforpackagereplication.sleep300defjsonSlurper=newJsonSlurperClassic()defresponse=jsonSlurper.parseText(output)PACKAGE_VERSION=response.result.SubscriberPackageVersionIdresponse=nullecho${PACKAGE_VERSION}}创建临时组织并显示信息还记得您之前创建临时组织的时候吗?现在让我们创建一个临时组织进行安装您的包,并显示有关该暂存组织的信息。
//-------------------------------------------------------------------------//Createnewscratchorgtoinstallpackageto.//-------------------------------------------------------------------------stage('CreatePackageInstallScratchOrg'){rc=command"${toolbelt}/sforgcreatescratch--target-dev-hubHubOrg--set-default--definition-fileconfig/project-scratch-def.json--aliasinstallorg--wait10--duration-days1"if(rc!=0){error'Salesforcepackageinstallscratchorgcreationfailed.'}}//-------------------------------------------------------------------------//Displayinstallscratchorginfo.//-------------------------------------------------------------------------stage('DisplayInstallScratchOrg'){rc=command"${toolbelt}/sforgdisplay--target-orginstallorg"if(rc!=0){error'Salesforceinstallscratchorgdisplayfailed.'}}安装包、运行单元测试和删除临时组织最后,在临时组织中安装软件包,运行单元测试,然后删除scratchorg.就是这样!
Jenkinsfile演练主题使用此sfdx-jenkins-packageJenkinsfile作为示例。
有关设置TravisCI的帮助,请参阅:
通过从您选择的供应商处克隆示例存储库,快速开始使用CI。每个存储库都有一个示例配置文件和一个全面的README.md分步信息。
这些示例存储库支持组织开发模型。此模型使用SalesforceCLI、源代码管理系统和应用程序生命周期中的沙盒。要确定这是否模型适合您,请完成组织开发模型模块,赢取徽章。
这些示例存储库支持包开发模型。此模型使用SalesforceCLI、源代码控制系统、用于开发的临时组织以及用于测试和分期。要确定此型号是否适合您,请前往并通过以下方式获得徽章完成包开发模型模块。
以下是一些帮助您解决问题的提示。
使用以下命令可查看有关SalesforceCLI的版本信息。
Error(1):Nodefaultdevhubfound.Use-vor--target-dev-hubtospecifyanenvironment.发生了什么事?
如果从项目目录的根目录运行authorization命令,则会在本地设置配置变量。价值仅当从同一项目目录运行命令时才适用。如果更改为不同的目录并运行,本地默认DevHub组织的设置不再适用,并且出现错误。target-dev-huborgcreatescratch
通过执行下列操作之一来解决问题。
假设您在一个组织上运行你已在其中创建已连接的应用。当您尝试将检索到的源部署到不同的组织,部署失败并显示错误。发生了什么事?
projectretrievestartTheconsumerkeyisalreadytaken
连接的应用包括网站或应用用来标识自身的使用者密钥Salesforce的。使用者密钥在整个Salesforce生态系统中必须是唯一的。什么时候您尝试部署检索到的(和未更改的)源文件与将应用连接到新组织时,由于使用者密钥重复,部署失败。
有几个选项可以解决此问题。
以下是您在使用SalesforceDX时可能遇到的一些已知问题。
有关最新的已知问题,请访问TrailblazerCommunity的已知问题页面。
解决方法:若要忽略此消息,请单击“运行”反正。无法使用SalesforceCLI导入记录类型描述:运行命令时,我们不支持RecordType。data:tree:import
解决方法:没有。对Windows上Shell环境的有限支持描述:SalesforceCLI在命令提示符()和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
SalesforceCLI有时无法识别Scratch组织社区描述:有时(但并非在所有情况下)SalesforceCLI不承认与社区一起创建临时组织特征。您无法使用CLI打开临时组织,即使暂存组织在开发人员中心中列出。
解决方法:你可以试试这个解决方法,尽管它并不能在所有情况下解决问题。删除暂存组织,然后使用CLI创建新的暂存组织。删除和重新创建临时组织将计入您的每日临时记录组织限制。拉取社区并部署社区时出错描述:发生此错误是因为临时组织没有所需的访客许可证。
解决方法:在您的临时组织中定义文件,如果指定了Communities功能,则还要指定站点功能。
错误:删除自定义标签后未找到任何结果force:source:status描述:在暂存中删除自定义标签后,该命令将返回错误组织。force:source:statusNoResultsFound
解决方法:选项#1:如果您只有一个或两个划痕组织,您可以通过其生成的用户名,请使用此解决方法。在你的DXproject/.sfdx/org目录,仅删除受影响的临时组织所在的文件夹。
删除目录(在选项#1或选项#2之后),再次运行。force:source:status错误:名为“Account.PersonAccount”的“RecordType”类型的实体不能是发现描述:尽管您可以在临时打开个人帐户组织,将该功能添加到您的临时组织定义中,运行或导致错误,source:pushsource:pull
解决方法:没有。force:source:convert不会将安装后脚本添加到包.xml描述:如果运行,package.xml不包含帖子安装脚本。force:source:convert解决方法:若要解决此问题,请选择以下选项之一方法:
必须在对象的元数据文件中手动启用源跟踪描述:如果您在标准或自定义设备上启用Feed跟踪对象,然后运行,Feed跟踪未启用。force:source:pull
解决方法:在您的Salesforce中DX项目,手动启用标准或自定义的Feed跟踪对象在其元数据文件(-meta.xml)中添加.
duplicatevaluefound:
解决方法:没有。
false
解决方法:始终设置版本号的补丁段,设置为0。例如,1.2.0.1是有效,但1.2.1.1无效。受保护的自定义元数据和自定义设置对开发人员可见临时组织(如果已安装的软件包共享命名空间)描述:将机密存储在使用受保护的自定义元数据或受保护的第二代包自定义设置。您可以使用相同的命名空间。但是,当您在临时组织中安装这些软件包时,这些机密对于在具有共享命名空间的Scratch组织。将来,我们可能会添加一个“package-protected”关键字来防止访问这些中的包机密情况。
受保护的自定义元数据和自定义设置对开发人员可见临时组织(如果已安装的软件包共享命名空间)描述:在解锁的密钥中存储密钥时要小心使用受保护的自定义元数据或受保护的自定义设置的包。你可以创建多个具有相同命名空间的解锁包。但是,当您在临时组织中安装这些软件包,这些密钥对在临时组织工作的任何开发人员,共享命名空间。将来,我们可能会在在这些情况下阻止访问包机密。
包是一个顶级容器,用于保存有关应用或package:包名称、描述和关联的命名空间。
您可以在sfdx-project.json项目配置文件的包描述符部分中提供包详细信息。
准备好测试或共享包时,请使用命令创建包。
sfpackagecreate
如果您使用的是命名空间,请在sfdx-project.json文件中指定包命名空间。若要了解详细信息,请参阅了解命名空间。
若要创建包,请转到项目目录。名称成为包alias,它会自动添加到项目文件中。您可以选择指定一个活跃的DevHub组织用户接收Apexgacks的电子邮件通知,并安装,升级或卸载与程序包关联的失败。
sfpackagecreate--name"ExpenserApp"--package-typeUnlocked--path\"expenser-main"--target-dev-hubmy-hub--error-notification-usernameme@devhub.org输出与此示例类似。
sfdx-project.jsonhasbeenupdated.Successfullycreatedapackage.0HoB00000004CzHKAU===IdsNAMEVALUE────────────────────────────PackageId0HoB00000004CzHKAU更新程序包要更新名称、描述或用户以接收现有包,请使用此命令。
sfpackageupdate--package"ExpenseApp"--name"ExpenseManagerApp"\--description"NewDescription"--error-notification-usernameme2@devhub.org注意
你创建包。
在创建包版本之前,请先验证包详细信息,例如包sfdx-project.json文件中的名称、依赖项以及主要版本号、次要版本号和修补程序版本号。验证所需的元数据更改或添加新的包版本位于包的主目录中。
运行此命令以查看每天可以创建多少个包版本以及有多少个你还剩下。
sflimitsapidisplay查找Package2VersionCreates条目。
NAMEREMAININGMAXIMUM───────────────────────────────────────────────────────Package2VersionCreates2350创建包版本使用此命令创建包版本。指定软件包别名或ID(0Ho)。还可以包括一个临时定义文件,该文件包含特征列表和设置包版本所依赖的元数据。
sfpackageversioncreate--package"ExpenserApp"--installation-key“HIF83kS8kS7C”\--definitionfileconfig/project-scratch-def.json--wait10注意
sfpackageversioncreatereport--package-create-request-id08cxx00000000YDAAY输出显示有关请求的详细信息。
根据包的大小和其他变量,创建请求可以采用几分钟。当有多个待处理的创建包请求时版本,您可以使用此命令查看所有请求的列表。
sfpackageversioncreatelist--created-last-days0显示每个请求的详细信息,如下所示(ID和标签被截断)。
如果您不使用NEXT,并且您也忘记更新版本sfdx-project.json文件中的数字,即新的包版本使用与以前的包版本相同的编号。虽然我们不强制执行包版本号的唯一性,每个包版本都分配了一个唯一的订阅者包版本ID(以04t开头)。
如果包的元数据依赖于一组复杂的功能,设置或许可证,可能很难在临时组织定义文件。相反,请创建生产组织的组织形状或其他组织形状developmentorg,并在临时组织定义文件中指定该源组织的ID。在包创建时,我们会在构建和验证包的元数据。
在使用此功能之前,请熟悉OrgShapeforScratchOrgs的工作原理。
然后在源组织中启用临时组织设置,生成组织形状,然后编辑临时组织定义文件以包含组织名称和15个字符的源组织同上。
{"orgName":"Acme","sourceOrg":"00DB1230400Ifx5"}在解锁的包装中使用分支在源代码管理系统(SCS)中使用分支的开发团队,通常基于特定代码分支中的元数据生成包版本。
您可以指定任何字母数字值(最多240个字符)作为分支名称。
您还可以在sfdx-project.json文件的包目录部分中指定分支名称。
"packageAliases":{"pkgA@1.0.0.4-featureA":"04tB0000000IB1EIAW"}请记住,版本号在每个分支内递增,而不是在分支之间递增。为例如,可以有两个或多个版本号为1.3.0.1的beta包版本。
尽管多个beta包版本可以具有相同的版本号,但可以有对于给定的major.minor.patch软件包版本,只有一个已提升和发布的软件包版本。
默认情况下,您的包可以依赖于同一分支中的其他包。为基于其他分支中的包依赖,在sfdx.project.json文件。
sfpackageversioncreate--skip-validation在工具API中,使用Package2VersionCreateRequest对象上的SkipValidation字段。
不能同时指定跳过验证和代码覆盖率,因为代码覆盖率是在验证期间计算。
在主要的Salesforce版本转换期间,您可以指定或何时创建包版本。通过指定包的发布版本,可以进行测试即将推出的功能,运行回归测试,并为客户提供支持,无论使用哪种Salesforce释放他们的组织已开启。以前,您只能创建与Salesforce发布您的开发人员中心组织。
previewprevious要基于预览版或以前的Salesforce发行版创建包版本,请创建一个临时组织定义文件,其中包括:
{"release":"previous"}或
{"release":"preview"}在sfdx-project.json文件中,将设置为与包版本的发布版本相对应创建。如果以以前的版本为目标,则接受低于当前版本的任何值。sourceApiVersionsourceApiVersion然后,在创建软件包版本时,指定临时组织定义文件。
在升级和发布未锁定的软件包之前,Apex代码必须满足最低75%的代码覆盖率要求。可以安装不符合代码的包版本仅在临时组织和沙盒中的覆盖率要求。
我们不会计算依赖于组织的解锁包的代码覆盖率。
每个新的软件包版本在创建时都标记为beta。当您开发您的package,在创建准备好的版本之前,可以创建多个包版本在生产组织中发布和安装。
在升级包版本之前,请确保在Dev中启用了用户权限“将包版本提升为已发布”与包关联的中心组织。请考虑使用此用户创建权限集权限,然后将权限集分配给相应的用户配置文件。
当您准备好发布时,请使用.sfpackageversionpromote
sfpackageversionpromote--package"ExpenseManager@1.3.0-7"如果命令成功,则会显示一条确认消息。
Successfullypromotedthepackageversion,ID:04tB0000000719qIAAtoreleased.更新成功后,查看包详细信息。
sfpackageversionreport--package"ExpenseManager@1.3.0.7"确认Released属性的值为。true
您可以从命令行更新包版本的大多数属性。例如您可以更改包版本名称或说明。一个重要的例外是你不能更改发布状态。
如果已发布最新的软件包版本,请递增主要版本、次要版本或您创建的下一个软件包版本的修补程序版本号。
软件包版本号使用格式major.minor.patch.build。例如,如果您发布了软件包1.0.0.2,您可以使用1.1.0.0、2.0.0.0或1.0.1.0作为下一个软件包版本。
当这些组件从未锁定的包中删除时,它们将从软件包升级期间的目标安装组织。
使用和删除包和包版本你不再需要了。
sfpackageversiondeletesfpackagedelete
若要删除包或包版本,用户需要“删除第二代包”用户许可。在删除包之前,请先删除所有关联的包版本。
删除包或包版本的注意事项
$sfpackagedelete-p"YourPackageAlias"$sfpackagedelete-p0Ho...$sfpackageversiondelete-p"YourPackageVersionAlias"$sfpackageversiondelete-p04t...这些CLI命令不能用于第一代托管包或包版本。若要删除第一代托管包,请参阅第一代托管打包开发人员中的查看包详细信息指南。
从命令查看以前创建的包和包版本的详细信息线。若要显示开发人员中心组织中所有包的列表,请使用此命令。
sfpackagelist--target-dev-hubmy-hub可以在输出中查看命名空间、包名称、ID和其他详细信息。
若要显示开发人员中心组织中所有包版本的列表,请使用此命令。
sfpackageversionlist--target-dev-hubmy-hub您可以在输出中查看命名空间、版本名称和其他详细信息。
使用SOAPAPI启动推送升级、跟踪每个作业的状态并查看错误消息,如果任何推送升级失败。以下是有助于推送升级的对象。
已解锁软件包的推送升级注意事项
使用CLI或浏览器安装未锁定的软件包。您可以安装软件包版本在临时组织、沙盒组织、DE组织或生产组织中。
如果您使用的是SalesforceCLI,则可以使用该命令在临时组织或目标订阅者中安装软件包组织。
sfpackageinstall
在将软件包安装到临时组织之前,请运行此命令以列出所有软件包和找到ID或包别名。
sfpackageversionlist确定要安装的版本。输入此命令,提供软件包别名或程序包ID(以04t开头)。
sfpackageinstall--package"ExpenseManager@1.2.0-12"--target-orgjdoe@example.com如果您已使用默认用户名设置了临时组织,请仅输入软件包版本同上。
sfpackageinstall--package"ExpenseManager@1.2.0-12"注意
CLI显示有关安装的状态消息。
publish-waitwaitpublish-waitpublish-wait
publish-waitwaitwaitwaitsfpackageinstallreportsfpackageinstallreport
sfpackageinstall--package"ExpenseManager@1.2.0-12"--publish-wait6--wait10从URL安装未锁定的软件包从CLI或浏览器安装未锁定的软件包,类似于安装方式托管包。
如果从CLI创建软件包,则可以派生通过将订阅者包ID添加到开发人员中心URL来包。您可以使用此URL进行测试不同的部署或安装方案。
是否要对现有包进行元数据更改?您可以使用CLI执行以下操作将一个软件包版本升级到另一个软件包版本。
执行包升级时,以下是元数据更改的预期内容。
使用此示例脚本作为创建自己的脚本的基础,以使用依赖。此脚本包含一个查询,用于查找依赖包并安装它们以正确的依赖顺序。
请务必将软件包版本ID和临时组织用户名替换为您自己的用户名具体细节。
创建更多解锁包时,可以重构包并将元数据从如有必要,一个已解锁的包到另一个已解锁的包。
若要将生产元数据从包A移动到包B,请按照下列步骤操作。
元数据现在是生产组织中包B的一部分。
sfpackageuninstall--package"ExpenseManager@2.3.0-5"您还可以从Web浏览器卸载软件包。打开您已安装软件包。
sforgopen-ume@my.org然后卸载软件包。
可以将已解锁包的所有权从一个开发人员中心组织转移到另一个。
此包转移功能仅适用于已解锁的包和第二代包托管包。开发人员中心组织不与第一代托管包或非托管包一起使用包,因此此功能不适用于这些包类型。
首先向Salesforce客户支持记录案例,并提供以下内容详:
主题:解锁的包传输到其他开发人员中心
描述:
在说明中,列出:
如果您要转移多个包裹,请为每个包裹单独提交案例。
出于安全原因,包在位于政府云中的开发人员中心和不允许使用位于政府云外部的DevHub。
以下是您如何帮助确保包裹顺利转移的方法。
在包之前,必须完成所有推送升级或包版本创建过程传输过程已启动。Salesforce客户支持将提醒您将进行包裹转移。
在开发人员中心创建新包或包版本之前,请更新sfdx-project.json文件并删除对传输的所有引用package从“package目录”和“packagealias”部分。
如果开发人员中心中有依赖于要传输的包的包,IfyouhavepackagesinyourDevHubwhichdependsonthepackagethatyou-inter-transfer,将sfdx-project.json文件中的PackageDependency部分更新为显式指定您所依赖的传输包的04tID。
例如,如果将pkgA传输到其他开发人员中心,并且sfdx-project.json文件列出了如下所示的包依赖项。
无论包传输是在你拥有的两个DevHub组织之间进行的,还是包已从外部传输到你不拥有的开发人员中心,我们将传输包版本历史。
我们转让:
我们不转让:
您可以获得从另一个DevHug转移的解锁包的所有权组织。
若要从开发人员中心组织启动包传输,请参阅将解锁的包传输到其他开发人员中心。
将收到的包的命名空间链接到开发人员中心组织。请参阅将命名空间链接到DevHub组织SalesforceDX开发人员指南。如果包未与命名空间,请跳过此步骤。
包裹转移完成后,Salesforce客户支持将通知您。
若要验证传输的包是否与开发人员中心关联,请运行。sfpackagelist
打开并查看关联的sfdx-project.json文件的内容与转移的包。
打开并查看与转移的包裹。定义文件有助于在开发过程中设置临时组织。使用参数指定定义文件。–definition-file
如果包目录部分列出了未传输给您的其他包,从sfdx-project.json文件中删除这些引用。
接下来,查看sfdx-project.json文件的包别名部分,然后删除对与包无关的包别名的任何引用转移。
更新传输的包的包别名,以指定其0Ho包ID。
与创建新包版本的方式类似,必须更新sfdx-project.json文件并更新版本号。
Salesforce提供不同类型的软件包,解锁的软件包尤其如此适用于内部业务应用程序。除非您计划在AppExchange上分发应用程序,否则解锁包是大多数用例的正确包类型。您可以使用解锁的软件包来整理现有元数据、打包应用、扩展已购买的应用AppExchange或打包新元数据。
如果您是AppExchange合作伙伴,并计划通过以下方式将您的应用程序分发给客户AppExchange,使用第二代托管打包。有关详细信息,请参阅第二代托管软件包信息。
每个解锁的包都有不同的生命周期。将元数据添加到包中,然后创建一个新的包版本。虽然包在不断发展,但每个包版本都是一个不可变的工件。
包版本包含与包关联的特定元数据和功能版本,在创建时。在循环访问包以及添加、删除或更改包时打包的元数据,您可以创建多个包版本。
您可以在临时版、沙盒版、试用版、开发人员版或生产组织。安装包版本与部署元数据类似。每个包装version有一个版本号,订阅者可以将新的软件包版本安装到他们的组织中通过软件包升级。
由于包版本是不可变的,因此它们也可以用作连续的工件集成(CI)和持续交付(CD)流程。
为了演示解锁包的强大功能,以下是打包在传统发展模式。对于大多数生产组织来说,元数据传统上包含在两个存储桶:一组从AppExchange安装的托管软件包,以及未打包的元数据。
客户经常投资Salesforce自定义以支持业务流程和扩展Salesforce平台的强大功能。在开发模型中,您的Salesforce组织的单体未打包的元数据包含属于自定义应用或扩展程序的所有元数据。因为元数据不是孤立的或有组织的,可能难以理解、升级和保持。
在包开发模型中,可以在生产中组织未打包的元数据组织到定义良好的包中。您可以使用SalesforceDX项目来组织您的源放入包目录中,所有内容都在您选择的版本控制系统中进行管理。你最终目标是使用那些可版本控制、易于维护的目录创建包。更新、安装和升级。
解锁的包允许您在一个或多个托管和解锁的包,使您的包保持小巧和模块化。您可以使用命令行执行以下操作执行未锁定的打包操作,或者您可以包含特定于打包的SalesforceCLI脚本中的命令,并自动执行包开发。
使用解锁的包装时,为确保设置正确,请验证以后。
你?
使用解锁包的开发人员需要在开发人员中心设置正确的权限组织。开发人员需要系统管理员配置文件或创建和更新第二代包权限。有关更多信息,请参阅添加SalesforceDX用户。
可以从开发人员中心创建的最大解锁包版本数Day与您的每日Scratch组织分配相同。要请求提高限制,请联系Salesforce客户支持。临时组织和包是分开计算的,因此创建解锁的包不计算在内违反您的每日临时组织限制。要查看临时组织限制,请使用CLI:
sflimitsapidisplay欲了解更多信息临时组织限制,请参阅临时组织。
您使用解锁包装的某些组织具有独特的目的。
将DevHub组织用于这些目的。
当您使用SalesforceCLI创建未锁定的软件包时,您将关联该软件包具有特定的DevHub组织。当您准备好定义和创建包时生产使用,请务必在生产组织。
如果使用的是命名空间,则需要命名空间组织来获取包命名空间。如果要严格使用命名空间进行测试,请选择Disposable命名空间。
创建命名空间组织并在其中指定命名空间后,打开DevHub组织,并将命名空间组织链接到DevHub组织。
使用包时,还可以使用以下组织:
依赖于组织的解锁包是解锁包的变体,允许您在计划安装软件包(安装组织)。
长期和大型生产组织通常会积累大量元数据,这些元数据是采用基于包的应用程序生命周期管理(ALM)时难以模块化方法。相反,您可以将依赖于未打包元数据的元数据打包到安装组织。
依赖于组织的解锁包是解锁包的变体,而不是单独的封装类型。它们遵循相同的软件包开发步骤,并使用支持的元数据类型与解锁相同包。要创建依赖于组织的解锁软件包,请指定依赖于组织的CLI参数命令。
您可以直接从Salesforce命令创建和安装未锁定的软件包线。
在开始之前,请查看并完成创建解锁包之前中的步骤此工作流。
基本工作流包括以下步骤。有关每个主题的详细信息,请参阅特定主题步。
程序包版本是beta版,直到将其提升为托管发布状态。请参阅:释放已解锁的软件包。
在sfdx-project.json文件中为每个package来指定其别名、版本详细信息、依赖项、功能和组织设置。在命令行中,您还可以设置或更改选项,例如指定安装密钥、更新软件包名称或添加说明。
项目配置文件是项目的蓝图。中的设置文件创建包的大纲并确定包属性和包内容。
以下是可以在项目配置文件中指定的参数。
当您使用SalesforceCLI指定参数时,它会覆盖该值在项目定义文件中列出。
SalesforceDX项目定义文件是位于您的项目。使用CLI命令可以生成可基于此进行构建的项目文件。以下是参数的显示方式。sfprojectgeneratepackageDirectories
关键字是可用于指定包版本的变量数。
您可以使用关键字自动递增软件包内部版本号的值,祖先版本号,将包依赖项设置为最新版本或最新发布和推广版本。
sfpackageversioncreate--package"ExpenseManager"--installation-key"JSB7s8vXU93fI"在目标组织中安装软件包版本时提供安装密钥。
sfpackageinstall--package"ExpenseManager"--installation-key"JSB7s8vXU93fI”更改现有软件包版本的安装密钥您可以使用以下命令更改现有软件包版本的安装密钥。sfpackageversionupdate
sfdpackageversionupdate--package"ExpenseManager@1.2.0-4"--installation-key“HIF83kS8kS7C”创建不带安装密钥的包版本如果不需要安全措施来保护包元数据,则可以创建一个没有安装密钥的软件包版本。
sfpackageversioncreate--package"ExpenseManager"--directorycommon\--tag'Release1.0.0'--installation-key-bypass检查包版本是否需要安装密钥要确定软件包版本是否需要安装密钥,请使用或CLI命令。sfpackageversionlistsfpackageversionreport
对于已安装的未锁定包,您现在可以运行简单的SOQL查询来提取其依赖项信息。您还可以创建一个脚本来自动安装具有依赖项的解锁包。
SubscriberPackageVersion工具API对象现在提供依赖项信息。使用SubscriberPackageVersion上的SOQL查询,可以标识解锁的包有一个依赖项。您可以获取(04t)ID和正确的这些软件包的安装顺序。
包B依赖于包A,包D依赖于包B和C。下面是你指定的示例sfdx-project.json创建包版本时。包D依赖项标记为包A、B和C.
sfdataquery-u{USERNAME}-t-q"SELECTDependenciesFROMSubscriberPackageVersionWHEREId='04txx000000082hAAA'"--json运行时会看到此输出查询,其中pkgA、pkgB和pkgC的(04t)ID次序。
指定包命名空间时,添加到包中的每个组件都具有该命名空间作为组件API名称的前缀。假设您有一个名为Insurance_Agent的自定义对象替换为API名称。如果添加此组件添加到与Acme命名空间关联的包中,则API名称将变为.Insurance_Agent__cAcme__Insurance_Agent__c
您可以选择创建具有或不具有特定命名空间的解锁包。命名空间在创建包时分配给包,并且无法更改。
创建命名空间时,请使用有用且信息丰富的内容用户。但是,不要以人的名字命名命名空间(例如,通过使用人名,昵称或私人信息)。
使用命名空间时,请牢记以下注意事项。
使用解锁的包,您可以与多个包共享单个命名空间。因为如果包共享相同的命名空间,则代码共享会容易得多,我们建议在使用Namepaces,您可以对命名空间的未锁定包使用单个命名空间。要创建命名空间,请执行以下操作:
要注册命名空间,请执行以下操作:
命名空间会影响可以在组织。
若要了解命名空间如何影响包的类型,可以在命名空间或no-namespaceorg,请查看此表。
了解命名空间如何影响可安装到一个包中的组合org,请查看此表。
@namespaceAccessible
跨软件包的Apex可访问性的注意事项
此示例显示一个标有批注的Apex类。该类是可访问的添加到同一命名空间中的其他包。第一个构造函数在命名空间,但第二个构造函数不是。
//Anamespace-visibleApexclass@namespaceAccessiblepublicclassMyClass{privateBooleanbypassFLS;//Anamespace-visibleconstructorthatonlyallowssecureuse@namespaceAccessiblepublicMyClass(){bypassFLS=false;}//Apackageprivateconstructorthatallowsuseintrustedcontexts,//butonlyinternaltothepackagepublicMyClass(BooleanbypassFLS){this.bypassFLS=bypassFLS;}@namespaceAccessibleprotectedBooleangetBypassFLS(){returnbypassFLS;}}共享发行说明和安装后说明与您的共享有关已发布的解锁包中的新增功能和更改的详细信息用户。
与用户共享有关已解锁包中的新增功能和更改的详细信息。您可以指定要在用户组织的软件包详细信息页面上显示的发行说明URL。还有你可以通过指定安装后URL来共享有关使用包的说明。发布注释和安装后URL显示在安装程序的“已安装的软件包”页上,之后软件包安装成功。对于使用安装URL安装软件包的用户,“包安装程序”页显示指向发行说明的链接。用户被重定向到您的帖子在成功安装或升级软件包后安装URL。在和部分中指定和属性包。
postInstallUrlreleaseNotesUrlpackageDirectories
指定sfdx-project.json文件中未打包元数据的路径。
在此示例中,my-unpackaged-directory中的元数据可用于测试在TV_unl包的包版本创建期间运行。
有时,您编写的Apex测试要求用户具有某些权限集或权限集许可证。使用该设置可以将权限集和权限集许可证分配给Apex在其上下文中测试的用户Get在创建包版本时运行。apexTestAccess
若要分配用户许可证,请使用runAs方法。用户无法在sfdx-project.json文件中分配许可证。
我们建议您在使用解锁的软件包时遵循这些最佳实践。
在包生命周期中,包和包版本由ID或软件包别名。当您创建包或包版本时,SalesforceCLI会创建一个包别名,并将该名称存储在sfdx-project.json文件中。当您运行CLI命令或编写脚本时自动化打包工作流,通常更容易引用包别名,而不是程序包ID或程序包版本ID。
包别名以名称-值的形式存储在sfdx-project.json文件中对,其中名称是别名,值是ID。您可以修改软件包别名对于项目文件中的现有包和包版本。
在命令行中,您还可以看到包成员(一个组件package)和请求(类似于请求)。sfpackageversioncreate
作为快捷方式,文档有时会通过其三个字符的前缀来引用ID。例如,软件包版本ID始终以开头。04t
以下是最常用的ID。
有关SalesforceCLI打包命令的完整列表,请参阅:Salesforce命令线路参考指南。
在软件包安装期间,保留的配置文件设置仅应用于现有订阅者组织中的配置文件。配置文件本身未安装在订阅者组织中。
不允许仅包含配置文件而不包含其他元数据的包,并且会失败在包版本创建期间。
要测试打包配置文件的行为,请在临时组织中安装包。
尽可能使用包权限集,而不是配置文件设置。订阅者安装包可以轻松地将权限集分配给其用户。
默认情况下,配置文件中的许可证设置在包创建过程中会被删除。要保留这些settings,指定参数在sfdx-project.json文件中。在此方案中,许可证设置为保留并应用于订阅者组织中在打包期间选择的配置文件安装。includeProfileUserLicenses
要了解不同开发模型的优势,请查看这些Trailhead模块:
根据你的采用准备情况,请查看下表,了解建议的选项:
客户和非ISV合作伙伴
ISV合作伙伴
在沙盒中开发和测试应用。使用SalesforceCLI或Salesforce扩展让VSCode检索和部署源。此开发工作流称为组织发展模式。
要将Apex部署到生产环境,Apex代码的单元测试必须满足覆盖率要求。代码覆盖率指示类和触发器中有多少行可执行代码由您的测试方法涵盖。编写测试方法来测试触发器和类,然后运行这些测试来生成代码覆盖率信息。如果在启动部署时未指定测试级别,则默认测试执行行为取决于部署包的内容。
您可以为非Apex组件的部署运行测试。您可以覆盖默认测试通过在部署选项中设置测试级别来执行行为。测试级别为无论部署包中存在的组件类型如何,都会强制执行。我们建议在开发环境(如沙盒)中运行所有本地测试之前部署到生产环境。在开发环境中运行测试可减少生产部署中所需的测试。
对源代码格式进行更改,部署到开发人员并从开发人员处检索沙盒。
这些步骤提供了高级工作流。
下一个:部署团队对DeveloperPro沙盒所做的所有更改,然后进行测试这些变化。
在您的团队完成其开发任务后,过渡到内部版本阶段,将您的更改集成到DeveloperPro沙盒中。然后生成版本人工制品。
下面是工作流中用于创建发布项目的高级步骤。
测试通过后,进入发布阶段,在完整版中执行回归测试沙盒。
暂存更改并在完整模式下运行回归测试沙盒。
根据集成测试进行所有更改后,下一步是在完整沙盒中暂存更改。将更改部署到完整沙盒类似于用于将更改部署到开发人员的过程专业沙盒。此阶段包括回归测试,并模拟您发布对生产的更改。
现在,所有测试都已通过完整沙盒,可以部署到生产。
您可以从SalesforceCLI取消元数据部署,并指定命令完成。
sfprojectdeploycancel--wait20--use-most-recent对已取消部署的状态感到好奇?运行部署报告。
要从CLI添加源文件,请确保您在适当的目录。例如,如果您的软件包目录名为force-app,请在force-app/main/default/classes中创建Apex类。您可以根据需要组织源在每个包目录下,文档、自定义对象和自定义对象除外翻译。
从API版本45.0开始,您可以使用两种编程模型构建Lightning组件:LightningWeb组件和Aura组件。要组织组件的源文件,您的Aura组件必须位于aura目录中。您的闪电网络组件必须位于LWC目录中。
执行以下命令之一。
许多命令都具有以下两个有用的可选标志:
提示
使用您喜欢的代码编辑器编辑Apex类、Visualforce页面和组件、LightningWeb组件和Aura组件。您可以还可以在组织的设置UI中进行编辑,然后用于检索对项目的这些更改。为组织中已有的Lightning页面(FlexiPage文件),请使用快捷方式从默认浏览器在临时组织中打开LightningAppBuilder。闪电页面存储在flexipages目录中。projectretrievestart
sforgopen--source-fileProperty_Record_Page.flexipage-meta.xml--url-only针对任何组织进行开发针对启用了源跟踪的临时或沙盒组织进行开发后,您最终在非源跟踪组织中测试和验证您的更改。
您可以使用SalesforceCLI检索元数据并将其部署到非源跟踪组织,与检索和部署源(在源中)一样容易format)到从头开始组织。如果您不熟悉SalesforceCLI、SalesforceDX项目结构和源文件格式解释了源格式和元数据之间的区别格式。
使用,您可以检索您需要的元数据以源格式发送到本地文件系统(DX项目)。当您的更改已准备好进行测试或生产,您可以使用本地文件直接部署到非源代码跟踪的组织。projectretrievestartprojectdeploystart
不确定支持哪些元数据类型或哪些元数据类型支持通配符?请参阅元数据APIDeveloper中的元数据类型指南。package.xml
在开始之前,请不要忘记:
使用命令检索来自没有源跟踪的组织(例如沙盒或生产组织)的源。如果您在VCS中已有源代码和元数据,则可以跳过此操作步。如果要重新开始,请检索与该功能关联的元数据。项目或您正在处理的自定义项。projectretrievestart
您可以使用以下方法之一检索源格式的元数据:
如果您提供的逗号分隔列表包含空格,请将整个一组双引号中的逗号分隔列表。
sfprojectretrievestart--package-nameDreamHouse--manifestmanifest/package.xml将源部署到非源跟踪组织使用命令部署源到没有源跟踪的组织,例如沙盒或生产组织。projectdeploystart
您可以使用以下方法以源格式部署元数据:
使用命令删除来自没有源跟踪的组织(例如沙盒)的组件。projectdeletesource
如果源本地存在于DX项目中,您可以通过指定源的路径或列出单个元数据组件的路径。如果以逗号分隔的列表您提供的包含空格,将整个逗号分隔的列表包含在一组双引号。
通常,当您运行某些CLI命令时,包含所有元数据的临时目录是创建,然后在成功完成命令后删除。但是,保留这些由于多种原因,文件可能很有用。您可以调试命令期间出现的问题执行。运行时可以使用生成的包.xml后续命令,或作为创建包含所有您关心的元数据。
要在运行这些命令时将所有元数据保留在指定的目录路径中,请将SF_MDAPI_TEMP_DIR环境变量:
SF_MDAPI_TEMP_DIR=/users/myName/myDXProject/metadata分配权限集在创建临时组织并部署源代码后,有时必须将用户访问您的应用程序,尤其是在您的应用程序包含自定义对象时。
您还可以使用该命令将权限集许可证分配给用户。它的工作方式与命令类似。
orgassignpermsetlicenseorgassignpermset
开发组织需要一小组库存数据进行测试。
有时,临时组织中的库存数据无法满足您的开发需求。Apex测试通常会创建自己的数据。因此,如果Apex测试是只测试您在临时组织运行的测试,您可能不需要担心关于数据暂时。但是,其他测试(如UI、API或用户验收测试,确实需要基线数据。确保您使用运行每种类型的测试时一致的数据集。
以下各节介绍了可用于填充您的组织。您使用的命令取决于您当前阶段的发展。
您还可以使用CLI命令对组织运行SOQL查询。虽然该命令不会更改组织中的数据,它对于搜索或计算数据很有用。您还可以将其与其他数据操作命令一起使用。请参阅SOQL和SOSL参考指南,了解使用这些命令时也适用的一般SOQL限制。dataquery
Scratch组织附带的数据集与他们是基于的。例如,DeveloperEdition组织通常包括10-15条关键标准对象的记录,例如Account、联系和领导。当您进行测试时,这些记录会派上用场类似于新触发器、工作流规则、闪电网络之类的东西组件、Aura组件或Visualforce页面。
SObjectTreeSaveAPI驱动用于导出和导入数据。这些命令使用JSON文件来描述对象和关系。该命令需要SOQL查询来选择组织中的数据写入JSON文件。而不是加载每个记录的所有记录键入并建立关系,该命令将加载父项和子项已经在层次结构中。dataexport|importtreedataexportdataimport
这些命令旨在供开发人员使用小型数据。导出查询最多可以返回2000条记录。要导入的文件最多可以有200条记录。
每个人的流程都是独一无二的,您并不总是需要与你的队友。当您想要创建、修改或删除时使用命令快速记录单个记录。无数据文件是需要的。datacreate|delete|getrecord
假设您已经创建了一组完美的数据来测试您的应用程序,并且它当前驻留在临时组织中。您在第二个临时组织中完成了对新功能的编码,推送源代码,并分配所需的权限集。现在,您要填充使用来自其他组织的完美数据集来临时组织。如何?请继续阅读!
虽然这个例子有点做作,但它对于获得一些实践经验很有用替换为data命令。该示例引用了Broker和Properties自定义对象GitHub上的SalesforceDreamHouseLWC应用程序示例。比方说要从中导出数据的临时组织具有别名。同样,您想要进入的临时组织要导入的数据具有别名。对于临时组织,假设您有已经:org-with-dataorg-needs-dataorg-with-data
然而,对于临时组织来说,它是假定您已经创建了Broker和Properties对象并分配了权限设置但尚未用数据填充对象。org-needs-data
有关这些先决条件任务的说明,请参阅GitHub存储库中的自述文件。dreamhouse-lwc
您可以使用SalesforceCLI在本地创建Lightning应用程序和Aura组件SalesforceDX项目。生成的文件位于项目的包目录中。
aura
使用命令部署新的Lightning应用程序和Aura组件添加到您的组织。projectdeploystart
sfprojectdeploystart--metadataAuraDefinitionBundle:myApp--metadataAuraDefinitionBundle:myAuraComponent创建Apex类您可以使用SalesforceCLI在本地SalesforceDX项目中创建Apex类。生成的类文件位于package目录。
classes
该命令生成两个文件:
本示例选择模板。ApexException
sfapexgenerateclass--namemyException--templateApexException--output-dirforce-app/main/default/classes使用命令部署新的Apex类添加到您的组织。projectdeploystart
sfprojectdeploystart--metadataApexClass:myClass创建Apex触发器使用Apex触发器在更改Salesforce之前或之后执行自定义操作记录,例如插入、更新或删除。您可以使用SalesforceCLI创建Apex本地SalesforceDX项目中的触发器。生成的文件位于项目。
triggers
该命令生成两个文件。
使用命令部署新的组织的顶点触发器。projectdeploystart
sfprojectdeploystart--metadataApexTrigger:myTrigger--target-orgmyscratch创建自定义对象您可以使用SalesforceCLI为本地SalesforceDX项目中的新自定义对象生成元数据文件。
创建自定义对象后:
然后,将新的自定义对象部署到您的组织。
sfprojectdeploystart--metadataCustomObject:NewObject__c--target-orgmyscratch这首次将新的自定义对象部署到源跟踪组织时,组织创建其他属性并设置新的默认值。出于这个原因,我们建议立即检索自定义对象,以便检索本地源文件已更新为新信息。
您可以使用SalesforceCLI命令在组织中执行匿名的Apex代码块。
14:23:06.175(175529797)|CUMULATIVE_LIMIT_USAGE_END
14:23:06.174(175598235)|CODE_UNIT_FINISHED|execute_anonymous_apex14:23:06.174(175617689)|EXECUTION_FINISHED
sfapexrun--file~/test.apex运行Apex测试当您准备好测试对源代码的更改时,您可以在组织中运行Apex测试在命令行上使用SalesforceCLI。您还可以从SalesforceExtensions运行Apex测试适用于VSCode或第三方持续集成工具,例如Jenkins或CircleCI中。
运行Apex测试的用户必须在组织中具有以下用户权限:
此外,请确保在组织的用户界面中启用了“启用流式处理API”设置。默认情况下,该设置处于启用状态。
有关详细信息,请参阅用户权限和配置用户界面设置。
此命令异步运行指定组织中的所有Apex测试,这是默认设置行为。
sfapexruntest--target-orgmyscratch该命令不会显示实际测试结果,而是输出带有作业ID的命令,然后运行该ID进行查看完整的结果。例如:apexgettest
sfapexruntest--test-levelRunLocalTests使用标志列出要运行的测试类或套件、指定输出格式、查看代码覆盖结果等。例如,以下命令运行TestA和TestB测试类,以TestAnythingProtocol(TAP)格式提供结果,并请求代码覆盖率结果。测试在默认组织中运行。
sfapexruntest--testsTestA.excitingMethod--testsTestA.boringMethod--testsTestB下面是相同的示例,但具有命名空间。
如果您使用SalesforceExtensionsforVisualStudioCode(VSCode)进行开发任务,您可以选择ApexDebugger扩展。无论选择哪个调试器,都可以设置Apex类中的断点,并逐步执行它们以实际检查代码是时候找到错误了。可以在VSCode中或在命令行上运行Apex测试。
ApexReplayDebugger无需任何额外许可证即可使用。配置和使用它,请参阅ApexReplayDebugger。
您的DevHub组织中必须至少有一个可用的ApexDebugger会话。购买组织的更多会话,请联系您的系统管理员以打开案例。
通过将功能添加到临时组织定义文件,在临时组织中启用Apex调试器:DebugApex
"features":"DebugApex"要配置和使用它,请参阅Apex交互式调试器。
ISVCustomerDebugger是ApexInteractiveDebugger()扩展的一部分,因此您不必安装除Salesforce扩展包及其先决条件之外的任何内容。您只能调试沙盒组织。salesforcedx-vscode-apex-debugger
请参阅SalesforceExtensions中的ISV客户调试器VSCode了解详细信息。
Apex调试日志可以记录数据库操作、系统进程和发生的错误在任何经过身份验证的组织中执行事务或运行单元测试时。启用调试日志,然后使用VSCode或Salesforce查看日志命令行界面。
38.0APEX_CODE,FINEST;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;WAVE,INFO;WORKFLOW,INFO15:58:57.3(3717091)|USER_INFO|[EXTERNAL]|0059A000000TwPM|test-ktjauhgzinnp@example.com|PacificStandardTime|GMT-07:0015:58:57.3(3888677)|EXECUTION_STARTED15: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流程。借助SalesforceCLI,您可以同时做到这两点。
您使用的开发模型决定了您在哪些阶段使用沙盒。查看更多有关我们的开发模型以及沙盒适合的位置的信息,请参阅确定适合的应用程序生命周期模型你(Trailhead)。
JWT和基于Web的流程需要具有沙盒许可证的生产组织,而不是开发人员枢纽。但是,如果你的生产组织也是开发人员中心组织,则没关系。
在使用SalesforceCLI创建沙盒之前,请在沙盒定义文件。沙盒定义文件是沙盒的蓝图。您可以为开发中使用的每种沙盒类型创建不同的定义文件过程。
您可以在定义文件中指定其中之一,但不能同时指定两者。licenseTypesourceSandboxName
尽管您可以将沙盒定义文件放在任何位置,但我们建议将其保留在配置目录中的SalesforceDX项目。命名文件中,我们建议提供以sandbox-def.json结尾的描述性名称,例如developer-sandbox-def.json。
下面是用于创建沙盒的示例定义文件:
{"sandboxName":"dev1","licenseType":"Developer"}下面是用于克隆沙盒的示例定义文件:
{"sandboxName":"dev1clone","sourceSandboxName":"dev1"}创建、克隆或删除沙盒创建用于开发、测试或训练的沙盒。克隆要复制的沙盒其数据和元数据复制到另一个沙盒。
在创建或克隆沙盒之前:
创建或克隆沙盒时,沙盒中生成的用户名基于生产组织中存在的用户名,或者沙盒。用户名看起来像电子邮件地址,例如.如果生成的用户名不是唯一的,我们会在前面添加一些字符和数字添加到用户名中。修改后的用户名类似于。username@company.com.dev100x7Vqusername@company.com.dev1
可以想象,记住这些用户名可能具有挑战性,尤其是当您有多个沙盒时管理。别名是管理和跟踪组织的有效方法,我们认为它是最好的实践。因此,当您发出需要用户名的命令时,使用您可以记住可以加快速度。如果您在创建沙盒时未设置别名,则可以设置一个后。
sfaliassetMyDevSandboxusername@company.com.dev1创建沙盒可选:创建沙箱定义文件
sforgcreatesandbox--target-orgprodOrg--definition-fileconfig/dev-sandbox-def.json--aliasMyDevSandbox--set-default--wait30这命令要求您确认沙箱配置,然后将信息显示为沙箱正在创建中。
直接定义所需的沙盒选项,或覆盖沙盒定义中定义的值文件,则在命令上指定适当的标志线。
sforgcreatesandbox--nameFullSbx--license-type=Full--target-orgprodOrg--aliasMyFullSandbox--wait30提示
沙盒克隆简化了应用程序生命周期。您可以为每种类型的工作设置沙盒,例如开发、测试和暂存。您的同事可以轻松克隆单个沙盒,而不是共享一个沙盒,踩着对方的脚趾。
sforgcreatesandbox--cloneExistingSandbox--nameNewClonedSandbox--target-orgprodOrg--aliasMyDevSandbox--set-default--wait30提示
sforgresumesandbox--job-id0GR1888880000HORuWAO--target-orgprodOrg如果命令超时,则未设置别名。但是,您可以使用以下命令进行设置:orgcreatesandboxaliasset
sfaliassetMyDevSandboxusername@company.com.dev1打开沙盒沙盒准备就绪后,您可以通过指定其用户名或别名来打开它。但是,您不必提供其密码,因为CLI会管理你。
sforgdeletesandbox--target-orgMyDevSandbox下一个:跟踪项目和组织之间的更改使用源跟踪来跟踪本地项目与临时组织之间的更改,或者创建、更新或删除源代码时的沙盒。
源跟踪对组织没有直接影响;它仅影响您的本地环境。具体而言,SalesforceCLI会检查本地配置文件以确定您是否具有为特定组织启用源跟踪。如果有,则源跟踪操作是在处理组织时执行,例如使用命令。projectdeploystart
不带标志的命令在本地项目和目标组织之间部署或检索所有更改的源。查看更多精细控制,使用标志指定特定的元数据组件、包目录或要部署或检索的清单文件。此示例检索Apex类:projectdeploy|retrievestartMyFabClass
sfprojectretrievestart--metadataApexClass:MyFabClass除了列出您所做的更改外,源跟踪还可以:
要查看哪些元数据组件支持源跟踪,请查看元数据覆盖率报告。
源跟踪仅在目标组织允许的情况下才起作用。别担心,你仍然可以在不进行源跟踪的情况下将元数据部署到组织或从组织检索元数据。但是命令不要检查冲突,并且必须准确指定要部署或检索的内容使用适当的标志,例如或.
ScratchOrgs有源代码默认情况下启用跟踪。对于Developer和DeveloperPro沙盒,源默认情况下,只要其关联的生产组织具有已启用源跟踪。
以下是创建具有源代码跟踪功能的Scratch组织禁用。
sforgcreatescratch--target-dev-hub=MyHub--definition-fileconfig/project-scratch-def.json--no-track-source这是沙盒例。
sforgcreatesandbox--definition-fileconfig/dev-sandbox-def.json--target-orgprodOrg--no-track-source管理现有组织中的源跟踪您可以使用以下方式更改现有临时组织或沙盒是否允许源跟踪这两个命令:
此示例说明如何在具有别名的组织中启用源跟踪;如果组织不支持跟踪,例如完整沙盒。mySandbox
sforgenabletracking--target-orgmySandbox假设您有一个用于集成测试的沙盒,并且您希望将源部署到它,但不要等待跟踪操作。此示例演示如何在具有别名的组织上禁用源跟踪:mySandbox
sforgdisabletracking--target-orgmySandbox预览源跟踪标识的更改要查看本地项目与目标组织之间的更改,请导航到项目要查看其更改的目录。然后运行其中一个预览命令,该命令显示项目中可以部署到组织的本地更改,也可以是组织更改可以检索。
此示例输出显示对Apex类进行了局部更改,并且WidgetObject__c可以部署到组织的自定义对象。projectdeploypreviewWidgetClass
如果源跟踪未检测到任何更改,则预览命令将返回一条语句谚语。Noresultsfound
===SourceStatusNoresultsfound在本地项目和组织中预览源中的更改后,即可部署或检索并解决潜在冲突。
创建Salesforce应用程序时,通常同时使用低代码和专业代码技术。低代码的一个示例是使用Setup直接在组织中创建自定义对象。pro-code的一个示例是使用IDE(如VS)在本地项目中创建Apex类法典。在您工作时,源跟踪会识别更改,以便您可以将远程元数据保留在组织与本地项目中的源同步。
该过程是迭代的。首先,预览远程和本地更改。如果存在冲突,你解决它们。现在,您必须确保这些更改同时存在于组织和本地项目。因此,您可以检索到本地项目的远程更改,然后将它们推送到源代码管理存储库,以确保源代码管理系统包含所有更改并且是历史真相的源泉。将本地更改(如Apex代码)部署到组织,以便您可以验证和测试它。你不断迭代这个过程,直到你完成Salesforce应用程序的开发。
要了解源跟踪的实际效果,让我们看一些示例。
假设您运行并看到远程变化。projectretrievepreview
sfprojectdeploystart--target-orgDevSandboxDeployingv59.0metadatatotest-ikspctiorkzs@example.comusingthev59.0SOAPAPI.DeployID:0Af8D00000pNmKySAKStatus:Succeeded|████████████████████████████████████████|2/2Components(Errors:0)|0/0Tests(Errors:0)DeployedSource=====================================================================================================================|StateNameTypePath|────────────────────────────────────────────────────────────────────────────────────────────────────────────────|CreatedWidgetClassApexClassforce-app/main/default/classes/WidgetClass.cls|CreatedWidgetClassApexClassforce-app/main/default/classes/WidgetClass.cls-meta.xml|CreatedWidgetObject__cCustomObjectforce-app/main/default/objects/WidgetObject__c/WidgetObject__c.object-meta.xml再次运行。projectdeploypreview
sfprojectdeploypreviewNoconflictsfound.Nofileswillbedeleted.Nofileswillbedeployed.Nofileswereignored.Updateyour.forceignorefileifyouwanttoignorecertainfiles.该命令报告没有要部署的内容,指示您的本地项目和组织是同步的。
检索配置文件的行为与源跟踪略有不同。
通常,我们建议您使用权限集而不是配置文件。配置文件在组织之间不一致,检索到的源文件和部署取决于组织类型、跟踪状态和操作中的其他元数据。如果您决定继续使用配置文件,我们建议您在部署或通过将它们添加到文件中进行检索。.forceignore
例如,使用此文件检索配置文件将返回帐户上MyCustomField__c自定义字段的配置文件权限对象。package.xml
例如,假设您在Opportunity对象上创建了一个名为OppCustomField__c的自定义字段在本地环境中。源跟踪检测到更改并报告它。现在您检索配置文件使用与以下情况相同的文件源跟踪已关闭。package.xml
有关检索配置文件的详细信息,请参阅元数据API中的配置文件元数据类型开发人员指南。
尽管源检索不包括文件,但检索请求会返回与源跟踪。package.xml
最佳做法是,如果本地项目或组织,在继续前进之前解决它们。您可以手动解决冲突,也可以覆盖冲突一个组件的版本与另一个组件。仅当您确定新的version是您要使用的版本。
假设你跑步并看到冲突本地项目与组织中的更改。例如,此命令输出显示具有冲突的更改,但已准备好部署。projectdeploypreviewWidgetClassGizmoClass
sfprojectdeploystart--metadataApexClass:WidgetClass--ignore-conflicts--target-orgDevSandboxDevSandbox组织现在具有与本地项目中相同的版本。再次运行时,看不到任何冲突的更改消息。WidgetClassprojectdeploypreview
但是,如果您确定组织中的版本是正确的,则通过以下方式覆盖本地副本检索DevSandbox组织版本,同时忽略冲突。WidgetClass
sfprojectretrievestart--metadataApexClass:WidgetClass--ignore-conflicts--target-orgDevSandbox您的本地项目现在具有与组织中相同的版本。WidgetClass
干得好,你解决了冲突!现在,无需任何特殊标志即可运行,以完成部署和任何其他新的本地源。projectdeploystartGizmoClass
sfprojectdeploystart--target-orgDevSandboxDeployingv59.0metadatatotest-ikspctiorkzs@example.comusingthev59.0SOAPAPI.DeployID:0Af8D00000pNtEUSA0Status:Succeeded|████████████████████████████████████████|1/1Components(Errors:0)|0/0Tests(Errors:0)DeployedSource=====================================================================================|StateNameTypePath|────────────────────────────────────────────────────────────────────────────────|CreatedGizmoClassApexClassforce-app/main/default/classes/GizmoClass.cls|CreatedGizmoClassApexClassforce-app/main/default/classes/GizmoClass.cls-meta.xml通过查询SourceMember对象获取更改信息若要详细了解开发人员组织中的源跟踪更改,请查询SourceMember工具API对象,用于找出进行了哪些更改以及谁进行了更改。SalesforceCLI使用SourceMember对象,以查看组织中作为其源跟踪的一部分所做的更改功能性。
例如,通过运行类似这。在此示例中,DevSandbox是沙盒的用户名或别名。
sfdataquery--query"SELECTMemberName,MemberType,ChangedBy,RevisionCounterFROMSourceMember"--use-tooling-api--target-orgDevSandbox该查询返回元数据组件的列表。CHANGEDBY列返回上次更改组件的人员。REVISIONCOUNTER列返回组件的修订号。Salesforce使用修订计数器来确定哪些实体在组织。
MEMBERNAMEMEMBERTYPECHANGEDBYREVISIONCOUNTER─────────────────────────────────────────────────────────────────────Account.MyTextField__cCustomField0056g000000FDuZ1Contact.MyField__cCustomField0056g000000FDuZ11AdminProfile0051k000002KW4R54MyObj1__c-MyObj1LayoutLayout0051k000002KW4R55Account-AccountLayoutLayout0056g000000FDuZ33Contact-ContactLayoutLayout0056g000000FDuZ45MyObj1__cCustomObject0051k000002KW4R57TVRemoteControlApexClass0056g000000FDuZ53您可以使用此输出来运行其他有用的查询。例如,要获取上次更改Apex类的人,运行此查询将ID从CHANGEDBY映射到用户名:TVRemoteControl
sfdataquery--query"SELECTId,Username,NameFROMUserWHEREId='0056g000000FDuZ'"--target-orgDevSandbox结果类似于:
IDUSERNAMENAME──────────────────────────────────────────────────────0056g000000FDuZQASdev2@example.com.devsb1Dev2可以使用SourceMember对象来解决问题。例如,假设您更改组织中的元数据,但更改未显示在OR中。检查SourceMember的字段是否记录了该字段元数据组件正在正确递增。projectretrievepreviewprojectretrievestartRevisionCounter
另一个用例是将源跟踪重置回特定的修订号。
sfprojectresettracking--revision30--target-orgDevSandbox警告
命令删除或覆盖所有现有的源跟踪文件。使用时要格外小心。projectresettracking
遵循这些最佳实践,充分利用源跟踪。
这种做法可帮助其他开发人员合并您的更改并促进协作。
使用版本控制系统,您可以对更改进行版本控制、跟踪更改历史记录以及在升级到其他环境(如沙盒)之前查看元数据更改。
源跟踪执行额外的功能来确定对跟踪源的更改组件,例如运行更多查询并等待SourceMemberToolingAPI对象部署后更新。因此,某些命令在使用大中型项目。如果你正在处理小项目,你不会注意到任何减速。
中型项目具有30个或更多组件或50个或更多测试。一个有25个的项目组件和51项测试被认为是中等的。
大型项目需要600个或更多组件或150个或更多测试。一个有610的项目组件和140次测试被认为是大型的。
如果在DevOpsCenter中创建临时组织或沙盒以用作开发环境,不要禁用源跟踪。
临时组织是Salesforce代码的源代码驱动和一次性部署,并且元数据。临时组织是完全可配置的,允许开发人员模拟不同的具有不同功能和设置的Salesforce版本。您可以共享临时组织配置文件,以便你们都拥有相同的基本组织做你的发展。除了代码和元数据之外,开发人员还可以安装包和部署合成数据或虚拟数据进行测试。不要将个人数据添加到临时组织。
源跟踪是指跟踪对本地源文件所做的更改和组织中的元数据,并使两者保持同步。
如果您处于主动开发模式,我们建议您在您的Scratch组织,以便您可以轻松地在您的组织和本地组织之间同步更改项目。但是源跟踪会减慢部署和检索速度,因此它是有时,如果不需要,最好禁用它。以下是一些用例。
默认情况下,临时组织为空。它们不包含太多示例元数据当您注册一个组织(例如DeveloperEdition组织)时,您会得到传统方式。暂存组织中未包含的一些内容包括:
在创建临时组织之前,您必须对其进行配置,使其具有以下功能:镜像源组织(通常是生产组织)的设置、许可证和限制。功能、设置、版本、许可证和限制的组合是我们称为组织的形状。
我们提供以下方法来配置临时组织:
临时组织是在沙盒实例上创建的。沙盒实例依赖于创建DevHub组织时使用的国家/地区信息。
政府云和公有云的临时组织在以下区域创建:开发人员中心组织位于物理位置。
如果您发现临时组织不在预期区域中,请创建一个Salesforce支持案例。
临时组织是临时的,与关联的ActiveScratchOrgs一起删除过期后来自DevHub的记录。此过期过程可确保团队经常将他们的更改与他们的版本控制系统同步,并且是使用其项目的最新版本。
删除临时组织不会终止您的临时组织订阅。如果你的订阅仍处于活动状态,您可以创建新的临时组织。创建一个新的临时组织将计入您的每日和活动临时组织限制。
开发人员中心组织通常是生产组织,可以在其中启用开发人员中心版本:Developer、Enterprise、Unlimited或Performance。开发人员中心版本确定如何您可以创建许多临时组织。您每次都选择一个受支持的暂存组织版本您创建了一个临时组织。
临时组织的Salesforce版本的可能值为:
临时组织具有以下存储限制:
如果你是合作伙伴或ISV,则你的临时组织分配可能会有所不同。有关详细信息,请参阅第一代托管打包开发人员指南。
如果您的Salesforce管理员使用免费有限访问权限提供了对DevHub组织的访问权限license,则您无权运行此命令。请与管理员联系以提供此信息信息。
sflimitsapidisplay--target-org
与临时组织关联的设置和配置选项决定了其形状,包括:
通过设置不同的临时组织定义文件,您可以轻松创建临时组织具有不同的形状进行测试。例如,您可以在通过在定义文件中设置FieldService组织首选项来临时组织。如果你想要一个使用示例数据和元数据的Scratch组织像您习惯的那样,添加此选项:.hasSampleData
我们建议您将此文件保留在项目中,并将其签入到版本控制中系统。例如,创建一个团队版本,您可以签入该版本供所有团队成员使用。个人开发人员还可以创建自己的本地版本,其中包括临时组织定义参数。这些参数的示例包括电子邮件和姓氏,其中确定谁在创建临时组织。
在创建临时组织时,指示临时组织配置文件的路径使用CLI命令。orgcreatescratch
如果您使用的是示例存储库或创建SalesforceDX项目,则示例临时组织定义文件位于config目录中。您可以创建不同的组织配置或测试方案的不同配置文件。为了方便标识,将文件命名为描述性名称,例如devEdition-scratch-def.json或packaging-org-scratch-def.json。
以下是您可以在临时组织定义文件中指定的选项:
如果您直接在生产组织中进行这些更改,请继续以适当的谨慎程度。ScratchOrgInfo对象在沙盒或临时组织。
在DevHub组织中,创建自定义字段。
创建自定义字段后,可以在临时组织定义中向其传递一个值文件,方法是使用其API名称引用它。假设您创建了两个自定义字段,分别称为workitem和release。添加自定义字段和将值关联到临时组织定义,然后创建临时组织:
{"orgName":"MyCompany","edition":"Developer","workitem__c":"W-12345678","release__c":"June2024pilot","settings":{"omniChannelSettings":{"enableOmniChannel":true}}}设置对象级共享设置和默认记录类型若要成功安装,某些包要求定义对象级共享安装前的设置和默认记录类型。设置共享设置和默认值带有的记录类型。在此示例中临时组织定义文件,我们为商机和帐户的默认记录类型。objectSettings
某些临时组织功能需要开发人员中心组织中的许可证或权限。如果你无法仅通过在临时组织中指定功能名称来创建临时组织定义文件,请咨询您的Salesforce管理员以获取帮助。
功能不区分大小写。您可以将它们表示为全大写字母,也可以按照我们的定义表示它们在这里是为了可读性。如果要素后跟
提供三个权限集,允许访问AccountingSubledgerStarter特征。
允许在包包时在组织范围内访问会计子分类帐增长功能已安装。
增加组织中允许的自定义应用程序的最大数量。指示以下位置的值1–30.支持的数量1–30,乘数:1
增加组织中允许的最大自定义对象数。指示以下位置的值1–30.支持的数量1–30,乘数:1
增加对象上允许的最大自定义关系数。表示一个值从1到10。支持的数量1–10,乘数:5
增加组织中允许的最大自定义选项卡数。指示以下位置的值1–30.支持的数量1–30,乘数:1
增加分配给临时组织中用户的记录导入配额。指示一个值从1到30。支持的数量1–30,乘数:1
增加CRMAnalytics查询结果的大小。表示1-30之间的值(乘数为10)。将数量设置为6会增加查询结果为60。支持的数量1–30,乘数:10
增加可以跟踪历史记录的字段数,超出默认值(20)领域。指示一个介于1–40之间的值。支持的数量1–40,乘数:1更多信息
以前的名称:AddHistoryFieldsPerEntity。
启用AdmissionsConnect组件。如果没有此临时组织功能参数,自定义AdmissionsConnect组件呈现为空白。
将这些选项添加到临时组织定义中文件:
启用学生成功中心组件。如果没有此临时组织功能参数,自定义学生成功中心组件呈现为空白。
将以下选项添加到临时组织定义文件中:
启用Pathways组件。如果没有此临时组织功能参数,则自定义路径组件呈现为空白。
将这些选项添加到您的临时组织定义文件:
提供对EinsteinAttributionforMarketingCloud帐户的访问权限婚约。EinsteinAttribution使用AI建模来动态分配归因百分比到多个活动接触点。样本临时组织定义文件在启用EinsteinAttribution之前,请确保将和设置为。enableAIAttributionenableCampaignInfluence2true
此功能在AccountEngagementAdvanced和Premium版本中可用。
启用管理CRMAnalytics平台所需的所有权限,包括启用创建CRMAnalytics模板化应用和CRM的权限分析应用。更多信息
为CRMAnalytics提供一个CRMAnalytics嵌入式应用程序许可证平台。
即使在不提供API访问的版本(专业版、组版)中,RESTAPI也是默认启用。使用此暂存组织功能访问其他API(SOAP、流式处理、批量、批量2.0)。更多信息
允许您将可操作关系中心(ARC)组件添加到ExperienceCloud页面,以便您的用户可以查看ARC关系图。更多信息
提供1个席位的FinancialServicesEALoginAddon附加许可证。
启用动态评估功能,从而启用评估问题和评估问题集。更多信息将这些选项添加到临时组织功能定义中文件。对于“版本”,您可以指明支持的临时组织功能版本。
启用AssetScheduling许可证。AssetScheduling使预订房间和设备。指示介于1–10之间的值。支持的数量1–10更多信息
启用关联引擎,该引擎会自动将新帐户与通过创建分支单元客户记录来获取用户的当前分支。更多信息
提供11个FSCComprehensivePsl用户许可证席位和11个FSCComprehensiveAddOn附加许可证。
使您能够访问和修改临时组织中的Apex代码。默认启用企业版和开发人员版。更多信息
对于组和专业版组织,默认情况下禁用此功能。启用AuthorApex功能后,您可以编辑和测试Apex类。
提供B2B许可证。B2BCommerce支持企业对企业(B2B)组织中的Commerce。创建和更新B2B商店。创建和管理买家账户。卖产品给其他企业。更多信息
要求您还包括社区scratchorg功能,用于使用B2B创建商店商业。在Professional、PartnerProfessional、Group或PartnerGroup中不可用版本组织。
启用B2B忠诚度管理许可证。创建忠诚度计划并设置忠诚度特定于计划的流程,使您能够识别、奖励和留住客户。更多信息
启用批量管理许可证。批处理管理允许您处理高可管理批次的记录量。更多信息
使临时组织能够在批量API中使用BigObjects。更多信息
允许在临时组织中使用BriefcaseBuilder,这允许您离线创建使所选记录可供离线查看的公文包。
允许用户访问预算管理功能和对象。启用预算管理,请将此功能添加到临时组织定义文件中。
启用业务规则引擎,该引擎同时启用表达式集和查找表。更多信息
启用仅缓存密钥服务。此功能允许您存储密钥材料在Salesforce之外,并让仅缓存密钥服务按需从密钥中获取密钥您控制的服务。更多信息
增加Apex标注的最大大小。指示介于3–12.支持的数量3–12,乘数:1
此功能在SalesforceEnterprise、Performance、Unlimited和开发人员版本。
提供具有先前相同级联删除功能的查找关系仅适用于主从关系。防止记录意外丢失deleted,则默认情况下禁用cascade-delete。
启用Einstein案例分类。案例分类为您的座席提供建议,以便他们选择最佳价值。您还可以自动保存最佳建议并将案例路由到正确的代理。
启用Einstein案例总结。为了帮助座席快速完成案例,EinsteinCase总结根据过去的聊天记录推荐案例字段值。更多信息
在EnterpriseEdition临时组织中可用。
需要使用临时组织中的“设置”菜单进行配置。
如果临时组织版本未自动启用更改数据捕获,则启用它。
支持将机器人元数据部署到临时组织,并允许您创建和编辑机器人。更多信息
若要使用此功能,请在DevHub组织中启用Einstein功能接受服务条款。
ChatterEmailFooterLogo允许您使用徽标图像的文档ID,您可以这样做用于自定义Chatter电子邮件。
ChatterEmailFooterText允许您在自定义Chatter中使用页脚文本电子邮件。
ChatterEmailSenderName允许您自定义显示为发件人的名称电子邮件通知中的名称。例如,您的公司名称。
CloneApplication允许您克隆现有的自定义Lightning应用程序,并将对新应用的自定义。这样,您就不必从头开始,尤其是当您想要创建具有简单变体的应用程序。
将您可以在SalesforceCMS中创建的不同内容类型的数量限制为21种。
将可以为特定内容类型创建的最大子节点(字段)数限制为15。
在SalesforceCMS中启用无限的内容记录、内容类型和带宽使用。
允许组织创建客户社区。要使用社区,您还必须包括communitiesSettings>settings部分中的enableNetworksEnabled临时组织定义文件。更多信息
在Enterprise和Developer临时组织中可用。
启用ConnectedApp元数据API对象中的pluginExecutionUser字段。
增加所有通道的最大并发客户端(订阅者)数,以及适用于API版本36.0及更早版本的所有事件类型。指示一个介于20–4,000之间的值。支持的数量20–4,000,乘数:1
使连接的应用程序能够订阅用于发送的自定义通知类型自定义桌面和移动通知。更多信息
允许通过工具API使用连接的应用。
为组织启用同意事件流权限。更多信息
增加保存控制台数据的频率(以分钟为单位)。指示介于0–500.若要禁用自动保存,请将值设置为0.支持的数量0–500,乘数:1
启用合同审批,允许您通过审批流程跟踪合同。
启用合同生命周期(CLM)管理功能组织。
为行业启用合同生命周期管理(CLM)功能。
启用安装SalesforceCPQ托管软件包所需的许可功能。不会自动安装包。更多信息
支持翻译“工作类型组”、“服务区域”和服务资源对象。您可以使用文本、文本区域、文本区域(长)、文本区域(丰富)和URL类型。
要求您还包括EntityTranslation临时组织定义文件中的临时组织功能。在Professional、Partner中不可用专业版、组版或合作伙伴组版组织。
允许组织创建自定义通知类型,这些通知类型用于发送自定义桌面和移动通知。更多信息
提供Data.com帐户功能的许可证。
提供Data.com清洁功能的许可证,并允许用户打开自动填写作业的干净设置。
提供30个数据掩码权限集许可证。此权限集允许访问已安装的Salesforce数据掩码包。更多信息
启用数据处理引擎许可证。数据处理引擎帮助转换数据在您的Salesforce组织中可用,并将转换结果写回为新的或更新的记录。更多信息
启用Apex交互式调试器。您可以使用它通过设置断点和检查点以及检查代码以查找错误来调试Apex代码。
启用决策表许可证。决策表读取业务规则并决定Salesforce组织中的记录或您指定的值的结果。更多信息
将临时组织管理员设置为默认工作流用户。
允许管理员暂停组成员身份和共享规则计算并恢复他们以后。更多信息
在临时组织中启用CRMAnalytics开发。它分配了五个平台许可证和向组织颁发五个CRMAnalytics平台许可证,以及将权限集许可证分配给管理员用户。它也启用CRMAnalytics模板和EinsteinDiscovery特征。
启用设备跟踪。
在临时组织中启用DevOpsCenter,以便合作伙伴可以创建第二代扩展或增强DevOpsCenter应用程序中功能的托管包(基本)包。DevHub组织要求Salesforce管理员在开发人员中心组织中启用DevOpsCenter。在“设置”中,输入“快速查找”框,然后选择“DevOps”中心。您可以在启用组织首选项后创建临时组织。DevOpsCenter临时组织定义文件将以下选项添加到临时组织定义文件中:
将对LoginIP和ClientBrowserAPI对象的访问限制为仅允许查看或删除。
提供配置所需的权限集许可证和权限集披露与合规中心。临时组织定义文件将这些选项添加到临时组织定义中文件:
打开“公司设置”下的“管理部门”功能。通过分区,可以将组织的数据划分为逻辑部分,使搜索、报表和列表视图对用户更有意义。分区对于拥有大量数据的组织非常有用。
在组织中启用文档生成功能。
使设计人员能够创建和配置文档模板。
在组织中启用“行业文档生成”功能。
启用“文档跟踪”和“审批”功能,并添加“文档清单”权限集。文档跟踪功能允许您定义要上传和批准的文档,从而支持贷款申请或行动计划等流程。更多信息
将发送用于数据提取的页数限制为5页。更多信息
使组织能够访问隐私中心中的DSARPortability功能。此外,还提供PrivacyCenter和PrivacyCenterAddOn许可证各一个席位。更多信息
为API版本37.0及更高版本启用持久PushTopic流式处理API。更多信息
在EnterpriseEdition和DeveloperEdition临时组织中可用。
为API版本37.0及更高版本启用DurableGenericStreamingAPI。更多信息
在EnterpriseEdition和DeveloperEdition中可用临时组织。
允许组织通过动态客户端注册多达100个OAuth2.0连接的应用程序注册终结点。
在组织中启用能源和公用事业数字销售功能。
在组织。
启用CRMAnalytics输出连接器。
启用CRMAnalyticsSyncOut。
将有效负载中的记录数设置为10,之后EinsteinDiscovery预测服务使用M3。
允许使用教育云。
最大值:10;乘数:1
为CRMAnalytics平台提供一个CRMAnalyticsPlus许可证。
需要使用中的“设置”菜单进行配置Scratch组织。
提供允许管理员创建一个已启用的预测的许可证使用EinsteinPredictionBuilder。EinsteinPredictionBuilder是面向管理员的自定义AI更多信息
提供在临时组织中启用和使用IntelligentFormReader所需的许可证。智能表单阅读器使用光学字符识别自动提取数据亚马逊提取物。
提供使用EinsteinRecommendationBuilder创建建议的许可证。EinsteinRecommendationBuilder可让您构建自定义AI建议。更多信息
在DeveloperEdition和EnterpriseEdition中启用。
需要使用中的“设置”菜单进行配置Scratch组织。您还需要EinsteinRecommendationBuilderMetadata功能设置为在scratch中使用EinsteinRecommendationBuilder组织。
使EinsteinRecommendationBuilder能够使用所需的元数据蜜蜂属。启用此功能后,您可以构建自定义AI建议。更多信息
提供在临时使用和启用EinsteinSearch功能所需的许可证组织。更多信息
在专业版和企业版临时组织中可用。
启用消费品云。借助消费品云,改变您的生活方式与您的零售渠道合作伙伴协作。使您的销售经理能够计划访问。并分析您各门店的业务健康状况。此外,允许您的现场代表跟踪使用零售执行移动设备进行库存、接受订单和捕获访问详细信息应用程序。
启用EinsteinDiscovery,可用于获取商店光顾建议。跟EinsteinVisitsED,您可以创建一个访问频率策略,允许Einstein提供最佳店铺访问建议。更多信息
增加发布的标准卷平台事件通知的最大数量每小时。指示介于1,000–10,000.支持的数量1,000–10,000,乘数:1
为组织启用合作伙伴关系管理权限。
允许访问LoginIP和ClientBrowserAPI对象,以在UI中验证用户的身份。
使您能够在不提供旧密码的情况下更改密码。
sforggeneratepassword
定义加密统计信息收集过程之间的间隔(以秒为单位)。这最大值为604,800秒(7天)。默认值为每86,400秒一次(24小时)。支持的数量0–60,4800,乘数:1更多信息
定义组织将数据与活动密钥同步的频率(以秒为单位)材料。默认值和最大值为604,800秒(7天)。要同步更多数据通常,指示一个值(以秒为单位),等于或大于0。支持的数量0–604,800,乘数:1更多信息
在组织中启用能源和公用事业云功能。
启用对组织的事件日志文件的API访问。事件日志文件包含信息关于可用于分析使用趋势和用户的组织的操作事件行为。
支持“工作类型组”、“服务区域”和“服务”的字段数据转换资源对象。
要转换自定义字段数据,还要包括临时组织定义文件中的CustomFieldDataTranslation临时组织功能。不在Professional、PartnerProfessional、Group或PartnerGroupEdition中可用组织。
通过使用ConnectREST,使组织每小时最多可以运行500,000个表达式集应用程序接口。
允许临时组织使用与您的外部身份许可证。
为组织启用现场审计跟踪,并允许总共60个跟踪字段。默认情况下,跟踪所有组织的20个字段,跟踪另外40个字段现场审计跟踪。更多信息
旧名称:RetainFieldHistory
提供FieldService许可证。指示一个介于1–25之间的值。支持的数量1–25,乘数:1更多信息
添加FieldService约会助理权限集许可证。指示一个值在1-25之间。
1–25,乘数:1
添加FieldServiceDispatcher权限集许可证。指示介于1–25.支持的数量1–25,乘数:1更多信息
添加FieldService最后一英里权限集许可证。指示介于1–25.
添加FieldServiceMobileExtension权限集许可证。
添加FieldServiceMobile权限集许可证。指示介于1–25.支持的数量1–25,乘数:1更多信息
添加FieldService计划权限集许可证。指示介于1–25.支持的数量1–25,乘数:1更多信息
将FinanceLogging对象添加到临时组织。此功能是必需的用于FinanceLogging。
添加FinancialServicesInsuranceCommunity权限集许可证,并启用获得金融服务保险社区组成部分,以及对象。指示介于1–10之间的值。支持的数量1–10,乘数:1
添加金融服务保险权限集许可证,并允许访问金融服务保险组件和对象。表示一个值介于1–10之间。支持的数量1–10,乘数:1
添加FinancialServicesCloudStandard权限集许可证。此权限集允许访问Lightning组件和标准版本的金融服务云。还提供对标准的访问Salesforce对象和自定义FinancialServicesCloud对象。表明介于1-10之间的值。支持的数量1–10,乘数:1
允许在SalesforceSites和客户门户中使用流程。
添加一个SalesforcePlatform用户许可证。
使金融服务云记录警报实体在临时可访问组织。更多信息
提供11个FSCComprehensivePsl用户许可证席位和11个席位FSCComprehensiveAddOn附加许可证。
启用FinancialServiceCloud的ServiceProcessStudio功能。提供10个座位每个IndustriesServiceExcellenceAddOn和FinancialServicesCloudStardardAddOn许可证。若要启用该功能,还必须在安装程序中打开StandardServiceProcess设置,然后授予用户AccessToServiceProcess权限。
允许用户访问Salesforce中的NonprofitCloudforFundraising功能和对象。
要启用筹款功能,请将这些设置添加到临时组织定义文件中。
为API版本36.0及更早版本启用通用流式处理API。更多信息
增加24小时内传递的事件通知的最大数量,由所有CometD客户端共享,具有API的通用流式处理版本36.0及更早版本。指示介于10,000–50,000.支持的数量10,000–50,000,乘数:1
允许用户访问Salesforce和Experience中的Grantmaking功能和对象云。
Salesforce在22年春季停用了HealthCloudCandidatePatient对象,以专注于更健壮的Lead对象。此临时组织功能允许您覆盖该停用和访问对象。
允许将HealthCloud用于ExperienceCloudSites。更多信息
允许药物管理支持药物核对。更多信息
允许使用提供商网络管理。更多信息
这使临时组织能够使用等效于一个用户的HealthCloud权限集许可证。更多信息
提供SalesEngagement许可证并启用Salesforce收件箱。销售参与以高生产率优化内部销售流程工作。销售经理可以创建自定义销售流程指导销售代表处理不同类型的潜在客户。和销售销售代表可以通过优先级列表和其他快速处理潜在客户提高生产力的功能。SalesEngagement功能可以是部署在临时组织中,但该功能的设置不能通过临时组织定义文件进行更新。相反,请配置直接在SalesEngagement应用中进行设置。
共享继承覆盖率报告可以运行的频率(以小时为单位)对象。指示一个介于1–24之间的值。支持的数量1–24,乘数:1
允许使用SalesforceIdentity用户配置。
忽略查询参数筛选规则的白名单规则。如果启用,您可以添加URL的任何查询参数。
在可能的情况下,我们更改了非包容性条款,以符合我们公司的价值平等。我们保留了某些条款,以避免对客户产生任何影响实现。
为行动计划提供许可证。行动计划允许您定义用于完成业务流程的任务或文档清单项。更多信息
旧名称:ActionPlan。
分支管理允许分支经理和管理员跟踪金融服务云中的分支机构、员工和客户群。更多信息
提供BranchManagement附加许可证和用户权限,以及11个席位FSCComprehensivePsl用户许可证和11个FSCComprehensiveAddOn附加组件席位许可证。
授予用户访问参与者管理和数据共享高级配置的权限提高对法规和公司政策的遵守情况。更多信息
提供1个席位的FinancialServicesCloudStandardAddOn附加许可证。
为社区权限集许可证提供制造销售协议,供合作伙伴社区用户使用。它也为管理员提供对制造社区模板的访问权限用户创建社区。更多信息
启用帐户预测。借助AccountForecast,您可以为您的基于订单、商机和销售协议的帐户。你还可以创建公式来计算您的预测贵公司的要求。更多信息
为CRMAnalytics启用CRMAnalyticsPlus许可证。
启用保险的计算功能。BRERuntimeAddOn和OmniStudioRuntime许可证各提供10个席位。此外,还提供OmniStudio和BREPlatformAccess许可证各一个席位。
启用索赔管理功能。提供InsuranceClaimMgmtAddOn许可证的一个席位。更多信息
启用策略管理功能。提供InsurancePolicyAdministrationAddOn许可证的一个席位。更多信息
提供临时启用和使用IntelligentDocumentReader所需的许可证智能文档阅读器使用光学字符识别自动提取数据。使用您的AWS账户使用AmazonTextract。
启用流。流是SalesforceFlow中收集数据并执行的部分Salesforce组织或外部系统中的操作。Salesforce的Flow提供两种类型的流:屏幕流和自动启动流。更多信息
需要在临时组织的“设置”菜单中进行配置。
启用IoT,以便临时组织可以使用平台事件来执行业务和使用编排和上下文的服务工作流。更多信息
提供Jigsaw功能的一个许可证。
为Chat启用旧版LiveAgent路由。使用LiveAgent路由在SalesforceClassic中聊天。LightningExperience中的聊天必须使用全渠道进行路由。
添加一个LightingSalesConsole用户许可证。
将Lightning服务控制台许可证分配给您的临时组织,以便您可以使用Lightning服务控制台并访问有助于更快地管理案例。更多信息
为ServiceCloud启用Chat。使用基于Web的聊天功能,快速将客户与座席联系起来,以获得实时支持。
为ServiceCloud启用消息传递。使用“消息传递”快速支持使用SMS文本消息和FacebookMessenger等应用的客户。
允许页面布局部分标题最多为80个字符。更多信息要启用此功能,请联系Salesforce客户支持。
启用AnalyticsforLoyalty许可证。AnalyticsforLoyalty应用为您提供可操作的深入了解您的忠诚度计划。更多信息
启用LoyaltyManagementPromotionSetup许可证。促销设置允许忠诚度项目经理创建忠诚度计划流程。忠诚度计划流程可帮助您做出决定如何处理传入和新的应计和赎回类型的交易。更多信息
将每小时可累计处理的订单行数增加忠诚度计划流程。指示介于1–3,500,000之间的值。支持的数量1–3,500,000,乘数:1
增加忠诚度计划可以处理的交易日记帐数量每小时的进程数。指示介于1–500,000之间的值。支持的数量1–500,000,乘数:1
增加可以处理的事务日记记录数。表示一个值介于1–50,000,000之间。支持的数量1–50,000,000,乘数:1
在临时组织中启用宏。启用宏后,将宏浏览器添加到Lightning控制台,以便您可以为常用操作配置预定义指令,并同时将它们应用于多个帖子。更多信息
增加可在组织。指示一个介于1–50之间的值。支持的数量1–50,乘数:1
限制非测试、非托管Apex代码大小(以MB为单位)。要使用大于默认值为10,请联系Salesforce客户支持。
限制每个访问群体可用的访问群体类型条件的数量。默认值为10。
限制自定义标签的数量(以千为单位)。将限制设置为10使临时组织能够拥有10,000个自定义标签。表示一个值介于1–15之间。支持的数量1–15,乘数:1,000
增加可与决策表关联的数据集链接数。指示一个介于1–3之间的值。支持的数量1–3,乘数:1
增加数据处理引擎定义可以的源对象节点数包含。指示一个介于1–50之间的值。支持的数量1–50,乘数:1
增加可在组织中创建的决策表规则数。表示一个值介于1–30之间。支持的数量1–30,乘数:1
增加允许的收藏夹数量。收藏夹允许用户创建快捷方式Salesforce页面。用户可以通过单击来查看他们的收藏夹标题中的收藏夹列表下拉列表。指示一个值介于0–200之间。支持的数量0–200,乘数:1
增加数据处理引擎定义中的节点可以包含的字段数。指示一个介于1–500之间的值。支持的数量1–500,乘数:1
增加决策表可以包含的输入字段数。指示一个值在1-10之间。支持的数量1–10,乘数:1
增加可在组织中创建的会员计划流程规则的数量。指示一个介于1–20之间的值。支持的数量1–20,乘数:1
增加数据处理引擎定义可以包含的节点数。指示一个介于1–500之间的值。支持的数量1–500,乘数:1
增加允许的主题数。主题允许用户配置颜色、字体、图像、大小等。在“设置”中访问主题列表,在主题和品牌下。指示介于0–300.支持的数量0–300,乘数:1
增加决策表可以包含的输出字段数。指示一个值在1-5之间。支持的数量1–5,乘数:1
增加可在决策表。指示一个介于1–5之间的值。支持的数量1–5,乘数:1
增加24小时内传递的PushTopic事件通知的最大数量期间,由所有CometD客户端共享。指示介于40–100.支持的数量40–100,乘数:1
增加用户可以添加到导航栏的导航项数。表示一个值介于0–500之间。支持的数量0–500,乘数:1
增加通用流式处理的用户定义通道的最大数量。表示一个值介于20–1,000之间。支持的数量20–1,000,乘数:1
增加数据处理引擎定义可以的写回对象节点数包含。指示一个介于1–50之间的值。支持的数量1–10,乘数:1
将每条记录允许的共享定义数增加到应用于对象。指示介于150–1,600.支持的数量150–1,600,乘数:1
每60秒设置一次加密密钥材料轮换间隔。如果这未指定功能,则旋转间隔默认为每604,800秒(7天)一次搜索索引密钥材料,所有其他密钥每86,400秒(24小时)搜索一次材料。更多信息
增加FieldServiceMobile扩展的文件大小(以MB为单位)。表示一个值介于1–2,000之间。支持的数量1–2,000,乘数:1
实现增强的移动安全性。借助增强的移动安全性,您可以控制范围的策略,以创建适合您组织需求的安全解决方案。您可以限制用户基于操作系统版本、应用版本以及设备和网络安全的访问。您还可以指定违规的严重性。
允许在一个对象之间创建特殊类型的父子关系,即子对象、细节对象和另一个对象、父对象或主对象。
需要客户端证书来验证相互身份验证的入站请求。
允许访问临时组织中的myTrailhead启用站点。临时组织定义文件将以下选项添加到临时组织定义文件中:
提供使用和配置Salesforce.org所需的权限集许可证非营利性云案例管理托管包。然后,您可以从头开始安装该软件包组织。更多信息
增加可创建的最大平台事件定义数。表明介于5–20之间的值。支持的数量5–20,乘数:1
创建规则以快速将渠道交互链接到联系人、潜在顾客或客户的个人帐户等对象(Beta)。
提供Salesforce订单管理许可证。订单管理是您的中心枢纽用于处理订单生命周期的所有方面,包括订单捕获、履行、运输、付款处理和服务。更多信息
如果要将订单管理配置为使用这些功能中的任何一个,请在Scratch组织:
启用对新订单保存行为的临时组织支持。更多信息OrderSaveLogicEnabled仅支持新订单保存行为。如果您的临时组织同时需要两者旧订单和新订单保存行为,请使用OrderSaveBehaviorBoth。要启用OrderSaveLogicEnabled,请更新临时组织定义文件。
允许用户访问Salesforce中的结果管理功能和对象。
在临时组织中启用个人帐户。更多信息
启用平台缓存并分配3MB缓存。Lightning平台缓存层在缓存Salesforce会话和组织数据时提供更快的性能和更好的可靠性。更多信息
启用SalesforceConnect并允许用户查看、搜索和修改数据存储在Salesforce组织外部。指示1-5之间的值。支持的数量1–5,乘数:1
ShieldPlatformEncryption对静态数据进行加密。您可以管理密钥材料并加密字段、文件和其他数据。
增加已传送的标准卷平台事件通知的最大数量在24小时内,由所有CometD客户共享。指示一个值在10,000–50,000之间。支持的数量10,000–50,000,乘数:1
启用ProcessBuilder,这是一种SalesforceFlow工具,可帮助您实现业务自动化过程。更多信息
允许访问所有“项目群管理”和“案例管理”功能和对象。更多信息要启用ProgramManagement,请将这些设置添加到临时组织定义中文件。
提供3MB的免费平台缓存容量,用于安全审查托管包。此功能通过称为“无提供程序”的容量类型提供容量,并在DeveloperEdition组织中自动启用。免费分配提供程序容量添加到平台缓存分区,并将其添加到托管包中。更多信息
允许访问所有公共部门功能和对象。
支持公共部门应用程序的其他用途,具体取决于其定价。
允许公共部门用户访问以从模板构建ExperienceCloud站点可用。
启用记录类型功能。记录类型可让您提供不同的业务流程、选择列表值和页面布局给不同的用户。
启用在用户会话无效时自动刷新Lightning页面。但是,如果页面检测到新令牌,它会尝试设置该令牌并继续而不刷新。
启用订阅管理。订阅管理是API优先的,用于B2B订阅和一次性销售的产品到现金解决方案。更多信息在Enterprise和Developer临时组织中可用。启用订阅管理在临时组织中,将此设置添加到临时组织定义中文件。
允许组织为Lightning组件提供最多5页的缓存。
启用SalesCloudEinstein功能和Salesforce收件箱。SalesCloudEinstein带来人工智能渗透到销售过程的每一步。更多信息
允许访问Salesforce内容功能。
提供SalesCloud功能的许可证。
允许使用SAML2.0单点注销。
启用对SCIM协议基API的访问支持。
允许在事件监控中访问安全事件。
提供在临时组织中启用和使用SentimentInsights所需的许可证。产品用途SentimentInsights,用于分析客户的情绪并获得可操作的见解,以改进它。
启用员工服务目录,以便您可以创建产品和服务目录为您的员工服务。它还可以将员工对这些产品和服务的要求转化为已批准并记录在案的订单。
添加一个ServiceCloud用户许可证,并允许访问ServiceCloud功能。
使Apex调试日志能够包含会话ID。如果禁用,则在调试日志中将会话ID替换为“SESSION_ID_REMOVED”。
提供Salesforce.orgInsightsPlatform数据完整性托管包的许可证。然后,您可以在临时组织中安装该软件包。更多信息
您可以在临时组织中创建站点和社区,但不支持自定义域(如www.example.com)。
启用州和国家/地区选择列表。州和国家/地区选择列表让用户从预定义的标准化列表中选择州和国家/地区,而不是输入州、国家和地区数据转换为文本字段。
启用流式处理API。更多信息
增加24小时内传递的PushTopic事件通知的最大数量句点,由所有CometD客户端共享(API版本36.0及更早版本)。指示一个介于10,000–50,000之间的值。支持的数量10,000–50,000,乘数:1
增加每个通用流式处理的最大并发客户端(订阅者)数通道(API版本36.0及更早版本)。指示介于20–4,000.支持的数量20–4,000,乘数:1
增加每个PushTopic流式处理的最大并发客户端(订阅者)数通道(API版本36.0及更早版本)。指示介于20–4,000.支持的数量20–4,000,乘数:1
提供安装和配置SustainabilityCloud。要启用或使用CRMAnalytics和CRMAnalytics模板,包括DevelopmentWave临时组织特征。更多信息
提供所需的权限集许可证和权限集配置NetZeroCloud。启用或使用TableauCRM和Tableau的步骤CRM模板,包括DevelopmentWave临时组织特征。临时组织定义文件将这些选项添加到临时组织定义中文件:
通过以下方式启用管理NetZeroAnalytics应用程序所需的所有权限启用TableauCRM。您可以创建和共享分析应用程序您的用户使您的环境会计与您的财务会计。更多信息
使您能够实施Apex终结器并将其附加到可排队的Apex作业。更多信息
此功能目前处于开放状态试点并受到限制。
增加CRMAnalytics支持的最大货币数。指示一个值在1-5之间。
启用WavePlatform许可证。
启用工作流,以便您可以自动执行标准内部程序和过程。更多信息
允许您从工作流操作启动流程。更多信息
仅当您在组织中为流触发器启用了试点计划时,才支持此设置工作流操作。如果启用了试点,则可以继续创建和编辑流触发器工作流操作。
如果未启用试点,请使用流ProcessBuilder临时组织功能中的操作相反。
允许访问WorkplaceCommandCenter功能,包括访问Employee、Crisis和员工危机评估。更多信息
启用Chatter中的“感谢”功能。
临时组织设置是在临时组织中定义组织首选项的格式定义。由于可以使用所有元数据API设置,因此它们是最全面的配置临时组织的方式。如果某个设置在元数据API中受支持,则在临时组织。设置为您提供细粒度控制,因为您可以定义值对于设置的所有字段,而不仅仅是启用或禁用它。
尽管“设置”在“元数据”中是大写驼峰式的API开发者指南,请务必在临时组织定义。
{"orgName":"Acme","edition":"Enterprise","settings":{"mobileSettings":{"enableS1EncryptedStoragePref2":true},"nameSettings":{"enableMiddleName":true,"enableNameSuffix":true}}}临时组织设置临时组织设置是在临时组织中定义组织首选项的格式定义。由于可以使用所有元数据API设置,因此它们是最全面的配置临时组织的方式。如果某个设置在元数据API中受支持,则在临时组织。设置为您提供细粒度控制,因为您可以定义值对于设置的所有字段,而不仅仅是启用或禁用它。
{"orgName":"Acme","edition":"Enterprise","settings":{"mobileSettings":{"enableS1EncryptedStoragePref2":true},"nameSettings":{"enableMiddleName":true,"enableNameSuffix":true}}}基于组织形状创建临时组织我们知道,构建一个反映功能和生产组织中的设置。使用OrganizationalShapeforScratchOrgs,您可以继续构建从头开始组织定义。捕获组织的形状后,可以启动刮擦基于它的组织。
适用于:开发人员、组、专业、无限制和企业版。从组织形状创建的临时组织与源组织。
不适用于:临时组织和沙箱
功能、元数据API设置、版本、限制和许可证决定了我们所说的组织形态。为进一步说明,组织形式包括:
适用于:开发人员版、组版、专业版、无限制版和企业版版本
不适用于:临时组织和沙盒
请务必:
您可以在“公司设置”>中找到组织ID信息。
最多可以指定50个开发人员中心组织ID来解决以下常见用例:
DevHub组织的Salesforce管理员必须将权限分配给计划以下用户:创建组织形状,或基于组织形状创建临时组织。如果您已经拥有权限设置为SalesforceDX用户,您可以将其更新为包含访问权限。
您不需要“全部修改”权限即可删除其他人创建的形状,因为组织中一次只能有一个活动形状。
创建组织形状以模拟基线设置(功能、限制、版本和元数据)API设置),没有无关数据和元数据的源组织。如果功能、设置、或该组织更改的许可证,您可以通过重新创建组织形状来捕获这些更新。您可以一次只有一个活动组织形状。
如果再次运行该命令此组织,以前的形状被标记为非活动状态,并被新的活动形状替换。
sforgcreateshape
如果你不想基于此形状创建临时组织,可以删除组织形状。删除一个组织形状:
sforgdeleteshape--target-org
在临时组织定义中,指示15个字符而不是.sourceOrg是您创建其形状的组织的组织ID。仅使用前15个字符,而不是完整的18个字符的组织ID。sourceOrgedition
如果您的DevHub组织、源组织和组织形状都位于同一Salesforce上版本,您可以使用简单的临时组织定义。
{"orgName":"Acme","sourceOrg":"00DB1230400Ifx5"}Salesforce版本过渡期间的临时组织定义文件在Salesforce主要版本过渡期间,您的DevHub组织和源组织可以使用不同的版本。如果你的DevHub组织与你的版本不同sourceorg,将选项添加到临时组织定义文件,以使用组织形状创建临时组织。release
以下是在将OrgShape用于临时组织时可能遇到的一些问题。
描述:某些功能和设置未在组织结构中启用,在许多情况下,由于安全或法律原因,这是设计使然。
解决方法:将它们添加到临时组织定义中。
解决方法:手动添加缺少的FieldService元数据临时组织定义的API设置,具体取决于启用的功能在源组织中。
方案1:如果组织配置同时包括FieldService增强计划和优化和FieldService集成功能,手动添加FieldService临时组织定义中的增强计划和优化元数据API设置文件,这将启用这两个功能。o2EngineEnabled
"settings":{"fieldServiceSettings":{"fieldServiceOrgPref":true,"o2EngineEnabled":true}}方案2:如果组织结构仅包含FieldService集成功能,手动添加FieldService增强型计划和优化元数据API将,设置为临时组织定义文件。optimizationServiceAccess
"settings":{"fieldServiceSettings":{"fieldServiceOrgPref":true,"optimizationServiceAccess":true}}DevOpsCenter未在基于组织形状的临时组织中启用描述:尽管在源中启用了DevOpsCenterorg,从源组织的形状创建的临时组织没有DevOpsCenter启用。故意关闭DevOpsCenter组织首选项。我们要求客户通过在临时中指示功能和设置来显式启用它出于法律原因的组织定义文件,作为DevOpsCenter条款的一部分,以及条件。
描述:从中创建组织形状的试用组织已过期。您可以看到以下任一错误:
ERRORrunningorglistshape:Errorauthenticatingwiththerefreshtokendueto:inactiveuserERRORrunningorglistshape:Errorauthenticatingwiththerefreshtokendueto:expiredaccess/refreshtoken解决方法:
描述:当您尝试从组织创建临时组织时包含ExperienceCloud站点的形状,则会出现错误。
描述:创建临时组织时会看到此错误使用形状。
ERRORrunningorgcreatescratch:Afatalsignuperroroccurred.Pleasetryagain.Ifyoustillseethiserror,contactSalesforceSupportforassistance.解决方法:使用命令生成新形状,然后重试。orgcreateshape
描述:当您从形状创建临时组织时启用FieldService,排班的状态字段选择列表为空。
解决方法:使用禁用了现场服务的组织结构,然后在临时组织定义文件设置中启用FieldService。
{"orgName":"Acme","sourceOrg":"00DB1230000Ifx5","settings":{"fieldServiceSettings":{"fieldServiceOrgPref":true}}}组织形状功能仅接受15个字符的组织ID描述:在以下情况下,您只能使用15个字符的组织ID为Scratch组织启用组织形态,并在临时组织中指定源组织定义文件。组织ID的长度通常为18个字符,这是命令显示的内容。orglist
解决方法:仅使用标准的前15个字符使用“组织形状”功能时的18个字符的组织ID。
轻松启动临时组织并直接从命令行打开它。
在创建临时组织之前:
您可以为不同的功能创建临时组织,例如用于功能开发、开发包含命名空间的包,或用于用户验收测试。
删除开发人员中心组织中任何不需要或出现故障的暂存组织,或通过命令行,这样它们就不会计入您的活动临时组织分配。
指示临时定义文件相对于当前目录的路径。为示例存储库和新项目,此文件位于config目录中。
使用临时组织定义文件,给临时组织一个别名,并指明这个临时组织是默认值。使用标志指定您的DevHub组织的用户名或别名;如果未指定此标志,则该命令将使用默认DevHub。
sforgcreatescratch--definition-fileconfig/project-scratch-def.json--aliasMyScratchOrg--set-default--target-dev-hubMyHub你可以通过指定相应的标志,当您运行.此技术允许多个用户或持续集成作业共享基本定义文件,然后在运行命令时自定义选项。这example覆盖adminEmail和edition选项。orgcreatescratch
sforgcreatescratch--editiondeveloper这示例从具有指定ID的组织形状创建临时组织。
sforgcreatescratch--editiondeveloper--async这command显示传递给该命令的作业ID。使用此命令还可以恢复临时组织创建,该超时。orgresumescratch
sforgresumescratch--job-id2SRB0000CSqdJOAT创造具有源代码跟踪功能的临时组织禁用。
sforgcreatescratch--definition-fileconfig/project-scratch-def.json--no-track-source如果临时组织创建成功执行时,命令显示有关后台进程的运行信息,例如发送请求、部署组织设置等。命令完成后,它会显示两个重要的信息片段:组织ID和用户名。orgcreatescratch
sforgopen--target-orgMyScratchOrg疑难解答提示如果create命令遇到错误,则并不总是清楚临时组织是否创建。在DevHub组织上发出此命令,查看它是否返回暂存组织ID。这证实了今天创建并由您拥有的临时组织的存在:
sfdataquery--query"SELECTID,Name,StatusFROMScratchOrgInfoWHERECreatedBy.Name='
sfdataquery--query"SELECTID,Name,StatusFROMScratchOrgInfoWHERECreatedBy.Name='JaneDoe'ANDCreatedDate=TODAY"--target-orgDevHub选择临时组织的Salesforce版本在Salesforce版本转换期间,您可以指定版本(预览或previous)创建临时组织时。
在每个主要的Salesforce版本中,您都可以在您的Scratch组织和沙盒,用于在生产之前测试新的自定义和功能org已升级。此窗口称为Salesforce预览,并在即将发布的版本称为预览暂存组织。
通常,创建与开发人员中心版本相同的临时组织。然而在每年发生三次的主要Salesforce版本过渡期间,您可以选择Salesforce发行版或,具体取决于DevHub的版本。PreviewPrevious
若要在即将发布的版本中试用新功能,不再需要创建试用版DevHub在即将推出的版本上创建预览暂存组织。您可以使用现有的Dev中心,包括您现有的临时组织、活动和每日限制。
由于“以前”和“预览”是相对术语,因此开发人员中心组织版本在发布转换期间决定了它们的相对重要性。内容如下当您尝试使用其中一个发布值创建临时组织时发生。
如果未指定发布值,则临时组织版本与DevHub组织。
您可以在临时组织定义文件中指定发布版本,也可以直接在命令行。您在命令行上设置的任何值都会覆盖您在临时定义文件。
请务必将设置为与临时组织匹配版本。apiVersion
要为所有DX项目全局设置它:
sfconfigsetorg-api-version59.0--global要在命令行上设置它,请执行以下操作:
SF_ORG_API_VERSION=59.0sforgcreatescratch--definition-fileconfig/project-scratch-def.json--aliasPreviewOrg--target-dev-hubDevHub--releasepreview注意
无论开发人员中心的发布版本如何,都可以使用临时组织功能,这些功能可以在您创建的临时文件的发行版(预览版或更早版本)中可用。
更改源后,您可以通过部署将更改同步到临时组织使用命令更改的源。
projectdeploystart
首次将源部署到组织时,该文件的包目录中的所有源都将部署到临时组织以完成初始设置。此时,SalesforceCLI在文件系统和远程在临时组织中,以确定哪些元数据已更改。让我们假设您将一个Apex类部署到一个临时组织,然后决定修改临时组织,而不是本地文件系统。SalesforceCLI跟踪哪个本地包创建类的目录,因此当您将其检索回项目时,它知道在哪里它属于。sfdx-project.json
若要运行本主题其余部分中所述的部署命令,请首先打开终端(macOS和Linux)或命令窗口(Windows),然后切换到您的SalesforceDX项目目录。
在将源部署到组织之前,您可以预览将要部署的组件。潜在的冲突,以及通过执行忽略的文件。例如,此命令显示将项目中的所有源代码部署到别名为的临时组织。projectdeploypreviewMyGroovyScratchOrg
sfprojectdeploypreview--manifestpackage.xml--target-orgtest-am6xqkossaq8@example.com提示
您可以使用为组织创建别名。要显示您创建的所有临时文件的用户名和别名,跑。aliassetorglist
要将更改的本地源部署到默认临时组织,请运行此命令。
sfprojectdeploystart该命令显示它部署的内容。此示例输出显示了Apex类的部署。PropertyController
Deployingv58.0metadatatotest-am6xqkossaq8@example.comusingthev59.0SOAPAPI.DeployID:0Af7e00001WsuoSCARStatus:Succeeded|████████████████████████████████████████|1/1Components(Errors:0)|0/0Tests(Errors:0)DeployedSource=====================================================================================================|StateNameTypePath|────────────────────────────────────────────────────────────────────────────────────────────────|ChangedPropertyControllerApexClassforce-app/main/default/classes/PropertyController.cls|ChangedPropertyControllerApexClassforce-app/main/default/classes/PropertyController.cls-meta.xml使用标志来定位要部署的源,而不是更改的所有内容。
您可能有一些不想在项目和项目之间同步的文件Scratch组织。将这些文件添加到文件中因此,deploy命令会忽略它们。.forceignore
如果运行,并出现警告,SalesforceCLI不会部署源。例如,如果项目出现以下情况,则可能会出现警告源正在使用过时的版本。如果要忽略这些警告并部署源到Scratch组织,运行:projectdeploystart
sfprojectdeploystart--ignore-warnings提示
尽管可以使用此选项成功部署,但我们建议解决源文件中的问题。例如,如果您看到一条警告,因为Visualforce页面使用的版本已过时,请考虑将您的页面更新为当前版本Visualforce版本。这样,您就可以利用新功能和性能改进。
在开发过程中,您可以在文件系统中本地更改文件并更改临时组织直接使用Salesforce提供的构建器和编辑器。通常,这些变化不会引起冲突并涉及唯一文件。此外,该命令不处理合并。项目和临时组织旨在由一个开发人员使用。projectdeploystart
但是,如果运行,并且检测到冲突时,SalesforceCLI会终止操作,并且不会部署源。相反,它显示冲突信息,例如此示例输出。这PropertyControllerApex类已在本地和组织中更改,但更改处于冲突之中。projectdeploystart
sfprojectretrievestart--ignore-conflicts从Scratch组织检索到您的项目的源代码执行初始部署后,将在本地文件系统之间跟踪更改和你的Scratch组织。如果更改临时组织中的元数据,请将这些更改检索到您的本地项目,以保持两者同步。
要运行本主题其余部分中描述的检索命令,请首先打开终端(macOS和Linux)或命令窗口(Windows),然后切换到您的SalesforceDX项目目录。
在从组织中检索元数据之前,您可以预览将检索到的潜在冲突,以及通过执行来忽略的文件。例如,以下命令显示从具有别名的临时组织检索本地项目的更改元数据的预览。projectretrievepreviewMyGroovyScratchOrg
sfprojectretrievepreview--target-orgMyGroovyScratchOrg提示
您可以使用为组织创建别名。显示您拥有的所有临时文件的用户名和别名创建,运行.aliassetorglist
要从默认临时组织检索到项目中更改的源代码,请运行以下命令命令
sfprojectretrievestart该命令显示它检索到的内容以及它在本地SalesforceDX项目中的位置说。此示例输出显示Apex类和权限集到目录中的检索。DiscountSpecialDiscountPermSetforce-app/main/default
Preparingretrieverequest...Preparingretrieverequest...SucceededRetrievedSource====================================================================================================================|StateNameTypePath|───────────────────────────────────────────────────────────────────────────────────────────────────────────────|CreatedDiscountSpecialApexClassforce-app/main/default/classes/DiscountSpecial.cls|CreatedDiscountSpecialApexClassforce-app/main/default/classes/DiscountSpecial.cls-meta.xml|CreatedDiscountPermSetPermissionSetforce-app/main/default/permissionsets/DiscountPermSet.permissionset-meta.xml使用标志来定位要检索的源,而不是所有内容改变。
您可能有一些不想在项目和项目之间同步的文件Scratch组织。将这些文件添加到文件中,以便retrieve命令忽略它们。.forceignore
在开发过程中,您可以在文件系统中本地更改文件并更改临时组织使用构建器和编辑器。通常,这些更改不会导致冲突,并且涉及唯一文件。此外,该命令不处理合并。项目和临时组织旨在由一个开发人员使用。projectretrievestart
但是,如果运行,并且检测到冲突时,SalesforceCLI会终止操作,并且不会检索源。相反,它显示冲突信息,例如此示例输出。这PropertyControllerApex类已在本地和组织中更改,但更改是相互冲突的。projectretrievestart
sfprojectdeploystart--ignore-conflictsScratch组织用户默认情况下,临时组织包括一个管理员用户。管理员用户通常为足以满足您的所有测试需求。但有时您需要其他用户使用不同的用户进行测试配置文件和权限集。
您可以通过在浏览器中打开临时组织并导航到“用户”页面来创建用户在设置中。您还可以使用CLI命令,以便轻松地将任务集成到持续集成作业中。orgcreateuser
尽管临时组织被设计为供一个开发人员使用,但有时您需要其他用户使用不同的配置文件和权限集进行测试。
sforgcreateuser--set-aliasqa-user--definition-fileconfig/user-def.json使用该命令查看与临时组织关联的用户列表。左侧的(A)标识在创建临时组织时创建。orglistusers
sforglistusers--target-orgmy-scratch===Usersinorg00D80000PhAkUAKDefaultAliasUsernameProfileNameUserId───────────────────────────────────────────────────────────────────────────────────────────────(A)my-scratchtest-st9thgoyyyq3@example.comSystemAdministrator0058I002inzvQAAqa-user1690397809_test-st9thgoyyyq3@example.comStandardUser0058I002inzvQAA使用命令显示有关用户的详细信息。orgdisplayuser
用户定义文件使用JSON格式,可以包含任何Salesforce用户sObject字段和这些特定于SalesforceDX的选项。
用户定义文件选项不区分大小写。但是,我们建议您使用较低的驼峰大小写用于SalesforceDX特定选项,驼峰大小写用于用户sObject领域。此格式与其他SalesforceDX定义文件一致。
此用户定义文件包括一些用户sObject字段和三个SalesforceDX选项(、和)。profileNamepermsetsgeneratePassword
sforgcreateuser--set-aliasqa-user--definition-fileconfig/user-def.json--target-orgmy-scratch您可以通过将用户定义文件中的选项指定为名称/值对来覆盖该选项命令行。此技术允许多个用户或持续集成作业共享一个基本定义文件,然后在运行命令时自定义选项。此示例覆盖用户名、权限集列表以及是否生成密码。
sforgcreateuser--set-aliasqa-user--definition-fileconfig/user-def.jsonpermsets="Dreamy,Cloudy"Username=tester345@sfdx.orggeneratePassword=false--target-orgmy-scratch您还可以在命令行中添加不在用户定义文件中的选项。这example添加City选项。
sforgcreateuser--set-aliasqa-user--definition-fileconfig/user-def.jsonCity=Oakland--target-orgmy-scratch为Scratch组织用户生成或更改密码默认情况下,新的临时组织包含一个没有密码的管理员用户。使用CLI命令生成或更改此管理员用户的密码。设置后,无法取消设置密码,只能更改密码它。
orggeneratepassword您还可以使用该标志来为使用该命令在本地创建的临时组织用户生成密码。您不能将该命令用于您在带有设置的scratch组织。
如果您使用SalesforceUI更改临时组织用户的密码,则新密码不会显示在输出中。orgdisplayuser
在DevHub组织中,ActiveScratchOrg标准对象表示临时组织目前正在使用中。ScratchOrgInfo标准对象表示用于创建临时组织并提供历史背景。
如果临时组织创建失败,系统会生成一个错误代码,以帮助您确定原因。其中一些错误由SignupRequestAPI生成,并应用于所有组织注册。
login.salesforce.comsfdcLoginUrl
JWT流程需要数字证书(也称为数字签名)来对JWT请求。您可以使用自己的证书,也可以使用OpenSSL。
如果您的组织配置了高确定性(升级)身份验证时,Salesforce会提示用户验证其身份。此验证进程意味着您不能将JWT流程和SalesforceCLI用于无头认证。
orgloginjwt
在开始之前,我们假设:
此过程会生成两个文件:
现在创建一个自定义连接的应用程序,然后将数字证书上传到其中。
orgloginweborgloginjwt
标记为JWT必需的步骤仅在创建连接的应用程序与命令一起使用。在在这种情况下,您还需要一个包含数字证书的文件,例如.如果要创建连接的应用程序与.orgloginjwtserver.crtorgloginweb
如果对刷新令牌已过期的组织运行CLI命令,则会收到错误。为例:
orglistorgloginweborgloginjwt
SalesforceCLI通过以下方式自动处理过期的访问令牌引用刷新令牌。
orglogin几乎所有具有该标志的CLI命令都接受访问令牌。唯一的例外是.
SalesforceCLI不会将访问令牌存储在其内部文件中。它仅用于此目的CLI命令运行。
为了帮助防止安全漏洞,输出不包括组织的客户端密码或刷新令牌。orgdisplay
注销组织后访问组织的唯一方法是使用密码。默认情况下,新的临时组织包含一个没有密码的管理员。因此,要避免失去对临时组织的访问权限,请为临时组织的至少一个用户设置密码,如果您想要在注销后再次访问它。如果您不想再次访问临时组织,删除它,而不是注销它。orgdeletescratch
要注销组织,请从终端运行(macOS和Linux)或命令提示符(Windows)。此示例使用别名注销。orglogoutmy-hub-org
启动“元数据覆盖率”报告以确定临时组织支持的元数据源跟踪目的。元数据覆盖率报告是跨多个渠道的元数据覆盖。这些渠道包括元数据API、临时组织源跟踪、解锁包、第二代托管包、经典托管包包裹等。
查看“元数据覆盖范围”报告。
有关更多信息,请参阅《元数据API开发人员指南》中的元数据类型。