chromium的buildbot项目中正常情况,一般分为UpdateScript、Update、Compile、Archive、run tests这几个step,当然也可以根据需要关闭、订制、改写step。通常都是在master端订制slave的相关step,然后在运行时,master给slave发送相关消息。master.cfg文件的factory_properties变量可以添加参数来定制该slave的相关行为。

 

#下面分别是UpdateScript、Update、Compile、Archive、test开关

 
  
  1. build-infrastructure/scripts/master/factory/gclient_factory.py : 
  2.  
  3. class GClientFactory(object): 
  4.     def BaseFactory(self, gclient_spec=Noneofficial_release=False
  5.                   factory_properties=Nonebuild_properties=None
  6.                   delay_compile_step=Falsesudo_for_remove=False
  7.                   gclient_deps=Noneslave_type=None): 
  8.  
  9.            ...... 
  10.         #factory_cmd_obj.AddUpdateScriptStep() 
  11.         ...... 
  12.         elif not delay_compile_step: 
  13.               pass #by 
  14.               #self.AddUpdateStep(gclient_spec, factory_properties, factory,      
  15.               #                   sudo_for_remove, gclient_depsgclient_deps=gclient_deps) 
  16.  
  17.         ...... 
  18.  
  19.  
  20.     def BuildFactory(self, target='Release'clobber=Falsetests=Nonemode=None
  21.                    slave_type='BuilderTester'options=None
  22.                    compile_timeout=1200build_url=Noneproject=None
  23.                    factory_properties=Nonegclient_deps=None): 
  24.         ...... 
  25.         # Add the compile step if needed. 
  26.             if slave_type in ['BuilderTester', 'Builder', 'Trybot', 'NASBuilder']: 
  27.               #pass #by 
  28.               factory_cmd_obj.AddCompileStep(project or self._project, clobber, 
  29.                                      modemode=mode, optionsoptions=options, 
  30.                                      timeout=compile_timeout
  31.  
  32.         ...... 
  33.  
  34.       
  35.  
  36. build-infrastructure/scripts/master/factory/chromium_factory.py: 
  37.  
  38. class ChromiumFactory(gclient_factory.GClientFactory): 
  39.  
  40.     def ChromiumFactory(self, target='Release'clobber=Falsetests=None
  41.                       mode=Noneslave_type='BuilderTester'
  42.                       options=Nonecompile_timeout=1200build_url=None
  43.                       project=Nonefactory_properties=Nonegclient_deps=None): 
  44.         ...... 
  45.         if factory_properties.get('archive_build'): 
  46.               chromium_cmd_obj.AddArchiveBuild(factory_properties=factory_properties) 
  47.         ...... 
  48.         # Add all the tests. 
  49.             self._AddTests(chromium_cmd_obj, tests, mode, factory_properties) 
  50.         ......