CCNetConfig

Continuous Integration, Simplified Configuration

Home | Wiki | About | Login | Contact |
subscribeSubscribe
Subscribe
CCNetConfig
Releases
Beta Releases
Stable Releases
Work Items
Discussions
CPRP
Releases
Beta Releases
Stable Releases
RSS Builds Publisher
Releases
Beta Releases
Stable Releases
Current Release
0.5.0.120
Sun, Jan 20 2008 at 10:02 PM
All Releases
CCNetConfig Build Status
  • Build StatusSuccess
  • Label0.6.420.32915
  • Last Build4/28/2008 6:43 AM
  • Next Build7/24/2008 12:00 AM
Recent Work Items
  • Automated: Unhandled exceptio…
  • Automated: Object reference n…
  • support for SvnRevisionLabell…
  • Automated: Uncommon behaviour…
  • Automated: create a new confi…
  • Copying and pasting a task do…
  • Automated: Invalid URI: The U…
  • Automated: Cannot import a nu…
  • Remove support for plugins in…
  • Show splash screen on initial…
Legend: Proposed Active Fixed Closed
Tag Cloud
  • A Little Class
  • Automation
  • C#
  • CCNet
  • CCNetConfig
  • codeplex
  • CodePlexAPI
  • Continuous Integration
  • CruiseControl.NET
  • feedburner
  • google
  • JSON
  • LOLCode
  • MSBuild
  • RssBuildsPublisher
  • Sandcastle
  • subtext
  • subversion
  • SvnLabeller
  • tfs
  • twitter
  • Visual Studio
  • Wix
  • XML
  • xna
more tags...
Archives
  • July, 2008 (2)
  • May, 2008 (3)
  • April, 2008 (5)
  • March, 2008 (8)
  • February, 2008 (6)
  • January, 2008 (7)
  • December, 2007 (11)
  • November, 2007 (7)
  • October, 2007 (5)
  • September, 2007 (8)
  • August, 2007 (5)
  • June, 2007 (7)
  • May, 2007 (5)
  • April, 2007 (23)
  • March, 2007 (27)
  • February, 2007 (12)
  • January, 2007 (9)
  • December, 2006 (2)
  • November, 2006 (12)
  • October, 2006 (17)
  • September, 2006 (8)
  • August, 2006 (30)
 
Image Galleries
  • Screenshots
  • A Little Class
Post Categories
  • Announcements
  • Automation
  • Beta
  • Beta Marker
  • C#
  • CCNetConfig
  • CCNetConfig.BugTracking
  • CCnetConfig.CCNet
  • CCNetConfig.Core
  • CCNetConfig.GUI
  • CCNetConfig.Updater
  • CCNetConfig.Updater.Core
  • CodePlex
  • CodePlex Release Publisher
  • CodePlexAPI
  • Continuous Integration
  • CruiseControl.NET
  • Extending CCNetConfig
  • MSBuild
  • MsBuild Extended Tasks
  • News
  • Nightly
  • Orcas
  • Project Extension
  • Rant
  • Reflector
  • Release
  • RssBuildsPublisher
  • Sandcastle
  • SubText
  • SubVersion
  • TFS
  • TFS Plugin
  • Tools
  • TortiseSVN
  • Vista
  • Visual Studio
  • Wiki
  • Wix
  • XAML
  • Xbox Live
  • Zune
 

Blog Statistics
  • Posts219
  • Articles0
  • Comments36
  • Trackbacks5
Home
Download
Screenshots
Support
License
Source

November 2006 Entries

Latest Nightly Updates
The latest nightly has some new features added along with a bug with changing the name of a project.

  1. Treeview Opens only expanded to the project level.
  2. Notification to save if closing CCNetConfig or opening new config if there have been changes since the last save.
  3. Tools -> Options menu no longer visible since there was nothing currently there.
  4. Define a config file to open via command line arguments using /file=<filename> or /f=<filename>.

Filed Under [ CCNetConfig.GUI Release ]
Ryan Conrad posted @ Sunday, November 19, 2006 7:18 AM | Comments (0)
Upgraded to CCNet 1.1
I upgraded to CCNet 1.1 today. Seems that the only issue I found is with the PublishExceptions property. CCNet 1.1 fails to start if this element exists. If you change the value of this property to (Default) CCNetConfig will not create this element so CCNet will start successfully. I will change the information for this property to reflect this information. I do not want to just remove it because 1.0 can utilize this property.

Filed Under [ Announcements CCNetConfig Continuous Integration CruiseControl.NET ]
Ryan Conrad posted @ Sunday, November 19, 2006 12:43 AM | Comments (0)
Switched default theme
I have switched the default theme back to the original site theme because I found out that IE 6 does not like the theme AT ALL! It doen't display any of the graphics for some reason. So until i figure that out I guess I will keep this as the default. If you do not use IE6 I would suggest switching the the alternate theme.

Filed Under [ Announcements ]
Ryan Conrad posted @ Saturday, November 18, 2006 7:17 PM | Comments (0)
MSBuild Target to generate stats of source code
I have put together a simple tool that will generate some stats on the source code. It gets the following information:
  • Total Number of Files
  • Total Number of Commented Lines
  • Total Number of Single Line Comments
  • Total Number of Multi-Line Comments
  • Total Number of Empty Lines
  • Total Number of Source Code Lines
  • Total Number of Lines
It also gets all that info (except number of files, obviously) on a per file basis as well.

You can download the attached zip and extract to the MSBuild Extensions Path. This is usually C:\Program Files\MSBuild\. In the zip file are 6 files.
  • SourceCodeStatsGenerator.exe : The executable that will generate the stats.
  • SourceCodeStatsGenerator.exe.config : The configuration file telling the executable how to process the code.
  • Configuration.xsd : The Xml Schema for the configuration section
  • StatsSchema.xsd : The Xml Schema for the GenericCodeProcessor and ArchiveCodeProcessor (more on them below)
  • SourceCodeStats.Generator.Targets : The target file to import in your build script
SourceCodeStatsGenerator has 2 built in CodeProcessors.
  1. GenericCodeProcessor
    • This will process all files that match the regex pattern defined as SourceStatsFileTypeRegexPattern in the Targets file. The default pattern is ^.*\.cs$. It will recursively go through all the directories below the project files path. All of the public and protected methods in this class are virtual so this class can easily be inherited from.
  2. ArchiveCodeProcessor
    • This inherits from GenericCodeProcessor so it will perform the same tasks that the GenericCodeProcessor does, but it will also process zip files as well. While I haven't tried, this should support recursively processing of archives as well. The archives will be extracted to a directory called Archives and then the files will be processed from there. The directories are deleted once processed.
  3. ICodeProcessor
    • This interface defines the properties and methods that both the GenericCodeProcessor and ArchiveCodeProcessor use. This interface can be implemented to create a custom code processor.
The target has a number of properties that can be set in your build script
  1. SourceStatsBinPath : The path to the Targets file, the default is $(MSBuildExtensionsPath)\SourceStatsGen\
  2. SourceStatsOutputPath : The path to where the stats file should be saved. The default is $(MSBuildProjectDirectory)
  3. SourceStatsFileTypeRegexPattern : The regex pattern for the file types to process. The default is ^.*\.cs$
  4. SourceStatsSingleLineCommentRegexPattern : The regex pattern used to find single line comments. The default is ^\s+/{2,3}
  5. SourceStatsMultiLineCommentRegexPattern : The regex pattern used to find multi-line comments. The default is /\*.*?\*/
  6. SourceStatsCodeProcessor : The CodeProcessor to use to process the project. The default is SourceCodeStatsGenerator.ArchiveCodeProcessor, SourceCodeStatsGenerator
This target does depend on MSBuildCommunityTasks. It will attempt to import the MSBuildCommunityTasks if they have not been imported. The Target name to generate the stats is GenerateSourceCodeStats.

Here is a sample of the output

[code language="xml"] 126 0 126 389 240 23 2 82 0 82 212 114 16 44 0 44 177 126 7 [/code]

I will be using this on CCNetConfig project soon. The numbers will be available on the site and in the zipped source.


SourceStatsGen.zip (16.41 KB)
Filed Under [ MSBuild Tools ]
Ryan Conrad posted @ Wednesday, November 15, 2006 5:27 PM | Comments (0)
Weekend recap
So i was unable to get anything done this weekend with CCNetConfig except for the site design. I had the Slink Styles show on Saturday. I think the show was a success. There were people coming by the bus load, literally. By 1:30 am the U.S Beer Company was completely out of beer. Yes, they ran out of beer.



Here is how angry everyone got when they found out there was no beer left.


Ok, not really, it is a shot of Andy Newport, the lead singer for The Bag You Live In.
Ryan Conrad posted @ Monday, November 13, 2006 2:53 PM | Comments (0)
New design for website
I have just about finished up the new design for the CCNetConfig web site. there are a few minor things left to add and a couple fixes for some of the elements in IE7. I have no idea what it even looks like in IE6. If you want to take a look, at the bottom of the page there is a drop down to select the theme. Select CCNetConfig2 from the list. If it doesn't load the first time you select it, try selecting again or hit CTRL+F5. I think this is an issue with the caching that is done in dasBlog.

I also got a lot of feature request yesterday for CCNetConfig. I will see how many of them i can get in to the next release.

Filed Under [ CCNetConfig ]
Ryan Conrad posted @ Saturday, November 11, 2006 9:56 PM | Comments (0)
Development Update
I haven't posted in a little over a week so I thought that I should give a little status update. I am pretty happy with the current build of CCNetConfig. I will be implementing a few other minor things in the configuration UI. Properties that point to a file will have an UI Editor that allows for browsing for a file on the local machine or properties that point to a folder will have an UI Editor that allows to browse for a folder. These will only find files or folders on the local machine but if it is ran on the machine that CCNet runs on then this can ease filling out these properties.

Once these UI Editors are complete, I will be moving towards releasing Release Candidate 1 and hope to have RC1 out by the end of this month.

Filed Under [ CCNetConfig.GUI News ]
Ryan Conrad posted @ Friday, November 10, 2006 8:41 PM | Comments (0)
Beta Marker and more
So the latest version of CCNetConfig is on Beta Marker now. If you haven't checked out Beta Marker go and check it out, lots of different software titles "marked" by the people that use it. It is like digg for software. If you already know about Beta Marker, please go and mark CCNetConfig.

In 9 days, Slinky Styles will be playing with The Sons ( that is The Sons, not The Suns ), Arlum and The Bag You Live In at the U.S. Beer Company. This is a great lineup, if you aren't doing any thing and in the Chicago Land area come check out the show.

Filed Under [ Beta Marker CCNetConfig ]
Ryan Conrad posted @ Friday, November 03, 2006 4:15 AM | Comments (0)
BetaMark dasBlog macro part 2
This is the css used to display the info. There is a section that contains the location to the background image. Here is the image:

[code language="css"]div.StatusOfItemsL1 p.RemoveVersion, div.StatusOfItemsL2 p.RemoveVersion, div.StatusOfItemsL3 p.RemoveVersion, div.StatusOfItemsL4 p.RemoveVersion, div.StatusOfItemsL5 p.RemoveVersion { text-align: left; margin-left: -10px; margin-top: 11px; } .MarkNumber { margin-top: -2px; margin-left: -16px; width:100%; text-align: center !important; font-family: Arial, Helvetica, sans-serif !important; font-size: 16px !important; font-weight: bolder !important; color: #193F6B !important; } .MarkText { margin-top: 2px; margin-left: -16px; width:100%; text-align: center !important; } span.BoxClickable { display: block; height: 15px; width: 40px; margin-top: 10px; margin-left:-10px; margin-bottom: 0px; cursor: pointer; } div.StatusOfItemsL1, div.StatusOfItemsL2, div.StatusOfItemsL3, div.StatusOfItemsL4, div.StatusOfItemsL5 { /*float: left;*/ background-repeat: no-repeat; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bolder; color: #193F6B; padding-top: 4px; padding-left: 17px; background-position: 1px 0%; width: 58px; height: 75px; } div.StatusOfItemsL1, div.StatusOfItemsL2, div.StatusOfItemsL3, div.StatusOfItemsL4, div.StatusOfItemsL5 { /* change the url to the path of the image */ background-image: url(../images/mark.png); } div.StatusOfItemsL1 a span.BoxHide, div.StatusOfItemsL2 a span.BoxHide, div.StatusOfItemsL3 a span.BoxHide, div.StatusOfItemsL4 a span.BoxHide, div.StatusOfItemsL5 a span.BoxHide { display: none; } div.StatusOfItemsL1 span, div.StatusOfItemsL2 span, div.StatusOfItemsL3 span, div.StatusOfItemsL4 span, div.StatusOfItemsL5 span { font-size: 9px; font-weight: normal; display: block; } div.StatusOfItemsL1 p, div.StatusOfItemsL2 p, div.StatusOfItemsL3 p, div.StatusOfItemsL4 p, div.StatusOfItemsL5 p { text-align: left; margin-left: -10px; margin-top: 39px; } div.StatusOfItemsL1 p a, div.StatusOfItemsL2 p a, div.StatusOfItemsL3 p a, div.StatusOfItemsL4 p a, div.StatusOfItemsL5 p a { color: #41A0CF !important; font-family: Verdana, Arial, Helvetica, sans-serif !important; font-size: 0.7em; font-weight: normal; }[/code]
Filed Under [ Beta Marker ]
Ryan Conrad posted @ Friday, November 03, 2006 2:05 AM | Comments (0)
BetaMark dasBlog Macro
Here is the BetaMark macro that is used to display the marks. The public method is the macro that is called in the template. The first parameter is the category name that is in the path of the product, an example is "developer-tools". The second parameter is the id of the product, this is the number in the url after the category name.

[code language="c#"]public Control BetaMark ( string category, string id ) { return CreateBetaMark ( category, int.Parse(id) ); } private Control CreateBetaMark ( string category, int id ) { string url = "http://www.betamarker.com/software/{0}/{1}/"; string html = @"
{1} marks Mark it
"; string reqUrl = string.Format ( url, category, id ); bool useCache = false; int marks = 0; try { FileInfo markCache = new FileInfo ( HttpContext.Current.Server.MapPath ( "/content/cache/beta.mark" ) ); try { if ( !markCache.Directory.Exists ) markCache.Directory.Create (); if ( markCache.Exists ) { if ( markCache.LastWriteTime.Add ( new TimeSpan ( 0, 30, 0 ) ).CompareTo( DateTime.Now ) <= 0) useCache = false; else useCache = true; } } catch { useCache = false; } if ( !useCache ) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create ( reqUrl ); req.Timeout = 10 * 1000; HttpWebResponse resp = (HttpWebResponse)req.GetResponse (); Stream strm = resp.GetResponseStream (); string pattern = ".*?span[^>]*id=(?:\"|')totalMarksNumber{0}(?:\"|')[^>]*>[^<]*]*class=(?:\"|')MarkNumber(?:\"|')[^>]*>(?[^<]*)"; //return new LiteralControl(string.Format(pattern,id)); Regex regex = new Regex ( string.Format ( pattern, id ), RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline ); if ( strm != null ) { StreamReader reader = new StreamReader ( strm ); StringBuilder sbData = new StringBuilder (); using ( strm ) { using ( reader ) { while ( !reader.EndOfStream ) { sbData.AppendLine ( reader.ReadLine () ); } } } Match m = regex.Match ( sbData.ToString () ); if ( m.Success ) { int.TryParse ( m.Groups["marks"].Value, out marks ); //return new LiteralControl ( string.Format ( html, id, m.Groups["marks"].Value, reqUrl ) ); } else marks = 1; } else marks = 1; if ( markCache.Exists ) { try { markCache.Delete (); } catch { } } FileStream fs = new FileStream ( markCache.FullName, FileMode.OpenOrCreate, FileAccess.Write ); StreamWriter writer = new StreamWriter ( fs ); using (fs) { using ( writer ) { writer.Write ( marks ); } } } else { FileStream fs = new FileStream ( markCache.FullName, FileMode.Open, FileAccess.Read ); StreamReader reader = new StreamReader ( fs ); using (fs) { using (reader) { string str = reader.ReadToEnd (); int.TryParse ( str, out marks ); } } } return new LiteralControl ( string.Format ( html, id, marks, reqUrl ) ); } catch (Exception ex) { return new LiteralControl ( string.Empty); } }[/code]

The css will be in a separate post.
Filed Under [ Beta Marker ]
Ryan Conrad posted @ Friday, November 03, 2006 1:57 AM | Comments (0)
Well, we've upgraded to dasBlog 1.9
I have finished a majority of the modifications to dasBlog and have upgraded to the modified version. There are still some additional things I want to do but most have to do with the theme so I figured that it would be safe to upgrade. I have also added the current version information to the theme. I would also like to try to figure out how to implement the subcategories and implement them.

I will post the macro that I created to display the marks on BetaMarker this evening. It caches the value for X amount of time so it doesn't request to BetaMarker every page request. The only thing that I don't like about BetaMarker is that when a new version comes out and you have a previous version it doesn't mark it automatically.

Filed Under [ Beta Marker CCNetConfig News ]
Ryan Conrad posted @ Thursday, November 02, 2006 2:00 PM | Comments (0)
Moving to dasBlog 1.9 soon
I have almost finished putting together a modified version of dasBlog 1.9 and should be upgrading to it soon. I hope to move over to dasBlog 1.9 by the Monday the 6th. There are not a lot of modifications to the build but here are a few things I added.

  1. Support for custom syntax highlighter (already supported in this modified version)
  2. Support for Images with navigation items (also already supported in this version)
  3. Support for Yahoo! Ad Targeting in Feeds
  4. Support for Pheedo Ads in Feeds (Just to have options, I wont have both in the feed)
  5. Latest Nightly Binaries / Source
once I complete these and some other minor changes I will be upgrading here.
Ryan Conrad posted @ Thursday, November 02, 2006 1:43 AM | Comments (0)
Powered by Subtext - Version: 1.9.5.176
Copyright © 2006 - 2008 Ryan Conrad. All Rights Reserved. Privacy Policy