Difference between revisions of "Mozilla BuildBot Trending"

From CDOT Wiki
Jump to: navigation, search
(Major Update)
Line 1: Line 1:
 
=Build Bot Trending=
 
=Build Bot Trending=
Currently, it is very difficult to figure out how much time is being spent in each part of the build system. Very high level tasks are timed, like checkout, build, test, but individual steps aren't being timed. For DPS911, this project will aim to create a local buildbot environment, patch buildbot to insert granular timestamps into logs, design a database for timing information and write a log parser to insert data into the database. During Summer 2009 a system to display trending information will be completed as well as historical view for buildbot.  
+
Currently, it is very difficult to figure out how much time is being spent in each part of the build system. Very high level tasks are timed, like checkout, build, test, but individual steps aren't being timed. For DPS911, I will aim to create a local buildbot environment, patch buildbot to insert granular timestamps into logs, design a database for timing information and write a log parser to insert data into the database. During Summer 2009 a system to display trending information will be completed as well as historical view for buildbot.  
  
 
==Project Plan==
 
==Project Plan==
This project will be broken into many distinct parts.  The first seven parts of the system will be completed as releases for DPS911 and the remainder will be completed during the summer of 2009.  As I don't know what this project holds, I am a lot more solid about details of the first few releases.  As I can get more detail about the releases, I will update this page.
+
This project will be broken into many distinct parts.  The first seven parts of Step 2 of the system will be completed as releases for DPS911 and the remainder will be completed during the summer of 2009.  As I don't know what this project holds, I have more solid details of the first few releases.  As I work through the first few parts of the system, I will be able to add detail to this page.
 
+
===Step 1===
===Setup Local Buildbot===
+
====Name In====
This step will be to set up a build bot at CDOT.  This system will serve a dual purpose of having a local Buildbot system for use in CDOT as well as allowing me to test changes to buildbot.  The primary purpose for this Buildbot setup is to test changes.  If having a local stable buildbot is found to be useful, one can be set up.  Initially, this local Buildbot will have a single CentOS Slave, though, as time goes on more slaves will be added.   
+
I need to come up with a name :)
 +
====Break It Down====
 +
I guess this is what I am doing here
 +
===Step 2===
 +
====DPS911 Release - Setup Local Buildbot====
 +
This step will be to set up buildbot at CDOT.  This system will serve a dual purpose of having a local Buildbot system for use in CDOT as well as allowing me to test changes to buildbot.  If having a local stable buildbot is found to be useful, an additional one can be set up.  Initially, this local Buildbot will have a single CentOS Slave, though, as time goes on more slaves will be added.   
  
 
I plan to put the buildbot master on Australia and use either KVM based Virtual Machines or bare metal machines.
 
I plan to put the buildbot master on Australia and use either KVM based Virtual Machines or bare metal machines.
  
===Make a (successful) change to BuildBot===
+
====DPS911 Release - Make a (successful) change to BuildBot====
 
This step involves making a change to buildbot which doesn't horribly break the system.  By this release I would like to have at least one Windows and one OS X machine as slaves to ensure that nothing is broken for the individual build systems.  This step will serve as a learning tool for my next step and make me familiar with the BuildBot codebase
 
This step involves making a change to buildbot which doesn't horribly break the system.  By this release I would like to have at least one Windows and one OS X machine as slaves to ensure that nothing is broken for the individual build systems.  This step will serve as a learning tool for my next step and make me familiar with the BuildBot codebase
  
===Patch BuildBot to add timestamps===
+
====DPS911 Release - Patch BuildBot to add timestamps====
I will write a patch for BuildBot that inserts timestamps into build logs to allow for more detailed timing information and to allow the logs to be parsed by a tool to be written which will do trending.  The goal of this patch is to get make this patch acceptable to upstream.
+
I will write a patch for BuildBot that inserts timestamps into build logs to allow for more detailed timing information and to allow the logs to be parsed by a tool to be written which will do trending.  The goal of this patch is to get make this patch acceptable to upstream.  Another goal will be to investigate the option of having the buildbot directly interact with the database.
  
===Design Database Schema===
+
====DPS911 Release - Design Database Schema====
 
The log parser will need somewhere to put the information it finds in the logs.  Currently, the best place to put this is a database.  I will design the schema required for storing data.  My goal is to have this be able to store information for different branches, each with their own history.  This release will be in the form of a diagram illustrating the design.
 
The log parser will need somewhere to put the information it finds in the logs.  Currently, the best place to put this is a database.  I will design the schema required for storing data.  My goal is to have this be able to store information for different branches, each with their own history.  This release will be in the form of a diagram illustrating the design.
  
===Create DB===
+
====DPS911 Release - Create DB====
 
This release will be a database generation script based on the above schema.  I will target either MySQL or Postgres depending on what is preferred.
 
This release will be a database generation script based on the above schema.  I will target either MySQL or Postgres depending on what is preferred.
 +
 +
====DPS911 Release - Start writing log parser====
 +
This release involves writing the initial part of a log parser which will take information from the log files and populate the database.  Another potential option is to modify the buildbot patch to directly insert into the database.  If buildbot is going to directly insert into the database it might be a good idea to write a high performance caching program in C so the build is not affected by database overhead.  This C program would then write to the database as needed.
 +
 +
====DPS911 Release - Finish writing log parser====
 +
This release will complete the log parsing solution from the previous release.  This will be the final release of the DPS911 and the rest of the system will be implemented in during the Summer.
 +
 +
====Design UI for trending information====
 +
This step involves designing the UI for the trending information.  It will include relevant information which is known to be representable from the data collected earlier.
 +
 +
====Implement UI for trending informaion====
 +
I will implement this UI.  I plan to make a web front end to the system.
 +
 +
===Step 3===
 +
This step will not be broken down into distinct chunks yet as I would like to get familiar with buildbot and the overall build-test cycle before I start planning this part of the system.  This step involves keeping track of historical information found during builds and their error logs.  This portion of the system will help isolate recurring issues by making note of which machines are falling which test runs and why.  A potential idea is to integrate some sort of 'learning' mechanism to help find patterns in build output which are known to be caused by a specific problem.

Revision as of 12:28, 18 January 2009

Build Bot Trending

Currently, it is very difficult to figure out how much time is being spent in each part of the build system. Very high level tasks are timed, like checkout, build, test, but individual steps aren't being timed. For DPS911, I will aim to create a local buildbot environment, patch buildbot to insert granular timestamps into logs, design a database for timing information and write a log parser to insert data into the database. During Summer 2009 a system to display trending information will be completed as well as historical view for buildbot.

Project Plan

This project will be broken into many distinct parts. The first seven parts of Step 2 of the system will be completed as releases for DPS911 and the remainder will be completed during the summer of 2009. As I don't know what this project holds, I have more solid details of the first few releases. As I work through the first few parts of the system, I will be able to add detail to this page.

Step 1

Name In

I need to come up with a name :)

Break It Down

I guess this is what I am doing here

Step 2

DPS911 Release - Setup Local Buildbot

This step will be to set up buildbot at CDOT. This system will serve a dual purpose of having a local Buildbot system for use in CDOT as well as allowing me to test changes to buildbot. If having a local stable buildbot is found to be useful, an additional one can be set up. Initially, this local Buildbot will have a single CentOS Slave, though, as time goes on more slaves will be added.

I plan to put the buildbot master on Australia and use either KVM based Virtual Machines or bare metal machines.

DPS911 Release - Make a (successful) change to BuildBot

This step involves making a change to buildbot which doesn't horribly break the system. By this release I would like to have at least one Windows and one OS X machine as slaves to ensure that nothing is broken for the individual build systems. This step will serve as a learning tool for my next step and make me familiar with the BuildBot codebase

DPS911 Release - Patch BuildBot to add timestamps

I will write a patch for BuildBot that inserts timestamps into build logs to allow for more detailed timing information and to allow the logs to be parsed by a tool to be written which will do trending. The goal of this patch is to get make this patch acceptable to upstream. Another goal will be to investigate the option of having the buildbot directly interact with the database.

DPS911 Release - Design Database Schema

The log parser will need somewhere to put the information it finds in the logs. Currently, the best place to put this is a database. I will design the schema required for storing data. My goal is to have this be able to store information for different branches, each with their own history. This release will be in the form of a diagram illustrating the design.

DPS911 Release - Create DB

This release will be a database generation script based on the above schema. I will target either MySQL or Postgres depending on what is preferred.

DPS911 Release - Start writing log parser

This release involves writing the initial part of a log parser which will take information from the log files and populate the database. Another potential option is to modify the buildbot patch to directly insert into the database. If buildbot is going to directly insert into the database it might be a good idea to write a high performance caching program in C so the build is not affected by database overhead. This C program would then write to the database as needed.

DPS911 Release - Finish writing log parser

This release will complete the log parsing solution from the previous release. This will be the final release of the DPS911 and the rest of the system will be implemented in during the Summer.

Design UI for trending information

This step involves designing the UI for the trending information. It will include relevant information which is known to be representable from the data collected earlier.

Implement UI for trending informaion

I will implement this UI. I plan to make a web front end to the system.

Step 3

This step will not be broken down into distinct chunks yet as I would like to get familiar with buildbot and the overall build-test cycle before I start planning this part of the system. This step involves keeping track of historical information found during builds and their error logs. This portion of the system will help isolate recurring issues by making note of which machines are falling which test runs and why. A potential idea is to integrate some sort of 'learning' mechanism to help find patterns in build output which are known to be caused by a specific problem.