Super Simple SVN Deployment

This is about as bare bones as it gets for deploying your web application. It's meant to be a simple and mundane way to publish application updates to a single server or web farm.
  1. Create a folder in your subversion root, like http://mysvnserver/svn/myproject/trunk/deploy/release.
  2. Publish your application to the app-relative root.
    • C:\code\myproject\source\*.* (this is where my code lives)
    • C:\code\myproject\deploy\release\*.* (this is where I publish my application)
  3. Tell SVN Deploy to map http://mysvnserver/svn/project/trunk/deploy/release to map to C:\inetpub\wwwroot\myproject on your server. (See the section on setting up your configuration folder.)
  4. > installutil svndeploy.exe
  5. > net start svndeploy
  6. Checkins to your indicated folder will automatically be pushed to your application server!

That's it!

What SVN Deploy is not

  • SVN Deploy is not a build server.
  • SVN Deploy is not a test server.
  • SVN Deploy is not capistrano.

Yes, you can probably do all of this with a good enough knowledge of MSBuild, MSDeploy, and a lot of other work. But why when this is so easy?

Setting up the configuration file.

You'll need a svnDeploy section for your Windows service.

<svnDeploy wait="10" interval="600">
  <authentication domain="" username="" password=""/>
  <backupSettings backup="true" numberOfBackupsToKeep="5" path="C:\web backups" />
  <applications>
    <add name="SVN Deploy Sample" svnPath="http://my.svn.host/svn/svn-deploy-sample/deploy/release" virtualDirectory="C:\inetpub\wwwroot\my-deploy-sample"/>      
  </applications>
</svnDeploy>

  • svnDeploy
    • wait: wait 10 seconds before running for the first time.
    • interval: run every 600 seconds after running for the first time.
  • svnDeploy/authentication
    • uses domain, username, and password to set up network credentials.
  • svnDeploy/backupSettings
    • numberOfBackupsToKeep: keep the last 5 backups of each project. Backups will be zip files named after the application name and server timestamp.
    • path: store the backups in this folder.
  • svnDeploy/applications
    • name: name of application
    • svnPath: path to watch for updates.
    • virtualDirectory: path to update.

Last edited May 23, 2011 at 10:18 PM by jarrettmeyer, version 7