Monday 7 April 2014

The Power Of AppVeyor - Build using the cloud

AppVeyor is a relatively new cloud service which provides:
  • Phoenix build server
  • Scalable build server
  • Private NuGet feeds
  • Deployment to Azure/Amazone/private cloud/etc much like Octopus Deploy.
  • Platform independence, through configuration that is kept in your own repository
Im currently using it to get rid of yesterdays technologies such as TeamCity / CruiseControl .Net which binds our company to their platform and require loads of maintenance. I writing a new post upon this subject, so stay tuned, it should be out in a couple of days :).

AppVeyor will lift the majority of the burden there is by having an on-premises build server. You still have to configure an image every once in a while for AppVeyor if you need complete control and the default image is not good enough, but thats about it and then you have a scalable build server environment consisting of beautiful Phoenix servers.
The Phoenix servers will help you ensure that you know what is actually going on when stuff stops working. Unlike their counterpart Snowflake servers which over time becomes a horrible mess and unrealiable.

Try installing a new version of Visual Studio across 9 build servers, manually (if you lack provisioning as is common for MS) or try setting up SSH keys for TeamCity manually across the same 9 servers because you have a new colleague. Or hey, maybe try rebooting your build server, our old TeamCity server have failed to start on 2 occasions within the last 6 month and it was a simple reboot, no updates or anything.
See stuff like that sucks and ends up in tedious, manual work.

With services such as AppVeyor  you don't have the same amount of issues since you are using Phoenix servers and when it comes the initial setup AppVeyor handles all ssh/keys, branch builds, etc. for you as long as you just supply a GitHub account. Now since its a cloud service that means it has a team of employers dedicated to keeping their service running and the money flowing or else they are out of a job.
This is a good thing since it means that they're main concern is keeping the service running and evolving. This allows you to focus developing business application instead of maintaining a build server.
Thats a major win for most enterprices.

The biggest power of AppVeyor is its use of yml. Yml is a simple text format with which you can define a build. For ex:

  os: Windows Server 2012

  services:
    - mssql2012sp1

  assembly_info:
    patch: true
    file: AssemblyInfo.*
    assembly_version: "1.0.1.{build}"
    assembly_file_version: "{version}"
    assembly_informational_version: "{version}"

  platform: Any CPU
  configuration: Debug

  before_build:
    - nuget restore

  build:
    project: MySolution.sln
    publish_nuget: true

  test:
    assemblies:
      - MyTests.dll
  artifacts:
    - path: MyApplication\*.nupkg



In 21 lines I have described a complete build, run tests, package and publish setup. This is a text file i stick into my git repository and I'm done. No more configuring needed, AppVeyor does the rest.
Versioned build configuration,  means next to no hard dependency on the service, nice :).

AppVeyor has borrowed this concept from TravisCI and thanks heaven for that :).
Its simple, its ingenious.
It will empowered the developers to do the stuff that one guy normally takes ages to configure in TeamCity.
Finally setting up a build takes less than 5 minutes and everyone can do it. :)

With this feature AppVeyor completely blows away other services and tools for the enterprise, such as:
There are of course PaaS's such as AppHarbor or Azure for MS, but they have their limitations and are aimed at also hosting the applications. AppVeyor offers a platform independent service which saves the enterprise loads of manual, tedious and error prone work. A beautiful, simple, liberating first step into the advantages of the cloud. 

If you are working in one of those companies who have a privately maintained build server which tends to occupy a least one person every day, then you should seriously consider using a cloud service such as AppVeyor and free some vital resources at your company.

AppVeyor is still new, but have many things in the pipeline for the year to come that will also make it a serious competitor to Octopus Deploy. I just hope they don't get swiped up by MS or some other giant company who will let their service decline.

Locally maintained build servers, is about to become a thing of the past. :)


2 comments:

  1. Nice post. Quick question for you: How would you go about having to run special steps in your build process. For example you need to call a 3rd Party tool to obfuscate your code. Or you want to run some static code analysis once your build is finished (Sonar, Coverity Scan, you name it).
    Where would those steps fit in your workflow with AppVeyor?

    ReplyDelete
  2. Wow very old post :). Its all in the yml description https://www.appveyor.com/docs/appveyor-yml/. Depending on your needs you make an after build or after test step or simply integration it into you VS process as pre/post steps or by using some of the powerfull nuget packages out there :)

    ReplyDelete