custom-build/MRPP_CustomBuild.xml (14 lines of code) (raw):
<?xml version="1.0" encoding="UTF-8"?>
<meta-runner name="Custom Build">
<description>Triggers a build with custom parameters</description>
<settings>
<parameters>
<param name="system.buildConf.id" value="" spec="text description='Identifier of a build configuration where to trigger a build' display='normal' label='Build configuration ID:' validationMode='not_empty'" />
<param name="system.custom.params" value="" spec="text description='New-line delimited custom build parameters in the form: <name>=<value>' display='normal' label='Custom parameters:' regexp='(|[^=\s|]+=|[^=\s|]+\s*)*' validationMessage='Expected new-line delimited <name>=<value> pairs' validationMode='regex' allowEmpty='true'" />
<param name="system.username" value="" spec="text description='Username of a user who triggers build' display='normal' label='Username:' validationMode='not_empty'" />
<param name="system.password" value="" spec="password description='Password of a user who triggers build' display='normal' label='Password:'" />
</parameters>
<build-runners>
<runner name="" type="Ant">
<parameters>
<param name="build-file"><![CDATA[<project name="Custom build">
<taskdef name="http" classname="org.missinglink.ant.task.http.HttpClientTask"/>
<property name="reqParams.file" location="${teamcity.build.tempDir}/rawParams.txt"/>
<target name="prepare-params">
<echo file="${reqParams.file}" message="${custom.params}"/>
<replaceregexp file="${reqParams.file}"
match="([^=]+)=([^=]+)"
replace="name=\1&value=\2"
byline="true"
/>
<replaceregexp file="${reqParams.file}"
match="[\r\n]+"
replace="&"
flags="gm"
/>
<echo file="${reqParams.file}" append="true">&add2Queue=${buildConf.id}</echo>
</target>
<target name="add2Queue" depends="prepare-params">
<http url="%teamcity.serverUrl%/httpAuth/action.html"
method="POST"
expected="200"
printrequest="true">
<credentials username="${username}" password="${password}"/>
<entity file="${reqParams.file}" binary="false"/>
</http>
</target>
</project>]]></param>
<param name="build-file-path" value="build.xml" />
<param name="target" value="add2Queue" />
<param name="runnerArgs" value="-lib %teamcity.tool.ant-net-tasks%" />
<param name="teamcity.coverage.emma.include.source" value="true" />
<param name="teamcity.coverage.emma.instr.parameters" value="-ix -*Test*" />
<param name="teamcity.coverage.idea.includePatterns" value="*" />
<param name="teamcity.step.mode" value="default" />
<param name="use-custom-build-file" value="true" />
</parameters>
</runner>
</build-runners>
<requirements />
</settings>
</meta-runner>