Geeks With Blogs

@jolson88
  • jolson88 You know, for supposedly being in the post-PC era, I'm seeing a lot of tweets about the new Mac in my Twitter feed. #fb about 462 days ago
  • jolson88 @Anyware I find the difference in perception fascinating (and frustrating). about 465 days ago
  • jolson88 @Anyware Agreed. I've often wondered whether apps like yours can do well in freemium. about 465 days ago
  • jolson88 @Anyware Curious, have you tried an ad-driven freemium approach? about 465 days ago
  • jolson88 @Anyware Thx for the write-up! You know, I've been curious how well the freemium model would work outside of games... about 465 days ago

News

Series

Add to Technorati Favorites


An Archived Managed World This blog has moved to http://www.managed-world.com/blog

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 | Back to top


Comments on this post: NEW - CruiseControl.NET and Dependency Management

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
So that's where you've been hiding! ;)
Left by Ben Scheirman on Mar 30, 2005 5:11 PM

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

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
hi to all =)
Left by John Travolta on Jun 17, 2005 7:14 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
Is this in the 1.0 release? There's no mention of it in the documentation.

Thanks.
- alex
Left by Alex on Feb 04, 2006 10:35 PM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
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
Left by Jason Olson on Feb 05, 2006 2:07 AM

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

# Get cruisecontro.NET status in custom application
Requesting Gravatar...
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 :)
Left by Ranjith on Mar 27, 2006 3:44 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
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.
Left by Jason Olson on Mar 27, 2006 7:44 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
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 ?
Left by chuan on Jul 11, 2006 1:58 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
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.
Left by Jason Olson on Feb 16, 2007 9:04 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
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
Left by Ty Norton on Mar 12, 2007 8:14 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
Seconded. This sounds like a useful feature.
Left by Harry McIntyre on Mar 16, 2007 5:38 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
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!!
Left by Patricio Fernandes on Apr 23, 2007 11:00 AM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
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
Left by Zac Vawter on Apr 09, 2008 7:03 PM

# re: NEW - CruiseControl.NET and Dependency Management
Requesting Gravatar...
Hi Jason,

Thanks for your effort explaining how to acchive dependency management in cc.net.
Left by rene on Mar 10, 2010 8:29 PM

Your comment:
 (will show your gravatar)
 


Copyright © Jason Olson | Powered by: GeeksWithBlogs.net | Join free