Mercurial > hg > autobot
comparison README.txt @ 288:b6d0ce3cf430
dereference + repurposes (round1)
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Tue, 15 Apr 2014 21:27:32 -0700 |
parents | 268349e6c941 |
children |
comparison
equal
deleted
inserted
replaced
287:3a4b11d4fdf0 | 288:b6d0ce3cf430 |
---|---|
1 autobot | 1 autobot |
2 ======= | 2 ======= |
3 | 3 |
4 buildbot for the A*Team | 4 buildbot automation |
5 | 5 |
6 | 6 |
7 What is autobot? | 7 What is autobot? |
8 ---------------- | 8 ---------------- |
9 | 9 |
10 autobot is a continuous integration solution for the Automation and | 10 autobot is a continuous integration solution built as a front-end to |
11 Tools Team. We have a lot of software. We're really talented, so | 11 buildbot. We have a lot of software. We're talented, so |
12 usually it doesn't break. But we're not infalliable. Our robot ally, | 12 usually it doesn't break. But we're not infalliable. Our robot ally, |
13 autobot, is there to test things for us. Let's meet autobot! | 13 autobot, is there to test things for us. Let's meet autobot! |
14 | 14 |
15 | 15 |
16 Installing autobot | 16 Installing autobot |
17 ------------------ | 17 ------------------ |
18 | 18 |
19 autobot may be installed using the install script:: | 19 autobot may be installed using the install script:: |
20 | 20 |
21 curl http://k0s.org/mozilla/hg/autobot/raw-file/tip/INSTALL.sh | bash | 21 curl http://k0s.org/hg/autobot/raw-file/tip/INSTALL.sh | bash |
22 | 22 |
23 This will create a virtualenv and install autobot for development | 23 This will create a virtualenv and install autobot for development |
24 ($VIRTUAL_ENV/src/autobot). You can also use the script as | 24 ($VIRTUAL_ENV/src/autobot). You can also use the script as |
25 instructions and install it in the same manner as any other python package. | 25 instructions and install it in the same manner as any other python package. |
26 | 26 |
161 Currently, this is a dict with a single key, ``os``, but more may be | 161 Currently, this is a dict with a single key, ``os``, but more may be |
162 added as needed. As noted in the TODO below, ideally this would be | 162 added as needed. As noted in the TODO below, ideally this would be |
163 deprecated entirely by MozInfo but such is the interim solution. | 163 deprecated entirely by MozInfo but such is the interim solution. |
164 | 164 |
165 | 165 |
166 Projects | |
167 -------- | |
168 | |
169 What does autobot test? | |
170 | |
171 * mozbase [WORKING] | |
172 * logparser [WORKING] | |
173 * profilemanager [IN FLIGHT] | |
174 * mozmill [IN FLIGHT] | |
175 * talos [IN FLIGHT] | |
176 * firebug [TODO] | |
177 * jetpack [TODO] | |
178 | |
179 The projects are obtained from any factories in subdirectories of | |
180 ``autobot.projects`` (use | |
181 ``python -c 'from autobot import projects; print projects.__file__'`` | |
182 to see this location). | |
183 | |
184 | |
185 Sources | 166 Sources |
186 ------- | 167 ------- |
187 | 168 |
188 ``autobot.process.factory:SourceFactory`` is an abstract base class | 169 ``autobot.process.factory:SourceFactory`` is an abstract base class |
189 for specifying sources. Sources live as a member on the instance, named | 170 for specifying sources. Sources live as a member on the instance, named |
195 item being the URL of the source and the second item being the | 176 item being the URL of the source and the second item being the |
196 branch. If the branch is ``None`` or not specified, this is assumed | 177 branch. If the branch is ``None`` or not specified, this is assumed |
197 to equate to ``master`` for git or ``default`` for hg. However, you | 178 to equate to ``master`` for git or ``default`` for hg. However, you |
198 may also use a string in the form of ``URL#branch``. In addition, you | 179 may also use a string in the form of ``URL#branch``. In addition, you |
199 may specify a whitespace separated source, which ``SourceFactory`` | 180 may specify a whitespace separated source, which ``SourceFactory`` |
200 will split into a list of sources. So all of these translate into the | 181 will split into a list of sources. |
201 same source:: | |
202 | |
203 sources = {'hg': 'http://hg.mozilla.org/automation/logparser'} | |
204 | |
205 sources = {'hg': ['http://hg.mozilla.org/automation/logparser#default']} | |
206 | |
207 sources = {'hg': [('http://hg.mozilla.org/automation/logparser', None)] | |
208 | 182 |
209 The generated ``master.cfg`` polls for changes on the given source, | 183 The generated ``master.cfg`` polls for changes on the given source, |
210 then uses ``buildbot.schedulers.filter:Changefilter`` in conjunction | 184 then uses ``buildbot.schedulers.filter:Changefilter`` in conjunction |
211 with a ``Scheduler`` to trigger the appropriate builds. This is done | 185 with a ``Scheduler`` to trigger the appropriate builds. This is done |
212 by ``GitPoller`` and ``HgPoller`` in | 186 by ``GitPoller`` and ``HgPoller`` in |
259 treats *all* (for now, can be changed) sources as sources of python | 233 treats *all* (for now, can be changed) sources as sources of python |
260 packages. In addition to checking them out in | 234 packages. In addition to checking them out in |
261 ``%(virtualenv)s/src``, it will also install them (using | 235 ``%(virtualenv)s/src``, it will also install them (using |
262 ``%(python)s setup.py install``) | 236 ``%(python)s setup.py install``) |
263 | 237 |
264 * ``FirefoxDownloaderFactory``: downloads and unpacks a Firefox | |
265 bundle, using | |
266 `GetLatestTinderbox <http://hg.mozilla.org/automation/getlatest-tinderbox>`_ . | |
267 It also provides three properties: ``%(firefox_url)s``, | |
268 ``%(firefox_bundle)s``, and ``%(firefox)s`` -- the last, and most | |
269 interesting, being the absolute path to the Firefox executable. You | |
270 (currently) *must* pass a ``platform`` argument with | |
271 ``platform['os']`` set to "linux", "win", or "mac" in order for | |
272 ``FirefoxDownloaderFactory`` to figure out what to do with the thing | |
273 that it downloads (though see TODO, in the future it should/could | |
274 use MozInfo or guess the OS from the bundle extension...maybe). | |
275 Currently, mac is *NOT* supported, though its on my list of things | |
276 to do (I'd love advice/help!). | |
277 | |
278 See the ``autobot.process.factory`` file for more details. These | 238 See the ``autobot.process.factory`` file for more details. These |
279 classes are intended as mix-ins (not my favorite pattern, but it seems | 239 classes are intended as mix-ins (not my favorite pattern, but it seems |
280 to basically be what buildbot wants you to do). More work needs to be | 240 to basically be what buildbot wants you to do). More work needs to be |
281 done to provide for the breadth of use-cases, but what exists now is | 241 done to provide for the breadth of use-cases, but what exists now is |
282 considered a "good start" versus a "final form". More factories may | 242 considered a "good start" versus a "final form". More factories may |
287 ----------------------------- | 247 ----------------------------- |
288 | 248 |
289 Let me know! I'd like to make autobot a solution that works for all | 249 Let me know! I'd like to make autobot a solution that works for all |
290 stake-holders, and if you're reading this, that means you! | 250 stake-holders, and if you're reading this, that means you! |
291 | 251 |
292 jhammel@mozilla.com | 252 k0scist@gmail.com |
293 | 253 |
294 | 254 |
295 TODO | 255 TODO |
296 ---- | 256 ---- |
297 | 257 |
298 No software of any size is ever finished. Here are a few things I | 258 No software of any size is ever finished. Here are a few things I |
299 would like to add: | 259 would like to add: |
300 | 260 |
301 * post to autolog: | |
302 http://hg.mozilla.org/users/jgriffin_mozilla.com/mozautolog/ | |
303 Example code can be found at | |
304 http://hg.mozilla.org/services/services-central/file/9f29daaecbcc/testing/tps/tps/testrunner.py#l491 | |
305 add a 'server' keyword to the AutologTestGroup constructor, set to | |
306 10.2.76.100:9200, that will cause the data to be written to | |
307 brasstacks test server. you can omit the restserver keyword, it will | |
308 use the correct default if you skip it | |
309 | |
310 * email notifications | 261 * email notifications |
311 | |
312 * get FirefoxDownloaderFactory working on Mac with .dmg files! | |
313 | 262 |
314 * singular checkout of repos on slaves: the slaves should have a | 263 * singular checkout of repos on slaves: the slaves should have a |
315 singular master repo that is checked out once for each repo URL, | 264 singular master repo that is checked out once for each repo URL, |
316 branch pair. It is then updated as the slaves need and (e.g.) | 265 branch pair. It is then updated as the slaves need and (e.g.) |
317 cloned from there. This should effectively minimize fetch time. | 266 cloned from there. This should effectively minimize fetch time. |