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

April 2007 Entries

Iron Python 2.0 Alpha Released on CodePlex
Iron Python 2.0 alpha was released today. Here is the description posted in the release.

"We have just released IronPython 2.0 Alpha 1. IronPython 2.0 will be the first release of IronPython built upon a common dynamic language runtime (DLR) as well as targeting version 2.5 of Python. One major focus during this release will be further improving our conformance with CPython. We’ve already made several improvements, for example one is that our type system no longer contains a hierarchy of types: now type(type) is type. We have also fixed a number of issues related to various statements such as imports and function definitions inside of exec or eval. There have also been a number of other small issues fixed that our users reported to us.""


Filed Under [ CodePlex ]
Ryan Conrad posted @ Monday, April 30, 2007 6:01 PM | Comments (0)
CodePlex TFS Issues
As I have said in a couple previous posts, CodePlex had an issue with one of their TFS servers and had to move those projects on the troubled server to a different server. Well They recently restored the issues for those projects but the change history for all those projects is floating off in to the Nothing. I wasn't really that upset about it. Do I think it was handled poorly? Yes, none of the project coordinators were contacted in any way to let them know of the problem. CodePlex has an email address for all users so there is no reason an email could not have been sent to all the people that had projects on that server. Do I think they should of had a backup of the data? Yes. I think this will really hurt their reputation as a trust worthy hosting provider for projects. When you choose a hosting service for your open source project, you have an expectation that a reliable backup would be provided as part of your service.

Now the TFS issues didn't really affect me that much. The projects that were on that server were pretty new so there wasn't a lot of change sets, plus I have a running backup of every build and the source code stored on my build server. But what about the other projects? Do you think that everyone has this? I don't. I hope that there is a backup and the CodePlex team is just working hard to figure out a way to move those changes to the new servers the projects are hosted on.

I think that CodePlex needs to assure their clients that this wont happen in the future and if it does happen that they have a way to restore it so you will never know it happened. If they can not do this, then they may have a hard time getting the "high profile" projects hosted there and they will have the same fate as GotDotNet. Not that I want that to happen. I do like CodePlex for hosting my projects, and I want to keep them there as well. But what will happen when Microsoft decides that they now have a better site that does what CodePlex does, sort of like they said about GDN after CodePlex launched.

I now return you to your regularly scheduled programming.

Filed Under [ CodePlex Rant TFS ]
Ryan Conrad posted @ Sunday, April 29, 2007 7:20 AM | Comments (0)
Projects now using CodePlexReleasePublisher
CCNetConfig is now using the CodePlex Release Publisher to create the releases on CodePlex. This means that the beta builds will be added to CodePlex as well. I have also set it to distinguish between the Beta and Production builds in the name. The CodePlex Release Publisher (CPRP) allows you to specify the type of build condition to publish, so if you only want stable production builds (a force build) to be created, you can set the build condition to "ForceBuild". The default is all build conditions. The latest beta of CCNetConfig has support for CPRP and I have updated an example macro in the Rss Builds Publisher to make use of the release information that CPRP adds to the TaskResults, although I haven't been able to fully test this macro yet.

I noticed the other day that the I have not checked in the latest code for the MSBuild Extended Tasks on CodePlex. Since they had the problem with the TFS server the project has not had any source available. I will get that checked in ASAP and get some builds for that published on CodePlex.
Technorati Tags:[continuous integration] [ccnetconfig] [codeplexapi] [cruisecontrol.net] [codeplex release publisher] [tfs] [rssbuildspublisher
Filed Under [ Automation CodePlex CodePlexAPI ]
Ryan Conrad posted @ Sunday, April 29, 2007 12:48 AM | Comments (0)
CruiseControl.NET Monitor for Vista Sidebar
Simone Chiaretta has released an updated version of his Vista Gadget that monitors a CruiseControl.NET instance. You can get it on Simone's blog, or a direct link is here. It has a nice compact view when in the sidebar and a full details view when undocked. This updated version fixes some issues reported by people using the tool:
  • long project names hides the scroll buttons
  • the status of projects sometimes is not updated
  • the settings page always displays the hint value instead of the real value of the dashboard url
  • scroll buttons are "ugly" (ok, not a bug, but now it's looking nicer)

Filed Under [ CruiseControl.NET Tools Vista ]
Ryan Conrad posted @ Friday, April 27, 2007 1:59 PM | Comments (0)
CodePlexRelease Publisher
I have put together a small project that is a CruiseControl.NET Publisher that will automate the process of creating a release on CodePlex. This is all thanks to the API that the CodePlex team released earlier this week. The CodePlexAPI includes MSBuild Tasks but I don't think that MSBuild tasks are the best solution since creating a release on CodePlex requires credentials that have permissions to create the release on the project. In many cases the MSBuild script is controlled by the Version Control System. While a ccnet config file is probably controlled by a Version Control System also it probably isn't controlled by the CodePlex Source Control.

So that is why I created this publisher. The publisher is now available on CodePlex. The current release, 0.1.0.3, was created on automatically by the CodePlexReleasePublisher.

CCNetConfig will probably have support for this publisher by the end of the weekend.

Here is an example of what a configuration block might look like.

[code language="xml"] [CodePlexUsername] [CodePlexPassword] $(ProjectName) $(Label) false Planned false false [/code]

Filed Under [ CodePlex CodePlex Release Publisher CodePlexAPI CruiseControl.NET MSBuild ]
Ryan Conrad posted @ Thursday, April 26, 2007 12:43 PM | Comments (0)
Anonymous readonly access to CodePlex source coming May 15th 2007
The CodePlex team has set the next release date and they have marked the anonymous access to CodePlex feature request as one of the items that will be part of the release. The CodePlexAPI does grant access to the source with out logging in but it does so using the change sets and then unzips the file to the working directory if you use the CodePlex Source Control block. The feature coming out on the 15th will actually allow any user to connect to the CodePlex TFS and get the latest source using a source control client like Visual Studio, TF.exe, TeamPrise or the CodePlexClient.

Now if we can only get API to submit work items or even anonymous work item submission. Another nice feature that I thought of recently is something that SourceForge supports, the creation of a subdomain, while it is nice that you can now get to your project page on CodePlex by doing http://codeplex.com/ccnetconfig, it would be nice to be able to have http://ccnetconfig.codeplex.com/ and have it point to the project page. This will allow people to map their own domains to point to the CodePlex domain.

Filed Under [ CodePlex CodePlexAPI TFS TFS Plugin ]
Ryan Conrad posted @ Wednesday, April 25, 2007 2:01 PM | Comments (0)
CCNetConfig 0.4.3.3
The latest beta build (0.4.3.3) adds the option to sort the projects alphabetically. If you have this option selected, it will reorder them in the configuration file when it is saved but will also show them in the tree ordered by the project name. Also added was support for the CodePlex Source Control Block plugin released yesterday by the CodePlex team. The CodePlex also released WebService Urls, MSBuild Tasks and a set of wrappers for the API.

I also started a small project on CodePlex for a CruiseControl.NET publisher that will create the release on CodePlex like the MSBuild Tasks do. The reason for this publisher, at least for me, is because an MSBuild script is probably under Version Control on CodePlex but the CruiseControl configuration file is not. Since the MSBuild tasks require a username and password to create the release this doesn't seem like a practical way to create the releases. In the configuration file, since it's not under the same source control, it will be ok to store the username and password in the configuration file. I don't expect to be spending a whole lot of time on this project. I will get it working using the CodePlexAPI and try to make it as flexible as possible for others to use but my main concern is getting it working for the CCNetConfig project. One issue I see is the files to upload. With MSBuild it is a bit easier since the files are usually generated there or zipped up in the MSBuild script. I may end up doing something like the Rss Builds Publisher where you can use properties like $(ProjectName) or $(Label) to dynamically generate the file names.

Once I get the CodePlexPublisher working, I will be automating the release process of CCNetConfig using that. I would also like to find a way to get the release id so it can be used in the Rss feed item that is created by the Rss Builds Publisher. I will be digging in to the CodePlexAPI this week and will post some examples and information on the API. You can see the official documentation on the CodePlexAPI Wiki.

Back to the CodePlex SourceControl Block. These properties were identified by using Reflector, so the documentation for them is from what I figured out they were for. Some were obvious what they are for, others I had to look at some of the code a bit to figure it out. The project path I am still a little shaky on. I think that it is something like the path in TFS plugin where you define $/projectname/path/.

Here is a screen shot of the source control block being used.

 



Technorati Tags:[ccnetconfig] [codeplex] [codeplexapi] [msbuild] [tools]
Filed Under [ CCNetConfig TFS ]
Ryan Conrad posted @ Wednesday, April 25, 2007 12:38 PM | Comments (0)
Saving a new configuration file fixed
0.4.3.2 has the saving of a new configuration fixed. The problem was with the BackupControler. It was attempting to copy the file to the backup directory even if the file did not exist. This has been corrected and it now checks for the file existing before it attempts to copy it. This is the only change in the latest build.

I hope to have a production release out by May 1st. I have most of the features that I want added to the 0.4 release in there, just have a couple minor things to do and then I will be putting out the production release on CodePlex. I also want to get this release out as soon as possible because I want to get people using the new update engine. I think by people using the new update engine there will be more people using Beta builds. The more people that use the beta builds, the more feedback hopefully I can get on the builds from the users.

Today is also the day that CodePlex is supposed to release their API for submitting releases to CodePlex for projects. If they release this today, I want to start looking at the documentation and the tools they make available and start pushing all builds to CodePlex.

 

Technorati Tags:[ CodePlex ] [ CCNetConfig ]
Filed Under [ Beta CCNetConfig ]
Ryan Conrad posted @ Tuesday, April 24, 2007 3:31 PM | Comments (0)
Prebuild section fixed
The Prebuild configuration is not working correctly in 0.3.11.1, This has been fixed in 0.4.3.1. There is still is an issue with creating a new configuration when saving if the file doesn't exist. This should be a simple fix and I should have this fixed later today. A simple fix until the next nightly build is to create a file named ccnet.config where you want to save the new configuration. It can be an empty file, it just needs to exist.

Filed Under [ CCNetConfig ]
Ryan Conrad posted @ Monday, April 23, 2007 1:27 PM | Comments (0)
Rss Builds Publisher Release Take 2
For some reason I already posted this info and dasBlog shows that there is a post but it isn't showing up in the feed or on the site. I can't even see it to edit it. Anyway, a production release is available for version 0.1.1.7 of the Rss Builds Publisher on CodePlex. It was more of a pain then I anticipated to get this build up there because of a recent problem CodePlex had with one of their TFS servers. I read about the problems some time last week but didn't worry much about it because I assumed that the problem would be resolved. Well, I was wrong. All Projects on the TFS03 server were moved to TFS02. The problem with this is there is no version history on the new server for any project. All the change sets prior to my checkins yesterday are currently lost. Well there is nothing that I can do about it, the latest code is checked in and I have change set history from prior builds anyhow.

Since the release of a stable release of Rss Builds Publisher I set up an Rss feed for all builds, stable builds and the already available beta builds.

I will be leaving for Texas later on today so I will be quite for the next couple days.

Filed Under [ CodePlex RssBuildsPublisher TFS ]
Ryan Conrad posted @ Thursday, April 19, 2007 12:29 PM | Comments (0)
Rss Builds Publisher Delay Info
I haven't been able to get the release up on CodePlex as of writting this. I hope to be able to get it up there tonight. I expect the rest of this week to be slow with posts and with updates. I will be traveling to San Antonio, TX on Thursday afternoon to attend my brothers graduation from the United States Air Force Boot Camp so I will basically be without internet and PC access until Saturday evening when I return.

Filed Under [ RssBuildsPublisher ]
Ryan Conrad posted @ Tuesday, April 17, 2007 8:14 PM | Comments (0)
Rss Builds Publisher Release Delayed
I had to delay the release that was planned this weekend for a few days. I was busy rebuilding my development machine this weekend. I moved to Windows Vista and all most have all the essentials installed. I do have to call Microsoft later today because after installing I added some more hard drives and moved some things around on the main board it said I needed to activate again but when I went to activate, it told me that the key has already been used. I got the Windows Vista Business from the Power Together promotion. Once I activate Windows and finish installing and setting up my system I will get the release out on CodePlex.

Filed Under [ CodePlex RssBuildsPublisher Vista ]
Ryan Conrad posted @ Monday, April 16, 2007 1:34 PM | Comments (0)
Rss builds Publisher Release coming this weekend
If you have downloaded the Rss Builds Publisher, using it and found any bugs please report them so I can get them fixed. I plan on releasing a production release on CodePlex by 4/15/2007. I have been using the Rss Builds Publisher for over a month internally and the data delivery system for updates for the beta builds of CCNetConfig for a couple weeks now. The example Macros are functional and the customization of the feed and feed items is about as flexible as I can think of making it.

Filed Under [ CodePlex RssBuildsPublisher ]
Ryan Conrad posted @ Friday, April 13, 2007 12:43 PM | Comments (0)
Notepad2 version 2
Florian Balmer has release a new version of the awesome text editor Notepad2. There are a lot of changes, but the most important are:

  • Added proper support for multiple monitor systems ( This is huge for me, I hated when it would open off screen )
  • Allow multiple window position settings for different screen sizes
  • Option to use a sticky window position
  • Added Apache Config Files syntax highlighting
  • Added Perl POD verbatim style
  • Don't prompt to save modified empty untitled documents
  • Find and replace dialogs: exclusive options deactivate each other
  • Settings are stored in ini-file
  • Updated Scintilla library to 1.73
  • BSD License for Notepad2 and source code (see License.txt)
If you never used Notepad2, here are some of the features:

  • Syntax highlighting: HTML, XML, PHP, ASP (JS, VBS), CSS, JavaScript, VBScript, C/C++, C#, Resource Script, Makefiles, Java, Visual Basic, Pascal, Assembly, SQL, Perl, Python, Configuration Files, Apache Config Files, Batch Files, Diff Files
  • Drag & drop text editing inside and outside Notepad2
  • Basic regular expression search and replace
  • Useful word, line and block editing shortcuts
  • Rectangular selection (Alt+Mouse)
  • Brace matching, auto indent, long line marker, zoom functions
  • Support for Unicode, UTF-8, Unix and Mac text files
  • Open shell links - Mostly adjustable
I can not say enough how much I love this editor. I have remapped all files that open in notepad to open with this. I have taken the advice of Scott Hanselman and put it in a directory that is part of %PATH% and renamed it to n.exe so "I can save dozens of "otepad2"s a day".

Filed Under [ Tools ]
Ryan Conrad posted @ Thursday, April 12, 2007 9:17 PM | Comments (0)
Plans for this site

I have been thinking about making some changes to ccnetconfig.org. It will still be the main source of information for CCNetConfig, but I also want to include some of the other projects that have sort of came to be because of this project, like Rss Builds Publisher. One of the changes is I have launched a Wiki, I know codeplex has a wiki for the projects but I want a little more power to modify the look of the wiki and may be add some functionality. Currently the wiki is empty but I will be putting some content there shortly. I have also been thinking about moving to Subtext for a blog engine, not that I am not happy with dasBlog, but the logging has failed on me as of late and I don't feel like trying to figure out what the problem is. I don't plan on moving this over until I get a new design done and all content working on the new engine.

Filed Under [ CCNetConfig RssBuildsPublisher SubText Wiki ]
Ryan Conrad posted @ Wednesday, April 11, 2007 10:52 PM | Comments (0)
Added Support for Ping and Example Macros
The latest build of Rss Builds Publisher has support for pinging sites like FeedBurner. This feature is very basic and may actually change a little in the future. In order to ping a host, you would add a pingItems element and then add one or more pingItem elements to that. A pingItem has the following attributes:

pingHost: The url to ping
feedUrl: url to your generated xml file
feedTitle: The title of the feed

CCNetConfig has been updated to support the changes to Rss Builds Publisher as well. A Modal Multiline string editor was also added to CCNetConfig for editing things like the DescriptionHeader and DescriptionFooter values. This dialog makes it easier to edit multiple line strings then the default multiline string editor that drops down below the property value. 

Filed Under [ CCNetConfig RssBuildsPublisher ]
Ryan Conrad posted @ Monday, April 09, 2007 6:08 PM | Comments (0)
Rss Builds Publisher fixed
I fixed the resources problem that I identified yesterday and I added the example macros to source control. After the build, I made a couple changes to the DiggThis macro so it loads the content in an iframe. I will work on that a little bit more because most readers will not show the iframe. I still have a little tweaking to do to the build script, after I changed it to not include the referenced CC.NET libraries the documentation failed last night. I will have it fixed and building again this soon.

Filed Under [ RssBuildsPublisher ]
Ryan Conrad posted @ Friday, April 06, 2007 11:57 AM | Comments (0)
Example Rss Builds Publisher Macros
I have put together some example macros that I will include in the Solution as well when I fix the resource problem. I have create 5 working macros for examples. One of them isn't 100% usable yet and depends on what the CodePlex API will return about the releases because it creates a link to a release based on the release Id.


Yahoo Publisher Network macro: This will add Yahoo ads to the feed item
example: @{YahooPublisherNetwork(12341541541,345754,http://google.com/feed)}
This macro takes 3 arguments, the first is the publisher ID, the second is the feed id, the final argument is the url to the feed item

[code language="C#"]using System; using System.Collections.Generic; using System.Text; using CamalotDesigns.CCNet.Publishers.Macros; using System.Text.RegularExpressions; namespace CamalotDesigns.RBP.ExampleMacros { public class YahooPublisherNetwork : IMacro { #region IMacro Members public string Execute ( ThoughtWorks.CruiseControl.Core.IIntegrationResult result, string args ) { try { string[] values = args.Split ( new char[] { ',' } ); if ( values.Length != 3 ) return string.Format ( Properties.Strings.ArgumentLengthMessage, this.GetType ( ).Name ); string sb = Properties.Strings.AdCode; Regex regex = new Regex ( string.Format ( Properties.Strings.ReplacePattern, Properties.Strings.YPNFeedIdName ), RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline ); sb = regex.Replace ( sb, values[ 1 ] ); regex = new Regex ( string.Format ( Properties.Strings.ReplacePattern, Properties.Strings.YPNFeedIdName ), RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline ); sb = regex.Replace ( sb, values[ 0 ] ); regex = new Regex ( string.Format ( Properties.Strings.ReplacePattern, Properties.Strings.EncodedUrlName ), RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline ); sb = regex.Replace ( sb, System.Web.HttpUtility.UrlEncode ( values[ 2 ] ) ); return sb; } catch ( Exception ex ) { return string.Format ( "MacroError: {0}", ex.Message ); } } #endregion } } [/code]

The KickIt macro will place a "kick it" image and link in the feed.
example: @{KickIt(http://yourdomain.com/your/page.aspx)}
This macro accepts 1 argument, the url to the article

[code language="C#"]using System; using System.Collections.Generic; using System.Text; using CamalotDesigns.CCNet.Publishers.Macros; namespace CamalotDesigns.RBP.ExampleMacros { public class KickIt : IMacro { #region IMacro Members public string Execute ( ThoughtWorks.CruiseControl.Core.IIntegrationResult result, string args ) { try { string[] values = args.Split ( new char[] { ',' } ); if ( values.Length != 1 ) return string.Format ( Properties.Strings.ArgumentLengthMessage, this.GetType ( ).Name ); return string.Format ( Properties.Strings.KickItCode, values[ 0 ] ); } catch ( Exception ex ) { return string.Format ( "MacroError: {0}", ex.Message ); } } #endregion } }[/code]

The CodePlexChangeset macro links to the specified change set for download.
example: @{CodePlexChangeset(ccnetconfig,21110)}
This accepts 2 arguments, the first is the url name of the project, the second is the change set Id

[code language="C#"]using System; using System.Collections.Generic; using System.Text; using CamalotDesigns.CCNet.Publishers.Macros; namespace CamalotDesigns.RBP.ExampleMacros { public class CodePlexChangeset : IMacro { #region IMacro Members public string Execute ( ThoughtWorks.CruiseControl.Core.IIntegrationResult result, string args ) { try { string[] values = args.Split ( new char[] { ',' } ); if ( values.Length < 2 ) return string.Format ( Properties.Strings.ArgumentLengthMessage, this.GetType ( ).Name ); string text = string.IsNullOrEmpty ( values[ 2 ] ) ? string.Format ( "CodePlex Change Set {0}", values[ 1 ] ) : values[ 2 ]; string linkFormat = @">a href="" http://www.codeplex.com/{0}/sourcecontrol/downloadsourcecode.aspx?changesetid={1}""<>img src=""http://www.codeplex.com/app_themes/codeplex/images/icon_dwnld.gif"" alt=""{2}"" title="" {2}""< {2}/<>/a<"; return string.Format ( linkFormat, values[ 0 ], values[ 1 ], text ); } catch ( Exception ex ) { return string.Format ( "MacroError: {0}", ex.Message ); } } #endregion } } [/code]

The DiggThis macro creates a digg button which allows user to "digg" the story.
This macro has 1 required argument, that is the url to the story, but can have the following arguments as well.
  • Url
  • Title
  • Body
  • Category
  • Color
example: @{DiggThis(http://google.com/mystory/)}

[code language="C#"]using System; using System.Collections.Generic; using System.Text; using CamalotDesigns.CCNet.Publishers.Macros; using System.Net; using System.Web; using System.IO; namespace CamalotDesigns.RBP.ExampleMacros { public class DiggThis : IMacro { #region IMacro Members public string Execute ( ThoughtWorks.CruiseControl.Core.IIntegrationResult result, string args ) { try { string[] values = args.Split ( new char[] { ',' } ); if ( values.Length < 1 ) return string.Format ( Properties.Strings.ArgumentLengthMessage, this.GetType ( ).Name ); string url = string.Format ( "http://digg.com/tools/diggthis.php?u={0}&t={1}&b={2}&c={3}&k={4}", Escape ( values[ 0 ] ), values.Length > 1 ? Escape ( values[ 1 ] ) : string.Empty, values.Length > 2 ? Escape ( values[ 2 ] ) : string.Empty, values.Length > 3 ? Escape ( values[ 3 ] ) : string.Empty, values.Length > 4 ? Escape ( values[ 4 ] ) : string.Empty ); HttpWebRequest request = HttpWebRequest.Create ( url ) as HttpWebRequest; request.UserAgent = "Rss Builds Publisher for CC.NET ( http://codeplex.com/rssbuildspublisher/ ) - Digg It Macro"; HttpWebResponse response = request.GetResponse ( ) as HttpWebResponse; StreamReader reader = new StreamReader ( response.GetResponseStream ( ) ); string respString = string.Empty; using ( reader ) { respString = reader.ReadToEnd ( ); } return respString; } catch ( Exception ex ) { return string.Format ( "MacroError: {0}", ex.Message ); } } #endregion private string Escape ( string str ) { return HttpUtility.UrlEncode ( str ).Replace ( @"\", "%2b" ); } } }[/code]

The last macro is the one that can not be 100% automated by ccnet, and might not be able to be, that will depend on the CodePlex Api set to be released on the 24th of this month. This macro takes the url project name and the release Id as arguments
example: @{CodePlexRelease(ccnetconfig,12345)}

[code language="C#"]using System; using System.Collections.Generic; using System.Text; using CamalotDesigns.CCNet.Publishers.Macros; namespace CamalotDesigns.RBP.ExampleMacros { public class CodePlexRelease : IMacro { #region IMacro Members public string Execute ( ThoughtWorks.CruiseControl.Core.IIntegrationResult result, string args ) { try { string[] values = args.Split ( new char[] { ',' } ); if ( values.Length < 2 ) return string.Format ( Properties.Strings.ArgumentLengthMessage, this.GetType ( ).Name ); string text = string.IsNullOrEmpty ( values[ 2 ] ) ? string.Format ( "CodePlex Release {0}", values[ 1 ] ) : values[ 2 ]; string linkFormat = @"<a href=""http://www.codeplex.com/{0}/release/projectreleases.aspx?releaseid={1}""><img src=""http://www.codeplex.com/app_themes/codeplex/images/project_icon_sm.gif"" alt=""{2}"" title=""{2}"" /> {2}</a>"; return string.Format ( linkFormat, values[ 0 ], values[ 1 ], text ); } catch ( Exception ex ) { return string.Format ( "MacroError: {0}", ex.Message ); } } #endregion } }[/code]

I don't have a download available for these macros yet, but they will be included in the Rss Builds Publisher releases starting with the next nightly.

Filed Under [ CodePlex RssBuildsPublisher ]
Ryan Conrad posted @ Thursday, April 05, 2007 4:41 PM | Comments (0)
Rss Builds Publisher 0.1.1.1 Problem
I just found a problem with the 0.1.1.1 build of the Rss Builds Publisher. The resources were not included in the build process so the plugin fails. I will correct this issue later on today.

Filed Under [ RssBuildsPublisher ]
Ryan Conrad posted @ Thursday, April 05, 2007 3:37 PM | Comments (0)
0.4.0.4 Changes and Rss Builds Publisher 0.1.1.1
Just a small change to CCNetConfig today. I made the chages to support the changes that are in the new Rss Builds publisher. I changed the BuildConditon enum for the Rss Builds Publisher to support the AllBuildConditions value. This allows the Rss Builds Publisher to generate Rss items for the build no matter what the build condition is. So if you wanted to have an Rss feed that shows all builds you could do so with out having to create 2 Rss Builds Publishers, you could just leave the BuildCondition property set to the default value or set it to AllBuildConditions. The IMacro interface is now set to public so it can be implemented by external projects. This will allow you to create your own macros. For the Rss Builds Publisher to load your external macros, your assembly must follow the following name format: RBP.Macros.*.dll. The '*' can be anything that you want to describe your macro assembly. The namespace of your macros does not matter but you must implement IMacro.

Filed Under [ CCNetConfig RssBuildsPublisher ]
Ryan Conrad posted @ Thursday, April 05, 2007 12:28 PM | Comments (0)
Fixed the issues in 0.4.0.2
I checked in the code yesterday to fix the issues that existed in 0.4.0.2. They are fixed in 0.4.0.3. Fixed the issue with loading the 0.4 build for the first time and the components not showing up in the options dialog sometimes. If you already have a 0.4.x build you can use the update feature to check for updates of beta builds to update. Please try this out and let me know if you have any problems with this.

I will be putting another update out soon to 0.4.x that will support changes that I am making to the Rss Builds publisher. I am changing Rss Builds Publisher to allow publishing for all build conditions as a default, currently you can only choose IfModificationExists or ForceBuild, which means you would have to have 2 publisher instances defined if you want to publish all builds to an rss feed.

Before I will be able to make these changes, I have to figure out a problem that I started having yesterday with Visual Studio and TFS. CCNetConfig is on tfs01.codeplex.com and rss builds publisher is on tfs03.codeplex.com and all of a sudden, Visual Studio is acting strange when i attempt to open these projects. It is trying to bind it to tfs03 when it should bind to tfs01 so then it loads it "uncontrolled". I am sure it has to do with my ApplicationData folder getting deleted the other day, boy was that a pain in the ass to recover from! I was able to restore most of the directory but a lot of the files were corrupted almost immediately.

I will post more about these updates when I get this all sorted out and check in the changes.

Filed Under [ CodePlex RssBuildsPublisher TFS Visual Studio ]
Ryan Conrad posted @ Wednesday, April 04, 2007 7:13 PM | Comments (0)
Didn't check in the changes
I got the issue with the initial start up fixed yesterday, but I was unable to pinpoint what is causing the components not to load in the options dialog. I think it has to do with loading them on a separate thread, but I can't reproduce it as easily on my development machine as I can on other machines. Even if i can't find the root cause of this today I will be checking in the code that fixes the startup issue.

I will also be checking in some code this week for Rss Builds Publisher that will allow for external macro assemblies. Also the change will make it so it will be able to generate rss items no matter what the build condition, or based on the build condition.

Filed Under [ CCNetConfig RssBuildsPublisher ]
Ryan Conrad posted @ Tuesday, April 03, 2007 12:28 PM | Comments (0)
0.4.0.2 Nightly
The first nightly for the 0.4 build is available. There are a couple known issues with this build. when you first start CCNetConfig you will get an unhandled exception because it is trying to load the new user settings that do not yet exist. I will correct this issue later today. If you close the exception, CCNetConfig will continue to load and the default settings will be created and then this error shouldn't occur after that. Also I found that if you open the options dialog the components do not seem to load in the listview after the first time. Again, I will work on this later today as well.

It seems that the license in the installer is still being set to the Wix default license. I will be posting to the Wix discussion list to try to get a resolution to this issue.

Work Items associated with this build:

Features:
  • Options to hide types that are not needed
  • Add Unhandled Exception Handler
  • Use published Rss feeds for updates
  • Add Options Dialog to Change Settings
  • Ability to choose Updates type: Stable | Beta
  • Proxy Support for updates
Issues:
  • Saving when closing will fail if missing required value
  • ForceBuild publisher name has incorrect casing.
  • Context menu shows up in wrong place
Tasks:
  • Use Rss Builds Publisher to publish all builds
  • Add additional components used in CCNetConfig to the about dialog
  • Incorrect License loaded in Wix

Filed Under [ CCNetConfig Continuous Integration RssBuildsPublisher Wix ]
Ryan Conrad posted @ Monday, April 02, 2007 1:42 PM | Comments (0)
Powered by Subtext - Version: 1.9.5.176
Copyright © 2006 - 2008 Ryan Conrad. All Rights Reserved. Privacy Policy