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 status](https://ci.appveyor.com/api/projects/status/5uwjfc79j458m4ju?svg=true)](https://ci.appveyor.com/project/eoincampbell/qluent) 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.
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.