使用 ant 迁移工具部署 Salesforce - 不使用 build.properties 文件

Salesforce deploy using ant migration tool - without using build.properties file

我想使用 Jenkins 环境变量作为凭据,如下面的代码所示,以指定 Salesforce 登录用户名和密码,并将其传递给 build.xml 文件这样我就可以使用 Ant 迁移工具将代码部署到 Salesforce 平台。如何做到这一点?

詹金斯文件:

environment
            {
                SERVICE_CREDS=credentials('salesforce-creds')

            }


    stages
    {

         stage('Deploy')
         {
            steps
            {
                echo "Deploying"

                bat 'ant -f ./build.xml CIDeploy'
            }   

         }
      }

build.xml:

<project basedir="." xmlns:sf="antlib:com.salesforce">

    <property environment="env"/>


   <condition property="sf.username" value=""> <not> <isset property="sf.username"/> </not> </condition>
   <condition property="sf.password" value=""> <not> <isset property="sf.password"/> </not> </condition>
   <condition property="sf.deployroot" value=""> <not> <isset property="sf.deployroot"/>  </not> </condition>




<!--##################################################### Deploy #########################################-->

<target name="CIDeploy">
<sf:deploy
username="$SERVICE_CREDS_USR"
password="$SERVICE_CREDS_PSW"
serverurl="https://login.salesforce.com"
deployRoot="src"/>

  </target>
</project>

即使在登录 login.salesforce.com 站点后,Jenkins 控制台仍显示错误消息:

BUILD FAILED

C:\Program Files (x86)\Jenkins\workspace\abc\build.xml:26: Invalid username, password, security token; or user locked out.

Ant 允许您使用 -D 通过命令行传递参数。检查 How do I pass an argument to an Ant task? 以获取一些灵感。

尝试从您的凭据中读取它们(抱歉,我配置 Jenkins 已经有一段时间了)并作为 ant -f ./build.xml -Dsf.username=joe@joe.com -Dsf.password=MySuperSecretPass!!!andOptionallySecurityToken 等传递。