After analysis of few different services I have chosen AppVeyor, because it meets all my expectations. This is a simple on-line service which is free for public projects hosted on GitHub, Bitbucket or VisualStudio Online.
Configuration for different project types
For .NET application the most important feature is just to build whole solution and run tests for specifics projects. That’s what we want to configure.
I will explain the configuration on example public GitHub project.
At first, we should add a project to our account.
Then we can test, if build for this project succeed. Probably not, because we didn’t configure NuGet for our project. Generally NuGet should be configured to don’t store all packages on repository. Then it can be automatically downloaded by this package manager. That’s why we should tell AppVeyor to download this package before building the project. We should only add a special script to execute before build in Build tab in Configuration options.
For test configuration it is enough to trust “Automatic discovery” option. It works well for NUnit tests and according to list https://www.appveyor.com/docs/running-tests it supports most of the popular test libraries.
Finally we can rerun build for our project to see that commit becomes green and all tests passes.
appveyor.yml in the main directory of our project. This is another method for configure the build process. You can find more information about this file in https://www.appveyor.com/docs/build-configuration.
In our case we want to run
npm install phase and also run test from
package.json configuration file. Of course, you can have different configuration of npm tasks, but the only one thing that you need to do is to modify this definition file to match your npm/gulp task names.
# Install scripts. (runs after repo cloning) install: # Get the latest stable version of Node.js - ps: Install-Product node # install modules - npm install # Post-install test scripts. test_script: # Output useful info for debugging. - node --version - npm --version # run tests - npm test # Don't actually build. build: off
Before we run
npm we have to be sure that we install it. It can be done with PowerShell command
It is very useful to set up a notification system to inform you immediately about the build status. We can do this in project settings. We can configure it to send email or Slack message if the build fails.
The last important part of Continues Integration process is deployment. We can configure AppVeyor, to give us a quick method to start project deployment. We can configure a deployment using WebDeploy, FTP server or even Azure Cloud.
Deployment to GitHub pages
I use a GitHub Pages mechanism as I described earlier http://www.diwebsity.com/2016/03/08/najtanszy-hosting-dla-projektow-webowych/ therefore I want to integrate it with AppVeyor. It is very easy, because the only one necessary part is to configure custom deployment script using:
This is the basic type of CI environment and AppVeyor definitely match my requirements.