See Build, See Build Run Run Build Run Hudson - Continuous Integration Vincent Batts SELF 2010
Outline ● What is it? ● Why would I want it, or anything like it? ● How do I get it going? ● Can it whistle while it twurks? ● WORK IT!
What is it? Continuous Integration
Project started by Kohsuke Kawaguchi Integration Principles Single Repository Performance Visibility Unified UI to manage builds
Why would I want it, or anything like it? ● $> whoami ● Automating build related functions ● Integrated Information
$> whoami Software Projects Open source Commercial Otherwise Distributions Package Maintainers
$> whoami Skill level needed n00bs to L33t haxor to professionals
Automating build related process Get latest code Build it Package it Deploy it Test and analyze it
Integrated Information Comments on commits Links to the related bugs/tickets Source code changes Trends – Graphed build time – Weather forecast of build stability History – Statistics – Console output – Build artifacts
How do I get it started? Quickly :) $> wget $> java -jar hudson.war [--help] [--daemon] $> firefox
How do I get it started? Quickly :) $> wget $> java -jar hudson.war [--help] [--daemon] $> firefox Start playing first, then customize to meet your needs
How do I get it started? Standalone (default port 8080) as a limited user as an init daemon java applet within an servlet engine like apache-tomcat
Source code integration svn cvs local file system or install plugins (git, perforce, bzr, etc.)
Build Steps Shell ( sha-bang if you want ) apache-ant targets maven targets windows batch or install plugins (rake, python, scons, etc.)
Options Scheduling Publishing of Artifacts Maven plugins ● SCP ● FTP Build order Package chains Testing sequences
Can it whistle while it twurks? Distributed Builds Extendability Multiple Build Environments Integration
Distributed Builds Multiple Nodes – Platform Independent Slaves – PXE boot – Virtual machines distcc icecream
Extendability 240+ plugins point and click ready and super API's to write your own
Multiple Build Environments ● Globally available build tools ● Job level environments
Integration IDE (netbeans, eclipse) Bug tracking Bugzilla (default) Pluginable ● Jira ● Redmine ● Mantis ● trac
WORK IT! Architecture Notifications Rights and Access
Architecture Single machine or many Scalable on servers, but easy to repurpose unused machines
Talk to me RSS twitter IRC Jabber
Rights and Access Open (no users) LDAP Unix users/groups Plugins for ActiveDirectory Mysql database of users
Rights and Access Everyone can do everything Only logged users can manage Matrices of rights (Global or Project)
Recap ● What is it? ● Why would I want it, or anything like it? ● How do I get it going? ● Can it whistle while it twurks? ● WORK IT!
Questions?
Links Official site - Documentation (wiki) - apache-tomcat - hudson-eclipse - Kohsuke Kawaguchi's blog - $> wget $> java -jar hudson.war [--help] $> firefox