Author: nickboldt
Date: 2011-01-20 14:02:37 -0500 (Thu, 20 Jan 2011)
New Revision: 28441
Modified:
trunk/build/aggregate/site/build.xml
Log:
implement collect.metadata and test.collect.metadata tasks to fetch metadata from upstream
jobs' staging output
Modified: trunk/build/aggregate/site/build.xml
===================================================================
--- trunk/build/aggregate/site/build.xml 2011-01-20 19:02:19 UTC (rev 28440)
+++ trunk/build/aggregate/site/build.xml 2011-01-20 19:02:37 UTC (rev 28441)
@@ -395,7 +395,6 @@
<param name="inputRepo3"
value="http://download.jboss.org/jbosstools/builds/staging/jbosstool...
/>
<param name="inputRepo4"
value="http://download.jboss.org/jbosstools/builds/staging/jbosstool...
/>
<param name="inputRepo5"
value="http://download.jboss.org/jbosstools/builds/staging/jbosstool...
/>
-
</antcall>
</target>
@@ -415,18 +414,152 @@
<delete dir="${aggregate.zips.dir}" quiet="true" />
</target>
- <target name="collect.metadata" description="collect svn revision
files + other metadata (JOB_NAME, BUILD_ID, BUILD_NUMBER, WORKSPACE,
HUDSON_SLAVE)">
- <!-- TODO: write this method -->
+ <target name="collect.metadata" description="collect svn revision info
+ other metadata (JOB_NAME, BUILD_ID, BUILD_NUMBER, WORKSPACE, HUDSON_SLAVE)">
+ <property name="aggregate.zips.dir" value="${output.dir}/zips"
/>
+ <!-- for all build.properties.txt files in zips/ folder -->
+ <for param="propsfile">
+ <path>
+ <fileset dir="${aggregate.zips.dir}"
includes="*.build.properties.txt, **/*.build.properties.txt" />
+ </path>
+ <sequential>
+ <!-- load properties file using a prefix which relates to the associated prop file
-->
+ <propertyregex override="true" property="prefix"
defaultvalue="" input="@{propsfile}"
regexp=".+/([^/]+\.build\.properties)\.txt" replace="\1" />
+ <echo level="verbose">Read ${prefix} from @{propsfile}</echo>
+
+ <property file="@{propsfile}" prefix="${prefix}" />
+
+ <!-- now load SVN revs -->
+ <propertyregex override="true" property="svnrevTXT"
defaultvalue="" input="@{propsfile}"
regexp="\.build\.properties\.txt" replace=".SVN_REVISION.txt" />
+ <propertyregex override="true" property="svnrevXML"
defaultvalue="" input="@{propsfile}"
regexp="\.build\.properties\.txt" replace=".SVN_REVISION.xml" />
+ <if>
+ <available file="${svnrevXML}" type="file" />
+ <then>
+ <!-- XML way: load into .revision.module and .revision.revision -->
+ <xmlproperty file="${svnrevXML}" collapseAttributes="true"
prefix="${prefix}" keeproot="false" />
+ <!-- purge the "<changeSet><kind>" entry if present
-->
+ <if>
+ <isset property="${prefix}.kind" />
+ <then>
+ <var name="${prefix}.kind" unset="true" />
+ </then>
+ </if>
+
+ <!-- TXT way: load into .SVN_REVISION -->
+ <propertycopy from="${prefix}.revision.module"
property="temprm.all" override="true" />
+ <propertycopy from="${prefix}.revision.revision"
property="temprr.all" override="true" />
+ <var name="i" value="0" />
+ <for list="${temprm.all}" delimiter=", "
param="module">
+ <sequential>
+ <math result="i" operand1="1" operation="+"
operand2="${i}" datatype="int" />
+ <var name="j" value="0" />
+ <for list="${temprr.all}" delimiter=", "
param="revision">
+ <sequential>
+ <math result="j" operand1="1" operation="+"
operand2="${j}" datatype="int" />
+ <if>
+ <equals arg1="${i}" arg2="${j}" />
+ <then>
+ <var name="temprr" value="@{revision}" />
+ <if>
+ <isset property="${prefix}.SVN_REVISION" />
+ <then>
+ <propertycopy from="${prefix}.SVN_REVISION"
property="temp.all" override="true" />
+ <var name="${prefix}.SVN_REVISION"
value="${temp.all},@{module}@${temprr}" />
+ <var name="temp.all" unset="true" />
+ </then>
+ <else>
+ <var name="${prefix}.SVN_REVISION"
value="@{module}@${temprr}" />
+ </else>
+ </if>
+ <var name="temprr" unset="true" />
+ </then>
+ </if>
+ </sequential>
+ </for>
+ <var name="j" unset="true" />
+ </sequential>
+ </for>
+ <var name="i" unset="true" />
+ <var name="temprm.all" unset="true" />
+ <var name="temprr.all" unset="true" />
+ </then>
+ <elseif>
+ <available file="${svnrevTXT}" type="file" />
+ <then>
+ <!-- TXT way: load into .SVN_REVISION -->
+ <loadfile property="${prefix}.SVN_REVISION"
srcFile="${svnrevTXT}" />
+ <propertycopy from="${prefix}.SVN_REVISION" property="temp"
/>
+ <propertyregex override="true" property="temp"
defaultvalue="${temp}" input="${temp}" regexp="[ \n\t]+"
replace="," />
+ <propertyregex override="true"
property="${prefix}.SVN_REVISION" defaultvalue="${temp}"
input="${temp}" regexp=",$" replace="" />
+
+ <!-- XML way: load into .revision.module and .revision.revision -->
+ <for list="${temp}" delimiter=","
param="pair">
+ <sequential>
+ <propertyregex override="true" property="temprm"
defaultvalue="@{pair}" input="@{pair}" regexp="(.+)(a)(.+)"
replace="\1" />
+ <propertyregex override="true" property="temprr"
defaultvalue="@{pair}" input="@{pair}" regexp="(.+)(a)(.+)"
replace="\2" />
+ <if>
+ <isset property="${prefix}.revision.module" />
+ <then>
+ <propertycopy from="${prefix}.revision.module"
property="temprm.all" override="true" />
+ <propertycopy from="${prefix}.revision.revision"
property="temprr.all" override="true" />
+ <var name="${prefix}.revision.module"
value="${temprm.all},${temprm}" />
+ <var name="${prefix}.revision.revision"
value="${temprr.all},${temprr}" />
+ <var name="temprm.all" unset="true" />
+ <var name="temprr.all" unset="true" />
+ </then>
+ <else>
+ <var name="${prefix}.revision.module" value="${temprm}"
/>
+ <var name="${prefix}.revision.revision"
value="${temprr}" />
+ </else>
+ </if>
+ <var name="temprm" unset="true" />
+ <var name="temprr" unset="true" />
+ </sequential>
+ </for>
+ <var name="temp" unset="true" />
+ </then>
+ </elseif>
+ </if>
+
+ <var name="prefix" unset="true" />
+ </sequential>
+
+ </for>
+ <for param="svnrevfile">
+ <path>
+ <fileset dir="${aggregate.zips.dir}" includes="*.SVN_REVISION.txt,
**/*.SVN_REVISION.txt" />
+ </path>
+ <sequential>
+ <!-- load properties file using a prefix which relates to the associated prop file
-->
+ <propertyregex override="true" property="prefix"
defaultvalue="" input="@{propsfile}"
regexp=".+/([^/]+\.build\.properties)\.txt" replace="\1" />
+ <echo level="verbose">Read ${prefix} from @{propsfile}</echo>
+
+ <property file="@{propsfile}" prefix="${prefix}" />
+
+ <var name="prefix" unset="true" />
+ </sequential>
+
+ </for>
+ <!-- dump properties to an XML file, filtering for only those properties we care
about -->
+ <echoproperties format="xml"
destfile="${aggregate.zips.dir}/allprops.xml">
+ <propertyset>
+ <propertyref regex=".*\.build\.properties" />
+ </propertyset>
+ </echoproperties>
+
</target>
+ <target name="test.collect.metadata" depends="init">
+ <property name="isTest" value="true" />
+ <antcall target="collect.metadata">
+ </antcall>
+ </target>
+
+ <!-- TODO: write this method -->
<target name="create.summary.file" description="create summary file
with list of generated files, sizes, and SVN revisions all linked and ordered by source
build job">
- <!-- TODO: write this method -->
</target>
- <target name="test.create.summary.file"
depends="test.collect.zips">
+ <target name="test.create.summary.file"
depends="test.collect.zips,test.collect.metadata">
<property name="isTest" value="true" />
- <antcall target="collect.metadata">
- </antcall>
<antcall target="create.summary.file">
</antcall>
</target>