Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: bin/cbuildbot.py

Issue 6317014: Add buildbot functionality to cbuildbot. (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: Fix whitespace issues. Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | bin/cbuildbot_config.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """CBuildbot is wrapper around the build process used by the pre-flight queue""" 7 """CBuildbot is wrapper around the build process used by the pre-flight queue"""
8 8
9 import errno 9 import errno
10 import heapq 10 import heapq
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 '--overlays=%s' % ':'.join(overlays), 478 '--overlays=%s' % ':'.join(overlays),
479 '--tracking_branch=%s' % tracking_branch 479 '--tracking_branch=%s' % tracking_branch
480 ] 480 ]
481 if dryrun: 481 if dryrun:
482 cmd.append('--dryrun') 482 cmd.append('--dryrun')
483 483
484 cmd.append('push') 484 cmd.append('push')
485 RunCommand(cmd, cwd=cwd) 485 RunCommand(cmd, cwd=cwd)
486 486
487 487
488 def _LegacyArchiveBuild(bot_id, buildconfig, buildnumber, debug=False):
489 """Adds a step to the factory to archive a build."""
490
491 # Fixed properties
492 keep_max = 3
493 gsutil_archive = 'gs://chromeos-archive/' + bot_id
494
495 cmd = ['./archive_build.sh',
496 '--build_number', str(buildnumber),
497 '--to', '/var/www/archive/' + bot_id,
498 '--keep_max', str(keep_max),
499 '--prebuilt_upload',
500 '--board', buildconfig['board'],
501
502 '--acl', '/home/chrome-bot/slave_archive_acl',
503 '--gsutil_archive', gsutil_archive,
504 '--gsd_gen_index',
505 '/b/scripts/gsd_generate_index/gsd_generate_index.py',
506 '--gsutil', '/b/scripts/slave/gsutil',
507 '--test_mod'
508 ]
509
510 if buildconfig.get('test_mod', True):
511 cmd.append('--test_mod')
512
513 if buildconfig.get('factory_install_mod', True):
514 cmd.append('--factory_install_mod')
515
516 if buildconfig.get('factory_test_mod', True):
517 cmd.append('--factory_test_mod')
518
519 if debug:
520 Warning('***** ***** LegacyArchiveBuild CMD: ' + ' '.join(cmd))
521 else:
522 RunCommand(cmd)
523
488 def _ArchiveTestResults(buildroot, board, test_results_dir, 524 def _ArchiveTestResults(buildroot, board, test_results_dir,
489 gsutil, archive_dir, acl): 525 gsutil, archive_dir, acl):
490 """Archives the test results into Google Storage 526 """Archives the test results into Google Storage
491 527
492 Takes the results from the test_results_dir and the last qemu image and 528 Takes the results from the test_results_dir and the last qemu image and
493 uploads them to Google Storage. 529 uploads them to Google Storage.
494 530
495 Arguments: 531 Arguments:
496 buildroot: Root directory where build occurs 532 buildroot: Root directory where build occurs
497 board: Board to find the qemu image. 533 board: Board to find the qemu image.
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 637
602 RunCommand(cmd, cwd=cwd) 638 RunCommand(cmd, cwd=cwd)
603 639
604 640
605 def main(): 641 def main():
606 # Parse options 642 # Parse options
607 usage = "usage: %prog [options] cbuildbot_config" 643 usage = "usage: %prog [options] cbuildbot_config"
608 parser = optparse.OptionParser(usage=usage) 644 parser = optparse.OptionParser(usage=usage)
609 parser.add_option('-a', '--acl', default='private', 645 parser.add_option('-a', '--acl', default='private',
610 help='ACL to set on GSD archives') 646 help='ACL to set on GSD archives')
647 parser.add_option('--archive_build', action='store_true', default=False,
648 help='Run the archive_build script.')
611 parser.add_option('-r', '--buildroot', 649 parser.add_option('-r', '--buildroot',
612 help='root directory where build occurs', default=".") 650 help='root directory where build occurs', default=".")
613 parser.add_option('-n', '--buildnumber', 651 parser.add_option('-n', '--buildnumber',
614 help='build number', type='int', default=0) 652 help='build number', type='int', default=0)
615 parser.add_option('--chrome_rev', default=None, type='string', 653 parser.add_option('--chrome_rev', default=None, type='string',
616 dest='chrome_rev', 654 dest='chrome_rev',
617 help=('Chrome_rev of type [tot|latest_release|' 655 help=('Chrome_rev of type [tot|latest_release|'
618 'sticky_release]')) 656 'sticky_release]'))
619 parser.add_option('-g', '--gsutil', default='', help='Location of gsutil') 657 parser.add_option('-g', '--gsutil', default='', help='Location of gsutil')
620 parser.add_option('-c', '--gsutil_archive', default='', 658 parser.add_option('-c', '--gsutil_archive', default='',
621 help='Datastore archive location') 659 help='Datastore archive location')
622 parser.add_option('--clobber', action='store_true', dest='clobber', 660 parser.add_option('--clobber', action='store_true', dest='clobber',
623 default=False, 661 default=False,
624 help='Clobbers an old checkout before syncing') 662 help='Clobbers an old checkout before syncing')
625 parser.add_option('--debug', action='store_true', dest='debug', 663 parser.add_option('--debug', action='store_true', dest='debug',
626 default=False, 664 default=False,
627 help='Override some options to run as a developer.') 665 help='Override some options to run as a developer.')
666 parser.add_option('--nobuild', action='store_false', dest='build',
667 default=True,
668 help="Don't actually build (for cbuildbot dev")
628 parser.add_option('--noprebuilts', action='store_false', dest='prebuilts', 669 parser.add_option('--noprebuilts', action='store_false', dest='prebuilts',
629 default=True, 670 default=True,
630 help="Don't upload prebuilts.") 671 help="Don't upload prebuilts.")
631 parser.add_option('--nosync', action='store_false', dest='sync', 672 parser.add_option('--nosync', action='store_false', dest='sync',
632 default=True, 673 default=True,
633 help="Don't sync before building.") 674 help="Don't sync before building.")
634 parser.add_option('--notests', action='store_false', dest='tests', 675 parser.add_option('--notests', action='store_false', dest='tests',
635 default=True, 676 default=True,
636 help='Override values from buildconfig and run no tests.') 677 help='Override values from buildconfig and run no tests.')
637 parser.add_option('-f', '--revisionfile', 678 parser.add_option('-f', '--revisionfile',
638 help='file where new revisions are stored') 679 help='file where new revisions are stored')
639 parser.add_option('-t', '--tracking-branch', dest='tracking_branch', 680 parser.add_option('-t', '--tracking-branch', dest='tracking_branch',
640 default='cros/master', help='Run the buildbot on a branch') 681 default='cros/master', help='Run the buildbot on a branch')
641 parser.add_option('-u', '--url', dest='url', 682 parser.add_option('-u', '--url', dest='url',
642 default='http://git.chromium.org/git/manifest', 683 default='http://git.chromium.org/git/manifest',
643 help='Run the buildbot on internal manifest') 684 help='Run the buildbot on internal manifest')
644 685
645 (options, args) = parser.parse_args() 686 (options, args) = parser.parse_args()
646 687
647 buildroot = os.path.abspath(options.buildroot) 688 buildroot = os.path.abspath(options.buildroot)
648 revisionfile = options.revisionfile 689 revisionfile = options.revisionfile
649 tracking_branch = options.tracking_branch 690 tracking_branch = options.tracking_branch
650 chrome_atom_to_build = None 691 chrome_atom_to_build = None
651 692
652 if len(args) >= 1: 693 if len(args) >= 1:
653 buildconfig = _GetConfig(args[-1]) 694 bot_id = args[-1]
695 buildconfig = _GetConfig(bot_id)
654 else: 696 else:
655 Warning('Missing configuration description') 697 Warning('Missing configuration description')
656 parser.print_usage() 698 parser.print_usage()
657 sys.exit(1) 699 sys.exit(1)
658 700
659 try: 701 try:
660 # Calculate list of overlay directories. 702 # Calculate list of overlay directories.
661 rev_overlays = _ResolveOverlays(buildroot, buildconfig['rev_overlays']) 703 rev_overlays = _ResolveOverlays(buildroot, buildconfig['rev_overlays'])
662 push_overlays = _ResolveOverlays(buildroot, buildconfig['push_overlays']) 704 push_overlays = _ResolveOverlays(buildroot, buildconfig['push_overlays'])
663 # We cannot push to overlays that we don't rev. 705 # We cannot push to overlays that we don't rev.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 options.chrome_rev, board) 741 options.chrome_rev, board)
700 # If we found nothing to rev, we're done here. 742 # If we found nothing to rev, we're done here.
701 if not chrome_atom_to_build: 743 if not chrome_atom_to_build:
702 return 744 return
703 745
704 elif buildconfig['uprev']: 746 elif buildconfig['uprev']:
705 _UprevPackages(buildroot, tracking_branch, revisionfile, 747 _UprevPackages(buildroot, tracking_branch, revisionfile,
706 buildconfig['board'], rev_overlays) 748 buildconfig['board'], rev_overlays)
707 749
708 _EnableLocalAccount(buildroot) 750 _EnableLocalAccount(buildroot)
709 _Build(buildroot, emptytree)
710 751
711 if buildconfig['unittests'] and options.tests: 752 if options.build:
712 _RunUnitTests(buildroot) 753 _Build(buildroot, emptytree)
713 754
714 _BuildImage(buildroot) 755 if buildconfig['unittests'] and options.tests:
756 _RunUnitTests(buildroot)
757
758 _BuildImage(buildroot)
715 759
716 if buildconfig['tests'] and options.tests: 760 if buildconfig['tests'] and options.tests:
717 _BuildVMImageForTesting(buildroot) 761 _BuildVMImageForTesting(buildroot)
718 test_results_dir = '/tmp/run_remote_tests.%s' % options.buildnumber 762 test_results_dir = '/tmp/run_remote_tests.%s' % options.buildnumber
719 try: 763 try:
720 _RunSmokeSuite(buildroot, test_results_dir) 764 _RunSmokeSuite(buildroot, test_results_dir)
721 _RunAUTest(buildroot, buildconfig['board']) 765 _RunAUTest(buildroot, buildconfig['board'])
722 finally: 766 finally:
723 if not options.debug: 767 if not options.debug:
724 archive_full_path = os.path.join(options.gsutil_archive, 768 archive_full_path = os.path.join(options.gsutil_archive,
(...skipping 15 matching lines...) Expand all
740 _UprevPush(buildroot, tracking_branch, buildconfig['board'], 784 _UprevPush(buildroot, tracking_branch, buildconfig['board'],
741 push_overlays, options.debug) 785 push_overlays, options.debug)
742 else: 786 else:
743 Die('CBUILDBOT - One of the slaves has failed!!!') 787 Die('CBUILDBOT - One of the slaves has failed!!!')
744 788
745 else: 789 else:
746 # Publish my status to the master if its expecting it. 790 # Publish my status to the master if its expecting it.
747 if buildconfig['important'] and not options.debug: 791 if buildconfig['important'] and not options.debug:
748 cbuildbot_comm.PublishStatus(cbuildbot_comm.STATUS_BUILD_COMPLETE) 792 cbuildbot_comm.PublishStatus(cbuildbot_comm.STATUS_BUILD_COMPLETE)
749 793
794 if options.archive_build:
795 _LegacyArchiveBuild(bot_id,
796 buildconfig,
797 options.buildnumber,
798 options.debug)
750 except: 799 except:
751 # Send failure to master bot. 800 # Send failure to master bot.
752 if not buildconfig['master'] and buildconfig['important']: 801 if not buildconfig['master'] and buildconfig['important']:
753 cbuildbot_comm.PublishStatus(cbuildbot_comm.STATUS_BUILD_FAILED) 802 cbuildbot_comm.PublishStatus(cbuildbot_comm.STATUS_BUILD_FAILED)
754 803
755 raise 804 raise
756 805
757 806
758 if __name__ == '__main__': 807 if __name__ == '__main__':
759 main() 808 main()
OLDNEW
« no previous file with comments | « no previous file | bin/cbuildbot_config.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698