From 91c39378e0ec7b10766c1afbcc2802464724b46b Mon Sep 17 00:00:00 2001 From: Don Garrett Date: Wed, 26 Jan 2011 11:53:26 -0800 Subject: [PATCH] Add buildbot functionality to cbuildbot. Change-Id: I1291d2f52122fe345c5927a7ef27e20d07e917d7 BUG=chromium-os:11229 TEST=(building locally, still in progress) Review URL: http://codereview.chromium.org/6317014 --- bin/cbuildbot.py | 59 +++++++++++++++++++++++++++++++++++++---- bin/cbuildbot_config.py | 7 +++++ 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/bin/cbuildbot.py b/bin/cbuildbot.py index 168d6212df..b760e5cefc 100755 --- a/bin/cbuildbot.py +++ b/bin/cbuildbot.py @@ -485,6 +485,42 @@ def _UprevPush(buildroot, tracking_branch, board, overlays, dryrun): RunCommand(cmd, cwd=cwd) +def _LegacyArchiveBuild(bot_id, buildconfig, buildnumber, debug=False): + """Adds a step to the factory to archive a build.""" + + # Fixed properties + keep_max = 3 + gsutil_archive = 'gs://chromeos-archive/' + bot_id + + cmd = ['./archive_build.sh', + '--build_number', str(buildnumber), + '--to', '/var/www/archive/' + bot_id, + '--keep_max', str(keep_max), + '--prebuilt_upload', + '--board', buildconfig['board'], + + '--acl', '/home/chrome-bot/slave_archive_acl', + '--gsutil_archive', gsutil_archive, + '--gsd_gen_index', + '/b/scripts/gsd_generate_index/gsd_generate_index.py', + '--gsutil', '/b/scripts/slave/gsutil', + '--test_mod' + ] + + if buildconfig.get('test_mod', True): + cmd.append('--test_mod') + + if buildconfig.get('factory_install_mod', True): + cmd.append('--factory_install_mod') + + if buildconfig.get('factory_test_mod', True): + cmd.append('--factory_test_mod') + + if debug: + Warning('***** ***** LegacyArchiveBuild CMD: ' + ' '.join(cmd)) + else: + RunCommand(cmd) + def _ArchiveTestResults(buildroot, board, test_results_dir, gsutil, archive_dir, acl): """Archives the test results into Google Storage @@ -608,6 +644,8 @@ def main(): parser = optparse.OptionParser(usage=usage) parser.add_option('-a', '--acl', default='private', help='ACL to set on GSD archives') + parser.add_option('--archive_build', action='store_true', default=False, + help='Run the archive_build script.') parser.add_option('-r', '--buildroot', help='root directory where build occurs', default=".") parser.add_option('-n', '--buildnumber', @@ -625,6 +663,9 @@ def main(): parser.add_option('--debug', action='store_true', dest='debug', default=False, help='Override some options to run as a developer.') + parser.add_option('--nobuild', action='store_false', dest='build', + default=True, + help="Don't actually build (for cbuildbot dev") parser.add_option('--noprebuilts', action='store_false', dest='prebuilts', default=True, help="Don't upload prebuilts.") @@ -650,7 +691,8 @@ def main(): chrome_atom_to_build = None if len(args) >= 1: - buildconfig = _GetConfig(args[-1]) + bot_id = args[-1] + buildconfig = _GetConfig(bot_id) else: Warning('Missing configuration description') parser.print_usage() @@ -706,12 +748,14 @@ def main(): buildconfig['board'], rev_overlays) _EnableLocalAccount(buildroot) - _Build(buildroot, emptytree) - if buildconfig['unittests'] and options.tests: - _RunUnitTests(buildroot) + if options.build: + _Build(buildroot, emptytree) - _BuildImage(buildroot) + if buildconfig['unittests'] and options.tests: + _RunUnitTests(buildroot) + + _BuildImage(buildroot) if buildconfig['tests'] and options.tests: _BuildVMImageForTesting(buildroot) @@ -747,6 +791,11 @@ def main(): if buildconfig['important'] and not options.debug: cbuildbot_comm.PublishStatus(cbuildbot_comm.STATUS_BUILD_COMPLETE) + if options.archive_build: + _LegacyArchiveBuild(bot_id, + buildconfig, + options.buildnumber, + options.debug) except: # Send failure to master bot. if not buildconfig['master'] and buildconfig['important']: diff --git a/bin/cbuildbot_config.py b/bin/cbuildbot_config.py index c13d3626cd..3389c11295 100644 --- a/bin/cbuildbot_config.py +++ b/bin/cbuildbot_config.py @@ -25,6 +25,9 @@ push_overlays -- Select what overlays to push at. This should be a subset of rev_overlays for the particular builder. Must be None if not a master. There should only be one master bot pushing changes to each overlay per branch. +test_mod -- Create a test mod image. (default True) +factory_install_mod -- Create a factory install image. (default True) +factory_test_mod -- Create a factory test image. (default True) """ @@ -107,6 +110,8 @@ config['arm_tegra2_bin'] = { 'unittests' : False, 'rev_overlays': 'public', 'push_overlays': None, + 'factory_install_mod' : False, + 'factory_test_mod' : False, } config['arm_generic_bin'] = { 'board' : 'arm-generic', @@ -116,4 +121,6 @@ config['arm_generic_bin'] = { 'unittests' : False, 'rev_overlays': 'public', 'push_overlays': None, + 'factory_install_mod' : False, + 'factory_test_mod' : False, }