Appveyor Continuous Integration and Continuous Delivery

I’ve been maintaining/curating a nuget package for combinatorics over on Github for a while, which I decided to upgrade to .NET Standard over the weekend. I’d noticed that lots of other FOSS projects were up and running on a platform called AppVeyor and had nice little build passing checks on them like this build-passing so I decided to suss it out.

Appveyor is a cloud hosted continuous integration & continuous delivery platform. We use various CI and CD tools at work like Jenkins & Octopus which require a little bit of setting up so I wasn’t really sure what to expect. I certainly wasn’t expecting it to be this easy.

Appveyor Build

Signing up was a matter of creating a free account using my Github credentials (AppVeyor is free for open-source projects/public repos). Then it will prompt you to select the projects you’d like to pull in for CI. I chose the Combinatorics project. Next it figured out from the presence of the Solution (.sln) file, and two unit test projects (MSTest) within, that this was a .NET project and it auto-generated an MSBuild CI job, including automated test runs. Boom! CI Pipeline Done. I’m suitably impressed.

Beyond the vanilla setup it seems quite extensive in its capabilities:

  • You can control which branches/tags and pull requests automatically trigger builds as well as triggering them yourself via web-hook or cron schedule
  • It allows you to customise your entire build pipeline by inserting scripts pre build, pre package, post build, on success, on fail through out for custom jobs execution.
  • You can be notified in a variety of different ways including email, web-hook or slack
  • It has built in transformation processes for AssemblyInfo files so you can tie your build and version info together
  • You can add custom artifacts to include in deployments
  • It supports a whole variety of target deployments for your project artifacts including Azure, FTP, Nuget and more

There’s probably more I haven’t discovered yet. Next job will be to automate the push to Nuget based on commits back to master after Pull Requests are confirmed.

~Eoin C