AutoDeploy – Dogfood

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 –> 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 and completion % (total guess…there is no road-map so its pretty hard too tell)

  1. ASP.NET Build – 80%
  2. C# Build– 80%
  3. Custom Task (MEF) – 80%
  4. Database Migration – Not Started
  5. Email – 80%
  6. FileCopy – 80%
  7. Folder Monitor – 80%
  8. Ftp – 80%
  9. MS SQL Script – Not Started
  10. Subversion – 90%
  11. Vb Build – 80%
  12. Zip Compress – Not Started

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.

Without any more delay I present the current hotness…

The fluent interface (take 2)

   1:  var deployment = new Deployment();
   2:      deployment
   3:          .Named("PROJECTNAME")
   4:          .AtInterval(1)
   5:          .AddTask(
   6:              new FluentTask()
   7:              .Type(Task.TaskType.FolderMonitor)
   8:              .Source("http://REPO/tags/")
   9:              .Destination(@"D:\Temp\")
  10:              .Authentication()
  11:              .Credential(new NetworkCredential(@"UID","PASS"))
  12:              .Save()
  13:      )
  14:      .AddTask(
  15:          new FluentTask()
  16:          .Type(Task.TaskType.AspnetBuild)
  17:          .Save()
  18:      )
  19:      .AddTask(
  20:          new FluentTask()
  21:          .Type(Task.TaskType.FileCopy)
  22:          .Destination(@"\\SERVER_OR_LOCAL\Deployment")
  23:          .Save()
  24:      )
  25:      .AddCustomTask("WaitN")
  26:      .Save();
 
 
 

 

Changes of Note:

  1. 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.

Classic Usage

 

   1:  var _deploymentContainer = DeploymentContainer.GetInstance;
   2:  var deployment = new Deployment();
   3:  deployment.Name = "PROJECT";
   4:  deployment.Interval = 5;
   5:   
   6:  var monitorTask = new Task();
   7:  monitorTask.Type = Task.TaskType.FolderMonitor;
   8:  monitorTask.Source = "http://subversion/repo/tags/";
   9:  monitorTask.Destination = @"C:\Temp\";
  10:  monitorTask.Authentication.Credentials _
  11:   = new NetworkCredential(@"DOMAIN\PolerckyE", "PASSWORD");
  12:   
  13:  deployment.AddTask(monitorTask);
  14:   
  15:  var buildTask = new Task();
  16:  buildTask.Type = Task.TaskType.AspnetBuild;
  17:  deployment.AddTask(buildTask);
  18:   
  19:  var copyTask = new Task();
  20:  copyTask.Type = Task.TaskType.FileCopy;
  21:  copyTask.Destination = @"\\ServerName\path\";
  22:  deployment.AddTask(copyTask);
  23:   
  24:  deployment.AddCustomTask("WaitN");
  25:   
  26:  _deploymentContainer.AddDeployment(deployment);

Related posts:

  1. AutoDeploy Rework
  2. AutoDeploy.NET to GitHub
  3. Introducing: AutoDeploy



Leave a Reply