220 likes | 508 Views
Why you might like CruiseCotrol.NET. What you can get by using CruiseControl.NET:Continuous feedback:That it builds (in other circumstances than your perfect environment)That you didn't destroy other projects, by modifications to common assembliesAlso clean ups -- packaging, publication, et
E N D
1. CruiseControl.NET Your underpaid assistant in a box…
2. Why you might like CruiseCotrol.NET… What you can get by using CruiseControl.NET:
Continuous feedback:
That it builds (in other circumstances than your perfect environment)…
That you didn’t destroy other projects, by modifications to common assemblies…
Also clean ups -- packaging, publication, etc:
Make available (internally) Code Quality and Metrics
Publish Nightly builds of Bin packages to the web
Public Documentation (online and separate zips)
Publishing any build stats you want to web’s project page…
Hence “the underpaid worker in a box…” moniker
3. The Continuous Integration Concept Makes an infrequent/painful exercise into a simple, core, part of a developer's daily activities.
Successful build and integration = measure of progress. It Shows:
The code runs correctly,
Successfully interoperates with the rest of the teams code base.
Unintegrated Code (on a station) isn’t yet worth much:
Not built against the rest of the ongoing code base,
Cannot be accessed by other developers
Cannot be tested by the customer.
Only when successfully integrated, is the benefit of new code fully realized.
4. What is CruiseControl.NET? It’s a automated build/integration server.
Monitors the project’s source control repository for changes.
When a developer commits new work, the server:
Checks Out the new work into a Build Directory,
Launches a build Task (eg: invoke MSBuild.exe).
Publishes notification to the developer (and/or its website) whether the new changes built and integrated successfully or not.
5. CruiseControl.NET:ServerSide Installation Download From ThoughtWorks
http://ccnet.thoughtworks.com
Install anywhere (but probably not C:\…)
(eg: e:/CI/CruiseControl.NET)
6. CruiseControl.NET:The Console, and the Server exe The two main Exe’s:
The console, for working things out…
The server running on a permanent basis…
Each has its own .NET ….exe.config file…
7. CruiseControl.NET:The Project Build List
8. Ccnet.config
9. CruiseControl.NETThe ccnet.config file – and project schemas
10. CheckIn and Watch it go to work… If you’ve configured it right… and the server is running…then:
The next time you check in…
It checks it out…
Into the specified Build Directory
Runs the specified Build Task
(and Spits out xml artifacts which will come in handy)
And when finished, publishes the results to your various publishers…
…one of them being the default Web Dashboard:
11. CruiseControl.NETThe Web Dashboard
Published to the CruiseControl web dashboard:
12. The overall Project Report…
13. Sub Reports… Your Build generated xml…
Which will be xsl-ed into various reports…
14. A XSL’ed SubReport… Unfortunately…Busted!
15. CruiseControl.NET That’s the raw basics.
It does take time to setup (not easy…) but, now…
You’ve got CC.NET watching your back, ensuring:
Builds
Doesn’t blow up other assemblies
Creates detailed reports (just xml/xsl)…
16. Going Further… Out of the Box is Nice…
But we’re Programmers!
17. CruiseControl.NET:Creating custom CC.NET Tasks… Poorly documented, but simple:
You already have all the dependencies dll’s…
Decorate with [ReflectorType]and [ReflectorProperty]
Override Execute(IIntegrationResult result)…
A good place to handle Documentation, Zipping, copying…
18. CruiseControl.NET:Using MSBuild beyond *.sln… You can do wonderful things with MSBuild…
MSbuild accepts *.proj, *.sln, and custom *.build files
*.build files are just *.proj files (ie, XML)…No magic required.
But you will need the official MSBuild Reference:
http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx
Get your hands on pre-built extension custom tasks:
http://msbuildtasks.tigris.org/
19. Or make your own Custom MSBuild Tasks… Custom MSBuild Task:
Have the Assemblies you will need…
Download Community Tasks…
Inherit from Microsoft.Build.Utitilies.Task
Override Execute…
Build…
Use…
Voila!
Ideas:
FxCop,
NUnit
NCover
SourceMonitor…
20. CruiseControl NET:Automating ideas… Use SVN Triggers to:
Use them to update a central xml file of project names/project svn urls (projectnames.xml)
Then merge those project names with a ccnet.config.template in order to update the ccnet.config file…
Which brings new projects into your continuous build cycle…
Use MSBuild Tasks to run NUnit, etc. to create more reports…
Use custom CC.NET Tasks to zip and publish the work to your website…
21. It’s worth it! It takes time to set up… just like any employee…
But…once set up, watches your back.
22. The End.
An article expanding on the points presented, can be found here:
http://skysigal.xact-solutions.com