blob: 967166953b3694d34cab021282aecbba598bbd41 [file] [log] [blame]
david_williams39c5f652008-01-02 07:08:39 +00001<project
2 name="cc_project_build"
3 default="Build"
4 basedir=".">
david_williams42f9b242006-11-27 18:45:14 +00005
david_williams39c5f652008-01-02 07:08:39 +00006 <!-- = = = standard properties pattern = = = -->
7 <!--
8 Note to be cross-platform, "environment variables" are only appropriate for
david_williams42f9b242006-11-27 18:45:14 +00009 some variables, e.g. ones we set, since properties are case sensitive, even if
10 the environment variables on your operating system are not, e.g. it will
11 be ${env.Path} not ${env.PATH} on Windows -->
david_williams39c5f652008-01-02 07:08:39 +000012 <property
13 environment="env" />
david_williams70831b52007-10-05 03:27:45 +000014
david_williams39c5f652008-01-02 07:08:39 +000015 <!--
16 Let users override standard properties, if desired.
17 If directory, file, or some properties do not exist,
18 then standard properties will be used.
david_williams42f9b242006-11-27 18:45:14 +000019 -->
david_williams39c5f652008-01-02 07:08:39 +000020 <property
21 file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties" />
david_williams42f9b242006-11-27 18:45:14 +000022
david_williams39c5f652008-01-02 07:08:39 +000023 <!-- = = = end standard properties pattern = = = -->
david_williams42f9b242006-11-27 18:45:14 +000024
david_williams39c5f652008-01-02 07:08:39 +000025 <!-- if not otherwise set, build clean -->
26 <property
27 name="build.clean"
28 value="true" />
david_williams70831b52007-10-05 03:27:45 +000029
david_williams0d90cde2008-01-05 05:59:43 +000030 <!-- set main builder file name, based on distribution, buildBranch and build type -->
31 <property
32 name="builder"
33 value="${env.PROJECT_BUILDERS}/${projectname}/${env.RELENG_BUILDER}/build.xml" />
34
david_williams39c5f652008-01-02 07:08:39 +000035 <!--
david_williams320c0332008-01-05 05:55:44 +000036 If not set yet, by "caller", then fail fast.
david_williams39c5f652008-01-02 07:08:39 +000037 Normally this is literally the project name from CruiseControl, but
david_williams320c0332008-01-05 05:55:44 +000038 if running "standalone", it would have to be set to something similar
39 to one of the cc_config project name, such as wtp-R3.0-I.
david_williams42f9b242006-11-27 18:45:14 +000040 -->
david_williams320c0332008-01-05 05:55:44 +000041 <fail
david_williams958e5832008-02-13 05:08:44 +000042 unless="projectname"
43 message="projectname must be set by caller" />
david_williams42f9b242006-11-27 18:45:14 +000044
david_williams39c5f652008-01-02 07:08:39 +000045 <!-- if not otherwise set, the following are good default values -->
46 <property
47 name="mapVersionTag"
48 value="HEAD" />
david_williams1e71b282008-03-10 10:12:40 +000049
50 <!-- main -->
david_williams39c5f652008-01-02 07:08:39 +000051 <target
52 name="Build">
david_williams320c0332008-01-05 05:55:44 +000053 <antcall
54 target="doBuildPhase" />
55 <antcall
56 target="doTestPhase" />
david_williams958e5832008-02-13 05:08:44 +000057 <antcall
58 target="checkIfFailedTests" />
david_williams320c0332008-01-05 05:55:44 +000059 </target>
60 <target
david_williams958e5832008-02-13 05:08:44 +000061 name="checkIfFailedTests"
62 depends="checkFailedFile"
63 if="failedMessage">
david_williamsa0c95f72008-02-13 05:14:14 +000064 <fail
david_williamsb9f84052008-02-13 05:18:54 +000065 message="Build failed due to failing JUnits in the following test plugin(s):${line.separator}${failedMessage}" />
david_williams958e5832008-02-13 05:08:44 +000066 </target>
david_williams1e71b282008-03-10 10:12:40 +000067
david_williamsa0c95f72008-02-13 05:14:14 +000068 <target
69 name="checkFailedFile">
70 <loadresource
71 property="failedMessage"
72 quiet="true"
73 failonerror="false">
74 <file
75 file="${env.PROJECT_PROJECTS}/${projectname}/workdir/junitFailureList.log" />
76 </loadresource>
77 </target>
david_williams1e71b282008-03-10 10:12:40 +000078
79 <!--
80 1) clean build if build.clean s set to true
81 2) retreive fresh files from CVS
82 3) build and upload results
83 -->
84 <target
david_williamsd2fa7ee2008-02-03 21:32:17 +000085 name="doBuildPhase">
david_williams39c5f652008-01-02 07:08:39 +000086 <antcall
87 target="doCleanBuild" />
david_williams70831b52007-10-05 03:27:45 +000088
david_williams320c0332008-01-05 05:55:44 +000089 <!-- and create preliminary download site files -->
david_williams39c5f652008-01-02 07:08:39 +000090 <ant
91 antfile="${builder}"
92 target="site" />
david_williams320c0332008-01-05 05:55:44 +000093 <!-- upload what we have so far -->
david_williams39c5f652008-01-02 07:08:39 +000094 <ant
95 antfile="${builder}"
96 target="upload" />
david_williams39c5f652008-01-02 07:08:39 +000097 </target>
98 <target
99 name="doCleanBuild"
100 unless="skipCleanBuild">
101 <!-- clean previous build -->
102 <antcall
103 target="clean" />
david_williams39c5f652008-01-02 07:08:39 +0000104 <!-- check out fresh set of appropriate files for the builder -->
105 <ant
106 antfile="checkout.xml" />
david_williams39c5f652008-01-02 07:08:39 +0000107 <!-- build and create preliminary download site files -->
108 <ant
109 antfile="${builder}"
110 target="build" />
111 </target>
david_williams320c0332008-01-05 05:55:44 +0000112
113 <!-- test phase runs tests, creates test summary files, and uploads results -->
david_williams39c5f652008-01-02 07:08:39 +0000114 <target
115 name="doTestPhase"
116 unless="skipUnitTests">
david_williamsd84c2202008-01-05 06:45:17 +0000117 <delete
118 dir="${env.PROJECT_TESTS}/${projectname}"
119 failonerror="false" />
david_williams39c5f652008-01-02 07:08:39 +0000120 <ant
121 antfile="${builder}"
122 target="test" />
123 <ant
124 antfile="${builder}"
125 target="site" />
david_williams39c5f652008-01-02 07:08:39 +0000126 <ant
127 antfile="${builder}"
128 target="upload" />
129 </target>
david_williams320c0332008-01-05 05:55:44 +0000130
131 <!-- clean task -->
david_williams39c5f652008-01-02 07:08:39 +0000132 <target
133 name="clean"
134 depends="check.clean"
135 if="doClean">
136 <delete
david_williams320c0332008-01-05 05:55:44 +0000137 dir="${env.PROJECT_PROJECTS}/${projectname}"
david_williams39c5f652008-01-02 07:08:39 +0000138 failonerror="false" />
139 <delete
david_williams320c0332008-01-05 05:55:44 +0000140 dir="${env.PROJECT_TESTS}/${projectname}"
141 failonerror="false" />
david_williams8f7802c2008-01-05 09:09:47 +0000142 <!-- deleting ant working will be complicated, since sometimes same as releng.control -->
143 <!--
david_williams320c0332008-01-05 05:55:44 +0000144 <delete
145 dir="${env.ANT_WORKING}"
david_williams39c5f652008-01-02 07:08:39 +0000146 failonerror="false" />
david_williams8f7802c2008-01-05 09:09:47 +0000147 -->
david_williams39c5f652008-01-02 07:08:39 +0000148 </target>
149
david_williams1e71b282008-03-10 10:12:40 +0000150 <!-- if build.clean is true, or does not exist, set doClean to true -->
david_williams39c5f652008-01-02 07:08:39 +0000151 <target
152 name="check.clean">
153 <condition
154 property="doClean">
155 <or>
156 <not>
157 <isset
158 property="build.clean" />
159 </not>
160 <equals
161 arg1="${build.clean}"
162 arg2="true" />
163 </or>
164 </condition>
165 </target>
166</project>