Closed iamb55 closed 12 years ago
TEAM TASK: @brennenbyrne @dunvi @jessepollak
Risk:
Avoidance:
Dependencies:
Twisted guys set up a buildbot from scratch
-part of those conversations
-at work, using GitBuilder,
-does build part and runs unit tests
-builds all the branches and all the commits
-people near him use Jenkins
-problems
-trivial projects, build is quick
-one environment you care about
-unit tests are sufficient for everything
-easy--precommit hook and everyone would run the tests before you push them
-simple thing isn't good enough because
-if your builds take a long time
-worker runs that cache results or splits up the builds
-make has thing theing where you build a target on dependencies
-looks at dependencies and compares them with preexisting destination
-doesn't look at change in build system, doesn't give you comfort in knowing things are done right
-SOLUTION
-build a clean tree everytime and hook the compilationg into clean cache
-if contents are exactly identical, then spits out old
have to look at what our target audience is
-web developers vs non-web developers
don't think there is a fundamental solution to all of the problems for multiple categories
typical web project, division of work for build system is completely different
-don't have compilation time
automated testing of something like django project is on a compeltely different level
if you don't have a SQL database in the picture the nyou don't have to test against a SQL database
-if you can avoid the problem then you don't need to solve it
in his space, essentially no testing besides build time set up
-nightly build across 100 computers
-test suite takes up to 20 minutes for stress oriented tests
unit tests happen at build time, the rest is to complicated to integrate
-GitBuilder
-understands git perfectly
-tags, commits, which have been tested etc
-can do things like
-if you have a history of a branch that used to be green, it will try the latest and then if that fails it will start bisecting the commit space and find out which commit caused it is
-REALLY HELPFUL
if you were to solve the full problem, it would become a question of distributing resources
if you have a huge set of systems dedicated to testing, how do you use it to its maximum potential
if you push it enough, in build or tests taking a long time, it becomes a question of scheduling
-jenkins is a FIFO queue of work to do
-gitbuilder will skip building intermediate commits if it goes from green to green
BUILD SOMETHING THAT CAN PLUGIN TO SOMETHING ELSE
-replacability
Think about "scalability"
-you will *overwhelm* a single machine
-should look at cloud API to launch other machines
want to have lots of control over isolation and reproducibility
-it's fairly easy to ignore when you have a simple problem
-easy way to create new environments
try to build a system that has minimum trust from one component to another
are we building this so everything is located next to each other or across the country
-push or pull?
-some of the components might be behind a NAT where communication is one way
-PICK ONE!
say GOAL is this NON-GOAL is this
USES GO!
Works at company that does MongoDB, python evangelist
uses:
Opinion: small teams should be using CI more than big teams!
Many CI servers have some of these, none of them have all of these
best case scenario would be sensible defaults and easy customizability
A lot of CI were made years ago, and they would have to refactor to improve dramatically. instead they've been doing incremental upgrades, so they're sorta stuck
Jesse would know > Daniel Something
Michael Stock-Matthews
Talk with users about their requirements for the product.