Tuesday, February 23, 2016

Why I moved www.JoymonOnline.in code to Github from VS Online

The related between me ad VSOnline was very good. It was all working fine till I wanted to setup continuous integration and delivery to my personal web site www.JoymonOnline.in.

My Requirements

Its was simple.
  • Free - Need to get the continuous integration in free.
  • CI & CD - Support for hosted service preferred
    • Support for running unit tests and integration tests.
  • Integration with source control - The integration should happen as soon as I check-in
Everything available there in VS Online. 1000+ minutes of build is more than enough for doing CI activities. But still why I had to move to Github + AppVeyor combination?

Issue 1 - No IIS

I was using IIS hosted tests for the web site. In my development machine I can host the project in IIS and run from Visual Studio. The test methods were attributed with [HostType("ASP NET")] to get the tests run by calling the IIS hosted pages. When I tried to run the same tests from VS Online, I could see that I need to write extra scripts to create IIS web app more than that VS Online build machines  does not have IIS. The suggestion is to have machine somewhere else on premise or in cloud and deploy the app there and run unit tests.

To be frank, I don't have enough budget to have a machine in the internet for doing integration testing of my web site.

Issue 2 - No admin access

When the build machine is allocated for us from VS Online, our build is not running with admin privileges. So even if we try to host web app with other frameworks such as MVCIntegrationTestFramework, it won't allow.

Link to list of software in VS Online build machine.

What I get in Github + AppVeyor

  • Hosting in Github is free. Only thing is my source will be public. But what is there in it? HTML & CSS files which anyone can copy from browser.
  • AppVeyor is free if the source is in Github. They provide admin access to our build activities and has IIS in their machine along with other software.
  • Secure storage of credentials to do Web Deploy or FTP upload
More details are in one of the earlier post.

So which is better? Absolutely going to Github and setting up CI & CD via AppVeyor is the way

Now everything is good. After my check in AppVeyor build the site run unit testing and deploy to staging. After manual testing in staging, if I put a release tag on Github, AppVeyor will deploy to my production www.joymononline.in server which is in GoDaddy.

No comments: