所以我对手动运行ant和迁移Salesforce元数据很有经验。
现在,我们正在尝试使用Azure Devops创建CLI解决方案。到目前为止,我们已经有了使用ant的存储库和管道。我正在观看视频:https://www.youtube.com/watch?v=KPGaVO72I1s。我认为不需要提供package.xml文件,因为这是CLI的原因:自动构建,为什么要手动创建该软件包?链接的视频中也没有package.xml。
我运行它时遇到两个错误:
** ll组件故障: 1. package.xml-错误:未找到package.xml ***********部署失败*************
也
[antlib:com.salesforce]无法从资源com / salesforce / antlib.xml加载定义。找不到。
我现在非常困惑-为什么它仍在寻找软件包xml? 在这里:
<project name="deployTest" default="deployCode" basedir="." xmlns:sf="antlib:com.salesforce">
<property file="build.properties"/>
<property environment="env"/>
<property name="ant.jar" value="ant-salesforce.jar" />
<property name="sf.password" value="${salesforce.password}" />
<property name="sf.username" value="${salesforce.username}" />
<property name="sf.serverurl" value="${salesforce.serverurl}" />
<target name="retrieveCode">
<sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="src" unpackaged="package/package.xml"/>
</target>
enter code here
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*jar"/>
</path>
<taskdef resource="com/salesforce/antlib.xml"
uri="antlib:com.salesforce" >
<classpath>
<pathelement location ="${ant.jar}" />
</classpath>
</taskdef>
<target name="deployCode">
<sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployroot="." checkonly="true"></sf:deploy>
</target>
</project>
任何想法都非常受欢迎!
劳伦斯
答案 0 :(得分:0)
如果要通过Metadata API进行部署,则需要一个package.xml
清单-句号。这与您的CI系统(Azure DevOps)本身无关。它是Salesforce平台API所必需的,因此是Metadata API客户端的那些工具(包括Ant)也需要。
唯一不需要package.xml
的情况是,如果您要推送Salesforce DX源代码(例如,通过sfdx force:source:push
到草稿组织),或者使用可从您的源目录自动生成或刷新package.xml
的构建工具。 CumulusCI(Salesforce.org的免费开放源代码构建工具)可以为您自动更新package.xml
。 (免责声明:我在构建CumulusCI的团队中)。