An Archived Managed World

This blog has moved to http://www.managed-world.com/blog

  Home  |   Contact  |   Syndication    |   Login
  473 Posts | 0 Stories | 429 Comments | 1288 Trackbacks

News

Twitter












Tag Cloud


Archives

Post Categories

Blog Roll

I have implemented Dependency Management into Cruise Control that I would like to submit a patch for. I’m not sure what patch formats you except so for now I will just link to the zip file containing the changed and added source files. You can find the link here: http://members.gamedev.net/managedworld/downloads/CruiseControlPatch.zip. These changes are based upon version 0.8.0.822 pulled directly from CCNetLive.

 

The essence of the change is to allow the configuration of projects as such:

<cruisecontrol>
         <project>
                  <name>Introvert</name>
                  ...
                  ...
         </project>
         <project>
                  <name>A   Failing   Project</name>
                  <dependencies>
                           <projectDependency>Introvert</projectDependency>
                  </dependencies>
                  ...
                  ...
         </project>
</cruisecontrol>

The ramifications for a project with dependencies are as follows (the behavior, that is):

1)       If a dependent project is currently building, wait until the dependency is finished building (the project activity will show “WaitingForDependencies” on the web dashboard while in this stage)

2)       If a dependent project is in a failed state, then this project will fail also (with a “DependencyFailure” state to differentiate from a normal “Failure” state)

 

The ramifications for a project that is depended upon are as follows:

1)       If I just finished building or I’m in a failed state, kick off builds for any projects that are dependent upon me

a.       If I failed, kicking off projects dependent upon me will cause them to fail with a “DependencyFailure” state to catch dependency issues as soon as possible

 

This functionality addition will also, possibly, circumvent the need for a SingletonBuilder since the root cause of needing a SingletonBuilder was because there was no concept of “dependencies” in the build system.

 

The new files are all in the core project:

DependencyManager.cs

IDependencyManager.cs

IProjectIntegratorRunner.cs

NullDependencyManager.cs

ProjectIntegratorRunner.cs

 

IProjectIntegratorRunner.cs and ProjectIntegratorRunner.cs are just class extractions of functionality that was implemented in the CruiseServer. This was done so that we can reuse this functionality (kicking off Project Integrators that is) from the Dependency Manager as well to kick off builds that are dependent upon the current project.

 

There are many other files that were touched due to a method signature change of IIntegratable.

 

I have also added unit tests to these new classes so that they should be relatively easier and ready to plug in to the trunk of the project.

 

Obviously, you can tell that this is not actual detailed dependency management, but it certainly has helped making my build process better at home, especially regarding having common codebases that are shared at code-level, rather than binary-dependency level, in order to achieve a true refactoring space among several projects.

 

I have submitted this to the mailing list for CruiseControl.NET in hopes that it will be integrated into the trunk of the project. If I hear anything more from them, I will be sure to give updates here.

 

Enjoy!

 

posted on Tuesday, March 29, 2005 7:58 PM

Feedback

# re: NEW - CruiseControl.NET and Dependency Management 3/30/2005 5:11 PM Ben Scheirman
So that's where you've been hiding! ;)

# re: NEW - CruiseControl.NET and Dependency Management 3/30/2005 6:00 PM Jason Olson
Partly, but not really :). This was only a three day project or so.

# re: NEW - CruiseControl.NET and Dependency Management 6/17/2005 7:14 AM John Travolta
hi to all =)

# re: NEW - CruiseControl.NET and Dependency Management 2/4/2006 10:35 PM Alex
Is this in the 1.0 release? There's no mention of it in the documentation.

Thanks.
- alex

# re: NEW - CruiseControl.NET and Dependency Management 2/5/2006 2:07 AM Jason Olson
I wish Alex. I submitted it and it was rejected as they stated they wanted to find "a better" way to accomplish this. The frustrating part is that, to date (at least the latest version at the time of this comment) _STILL_ doesn't have any sort of dependency management. Sorry :(. That's one of the draw backs of working with open source software that's not really open source. It should really be called we-want-it-to-be-open-source-because-that-is-the-cool-thing-to-do-these-days-but-we-still-want-full-control-over-the-product-so-we-are-going-to-have-direct-control-over-anything-that-could-possibly-be-done-source


# re: NEW - CruiseControl.NET and Dependency Management 2/5/2006 2:08 AM Jason Olson
Sorry, I guess I'm just a little bitter. It definitely was one strike against contributing to certain "open source" projects for me.

# Get cruisecontro.NET status in custom application 3/27/2006 3:44 AM Ranjith
Hi,

I have an asp.net application from where i call the ccnet.exe process. I need to display the status information of each project in the ccnet.config file in my application rather than the user going and seeing that in the dashboard that comes along with Cc.NET.

Can you please suggest me how to do this. Its pretty urgent. I need a clear explanation :)

# re: NEW - CruiseControl.NET and Dependency Management 3/27/2006 7:44 AM Jason Olson
Ranjith, I'll give you a hint. First of all, you don't need to do anything with the ccnet.exe process itself. There is a remoting interface you can hook into that will get all that information for you. So, look into .NET Remoting and use the interface that CCNet exposes.

# re: NEW - CruiseControl.NET and Dependency Management 7/11/2006 1:58 AM chuan
Project dependency is something they should include in the current release. I will make my life so much easier ! Anwyay, does your patch work for the upcoming version 1.1 ?

# re: NEW - CruiseControl.NET and Dependency Management 2/16/2007 9:04 AM Jason Olson
John, nope, it's not available yet. They turned down the submission saying they knew of a better way to get it done and that it was "in the works." Still nothing almost two years later. Open Source project my ass.

# re: NEW - CruiseControl.NET and Dependency Management 3/12/2007 8:14 AM Ty Norton
Hey Jason.

I've been watching this thread for what seems like an eternity. It sucks that they reject a very needed addition to their product.

Have you thought about patching the 1.2.x release and sticking a full installer with your revisions here on this site?

It would certainly be welcome by myself, and likely other devs with no real time to fuss around with patching CCNet. Maybe the CCNet devs will pull their heads out of their asses and adopt your method once they see how many people are using your branch. heh.

Thanks.
-Ty

# re: NEW - CruiseControl.NET and Dependency Management 3/16/2007 5:38 AM Harry McIntyre
Seconded. This sounds like a useful feature.

# re: NEW - CruiseControl.NET and Dependency Management 4/23/2007 11:00 AM Patricio Fernandes
Hi Jason,

I really don't like their solution to control project dependencies.

Have you a patch for version 1.2.x. ?

This is a very important feature!!

# re: NEW - CruiseControl.NET and Dependency Management 4/9/2008 7:03 PM Zac Vawter
Jason,

Stumbled across your post while looking for a replacement for CruiseControl.Net. Unfortunately I'm pretty sure your solution wouldnt work for us either. Although your solution could be extended to make it work.

Here's a post explaining our problem: http://groups.google.com/group/ccnet-user/browse_thread/thread/7d7e0fe25a597f51

# re: NEW - CruiseControl.NET and Dependency Management 3/10/2010 8:29 PM rene
Hi Jason,

Thanks for your effort explaining how to acchive dependency management in cc.net.

Post A Comment
Title:
Name:
Email:
Website:
Comment:
Verification: