Ant 构建管道在 Azure DevOps 中失败

问题描述 投票:0回答:1

我正在尝试在 Azure Devops 中运行管道,但构建总是失败并出现以下错误属性 salesforce.password 被循环定义。

这是我创建的管道:

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- dev

pool:
  vmImage: ubuntu-latest

steps:
- task: Ant@1
  inputs:
    buildFile: 'build/build.xml'
    options: '-Dsalesforce.password=${salesforce.password} -Dsalesforce.username=${salesforce.username} -Dsalesforce.loginurl=${salesforce.loginurl} -Dsalesforce.testLevel=${salesforce.testLevel}'
    targets: 'deployCheckOnly'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    javaHomeOption: 'JDKVersion

所有值都作为变量添加到 Azure 中

这是build.xml文件:

<project name="Sample usage of Salesforce Ant tasks" default="deploy" basedir="." xmlns:sf="antlib:com.salesforce">

    <property file="build.properties"/>
    <property environment="env"/>
    <property name="ant.jar" value="ant-salesforce.jar"/>
    <property name="sf.username" value="${salesforce.username}"/>
    <property name="sf.password" value="${salesforce.password}"/>
    <property name="sf.serverurl" value="${salesforce.serverurl}"/>
    <property name="sf.testlevel" value="${salesforce.testlevel}"/> 

    <!-- Setting default value for username, password and session id properties to empty string 
         so unset values are treated as empty. Without this, ant expressions such as ${sf.username}
         will be treated literally.
    -->
    <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.serverurl" value=""> <not> <isset property="sf.serverurl"/> </not> </condition>
    <condition property="sf.testlevel" value=""> <not> <isset property="sf.testlevel"/> </not> </condition>
    
    <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>
    
    <!-- Test out deploy and retrieve verbs for package 'mypkg' -->
    <target name="test">
      <!-- Upload the contents of the "mypkg" package -->
      <sf:deploy username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="mypkg" rollbackOnError="true"/>
      <mkdir dir="retrieveOutput"/>
      <!-- Retrieve the contents into another directory -->
      <sf:retrieve username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrieveOutput" packageNames="MyPkg"/>
    </target>
    
    <!-- Shows deploying code and running tests only within the org namespace -->
    <target name="deployCodeRunLocalTests">
      <sf:deploy username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="../force-app" rollbackOnError="true"  testlevel="RunLocalTests"/>
    </target>
</project>`
azure-devops deployment ant yaml salesforce
1个回答
0
投票

如果您尝试传递天蓝色构建变量,则必须更新此:

options: '-Dsalesforce.password=${salesforce.password} -Dsalesforce.username=${salesforce.username} -Dsalesforce.loginurl=${salesforce.loginurl} -Dsalesforce.testLevel=${salesforce.testLevel}'

options: '-Dsalesforce.password=$(salesforce.password) -Dsalesforce.username=$(salesforce.username) -Dsalesforce.loginurl=$(salesforce.loginurl) -Dsalesforce.testLevel=$(salesforce.testLevel)'

https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#runtime-expression-syntax

© www.soinside.com 2019 - 2024. All rights reserved.