AppVeyor

date_range
25 April 2014

I’ve been using AppVeyor for a long time now, but as I’m having a little break from revision I thought I’d write a little bit about it.

AppVeyor is a continuous integration (CI) server for .Net code. Now I love use CI, because even when your writing code by yourself, there’s nothing more useful to know that your code is compiling environmentally ignorant. That’s obviously just one of the many many reasons you should be using continuous integration especially in a team environment but that’s not what I’m here to discuss. I’ve tried AppHarbour as well and for simple projects it looks to work quite well, but the deployment options are rather limited. It would seem that AppHarbour would be a lot more useful if you were using their service to host your applications as well, but on my budget that wasn’t possible. Besides, I already had a hosting provider.

Now what has really turned me onto the AppVeyor service so much that they warranted a mention on my blog was AppVeyor’s second iteration of their service. I’m not 100% certain of the architecture they has before but what they have now is privately provisioned Azure virtual machines for each build. That means there’s no need for cleaning up of the environment every time a build is completed, as the environment just gets destroyed when the build has finished. The UI is a lot cleaner and uses web sockets so it automatically updates during a build. You can also publish a URL to a build project so others can see it without being AppVeyor members.

There’s a myriad of options out the box to configure what should occur during the build. One thing I’d like to note is the versioning; if selected the AssemblyInfo file gets patched with the build and iteration number which is especially useful when you’re creating NuGet packages which AppVeyor will create for you if you leave a .nuspec file in the root of the project and create a package with the version number from the AssemblyInfo. How cool is that! I’m using it for my extensions project and AppVeyor automatically pushes successful builds to Nuget and to my personal feed. It does this using “Environments” which can be reused between build projects, so for instance, I use my Personal Nuget environment to push NuGet packages from my extensions project, Ketchup and ServiceBus.

It also does WebDeploy, so this site is currently being continuously integrated then published to my test site. If there are no problems I can then promote the build to the live URL, so there is only one manual step from me making changes to a cshtml file, and it being pushed here.

I’ve only scratched the surface here so if you have an open source .Net project, give it a go. Oh and did I mention it’s free…?