[TriZPUG] Shining Panda?

Tom Bryan tbryan at python.net
Sun Sep 19 04:45:40 CEST 2010


On Saturday 18 September 2010 17:17:23 bob gailer wrote:
>   On 9/18/2010 3:15 PM, Tom Roche wrote:
> > Anybody using this?
> >
> > http://www.shiningpanda.com/
> 
> I visited the website. I for one could use a tutorial, as I can't begin
> to guess how I'd use it. Or perhaps I am in the category "if you have to
> ask you don't need to know".

I just glanced at it, but the words "continuous integration" tell me most of 
what I need to know.  http://c2.com/xp/ContinuousIntegration.html

History: Especially on large systems, it was (and still often is) common for 
people or entire teams to own large parts of a system.  They would work in 
some isolation so that they didn't have to keep rebuilding the system.  (If 
you have a monolithic C application that takes hours to build and link, it's a 
very practical concern.)  So, people would work on their own sub-system or 
even on their own module within a sub-system.  Then, periodically, all of the 
recent changes from everyone's private branches would be merged and 
"integrated" together. 

Back to your question: Continuous integration is a process that tries to move 
away from the approach described above.  In a language like Python (or Java, 
Smalltalk, etc.), you don't have long build and link times.  Some people still 
preferred isolated development with periodic integration of all of the modules 
of the system.  Continuous integration is a combination of multiple ideas, but 
it starts with the belief that developers should see each other's changes as 
soon as possible.  With an SCM system like Subversion or CVS, that normally 
means that everyone is working on the same branch, and everyone commits often, 
and everyone updates his local sandbox often.

The danger is that someone will check in code that breaks things, and everyone 
is suddenly impacted.  If you update, and someone changed a signature in a 
library without changing all callers, your sandbox code may suddenly not run 
(or not compile).  If you have a dozen people on your team who suddenly can't 
run and test code in their sandbox, it's a problem.  

To avoid that problem, a "continuous integration server" is normally used to 
monitor the SCM system.  When someone commits code, if the server isn't 
already busy, it checks out a new local sandbox from scratch, builds the 
entire system (kind of a non-issue for Python), and runs all of the unit 
tests.  It may do other things like run analysis tools like PyChecker or 
deploy successful builds to a staging server for further automated testing 
using something like Selenium (for a web application).

When most people talk about continuous integration, they're thinking of the CI 
server.  You check in code, it checks out the latest code, builds, and tests.  
That way, if someone checks in code that breaks the build or unit tests, 
you'll know right away (often within minutes, depending on how long your tests 
take to run).   That way, everyone knows not to update his sandbox, and the 
developer who broke the build stops what he's doing and fixes the build.  

In a small team, it's maybe not essential.  It's really useful once you have 
10 or so people all working on different parts of the same code base.  It's 
already a big time saver once you have 20 people on a project.  It also gets 
you away from the "works for me" excuse.  If it's not working on the CI 
server, it's not working.  :)

To make all of this work, development with CI uses some ideas from agile / 
extreme programming methodology.  For example, each commit is some complete 
piece of functionality.  Basically, whatever is on the HEAD of the main 
development branch builds and works.  A feature may not be done, but all of 
the parts of the code that's checked in work and work with the rest of the 
system.  To avoid potential of widespread build breakage, developers normally 
try to commit often, developing a feature incrementally.  

So the real answer to your question: It looks like Shining Panda is a CI 
system that monitors your project's commits, if you're using one of the hosted 
development platforms like github.  On a successful build and test, it looks 
like it can deploy the "snapshot" build to various systems, like PyPI.  

---Tom


More information about the TriZPUG mailing list