Configuration of Jenkins on Windows Server for Capybara and Calabash Projects

I think the most challenging part of test automation is nowadays having Continuous Integration and one step more is having Continuos Deployment. These two terms have been a buzz words around the software community, which everyone is talking about them but there is very few companies can applied these. The reasons behind can be listed as:

  • Mis-understanding of agile and scrum
  • Lack of "real" test engineers and Lack of Dev-ops culture 
  • Lack of stable test environments 
  • Lack of vision in software industry, which saving the day is more critical than saving the future
  • Out-of-budget, not investing on good people but investing on tools

  • On the other hand, there are lots of open source tools that you can just build and configure your own CI and may be next step goes to continuous deployment. In this post, I want to explain how you can set up CI on windows server. I will use the following tool/technology and language: Ruby, Gem (many of Gems), Capybara, Cucumber, Windows Server, Jenkins. You can follow the instruction, but possibly you can still have some different warnings or errors. 

    Install Jenkins

    Download the appropriate version of Jenkins from home page

    Install Ruby 

    Capybara uses only Ruby so you need to install it. Go to the Ruby Installer page and download it. Double click on the installer and Install it to your system. I suggest you to install version newer than 2, from here.

    Ruby Path

    Set Ruby path so that CMD can run ruby.exe, bundle.exe and other Ruby related executable. Installation is straightforward, just follow the instruction.

    Clone Project

    Your project should be located in Windows Server so that Jenkins executor can run it locally. You may need to install git, I will use GitLab so I have already install it. You install it from git scmInstallation is straightforward, just follow the instruction.

    Install Bundler

    which is using to install necessary gems it to your system. Thanks to Ruby world, it is very easy to manage dependency. 
    gem install bundler

    If you have problem related to recognition of Ruby or Gem, ensure that you have set the Ruby path correctly

    Install Gems

    Go to your automation project folder, there is a file called GemFiles which holds the necessary gems and version if needed.
    bundle install

    if you have DEVKit error:

    C:\Users\Administrator\Documents\web-automation>bundle installFetching git:// git:// git:// git:// gem metadata from version metadata from dependency metadata from dependencies....Installing rake 10.4.2Installing i18n 0.7.0 
    Gem::InstallError: The 'json' native gem requires installed build tools.
    Please update your PATH to include build tools or download the DevKitfrom '' and follow the instructionsat ''An error occurred while installing json (1.8.3), and Bundler cannot continue.Make sure that `gem install json -v '1.8.3'` succeeds before bundling.

    Download ruby DevKit from here and run the following commands in DevKit folder:
    ruby dk.rb init
    ruby dk.rb install

    Still have problem you can run this:

    gem install json --platform=ruby --verbose

    If you have connection problem: 

    C:\Users\Administrator\Documents\web-automation>bundle install
    Fetching git://
    fatal: unable to connect to[0:]: errno=No error 
    Retrying git clone "git://" "C:/Ruby
    f1e3ed1a1313da599bae7c0aa16b28" --bare --no-hardlinks --quiet due to e
    rror (2/4): Bundler::Source::Git::GitCommandError Git error: command `
    git clone "git://" "C:/Ruby200-x64/l
    313da599bae7c0aa16b28" --bare --no-hardlinks --quiet` in directory C:/
    Users/Administrator/Documents/web-automation has failed.
    fatal: unable to connect to[0:]: errno=No error

    Run the following command to set the direction to https: 
    git config --global url."".insteadOf git://

    Add Jobs 

    I prefered seperate my stories with tag so that if I have new stories related to predefined tags I will not need to change jobs, I will just a @tag when I write the code. Also adding @regression tag for important cases to run more frequently. Therefore my execution command like as following: 
    cucumber features --tag @regression

    You can add it to Jenkins by:

    New Item > "Give Name" > Select "Freestyle Project" > click "OK" 
    Build > Add Build Step > Execute Windows batch command > add the following cucumber
    C:\Users\Administrator\Documents\web-automation\features --tag @regression

    Set the path again if you have problem with finding ruby or other executives as following: 'cucumber' is not recognised as an internal or external command, operable program or batch file. 
    set PATH=%PATH%;C:\Ruby200-x64\bin; 
    cucumber C:\Users\Administrator\Documents\web-automation\features --tag @regression

    Check Jobs 

    8 scenarios (8 passed)
    32 steps (32 passed)
    Finished: SUCCESS


    Popular posts from this blog

    Testing WEB Sevices and Automating SOAP Services

    Performance Testing on CI: Locust is running on Jenkins

    Change Default Timeout and Wait Time of Capybara

    Performance Testing on CI: Integration of Locust and Jenkins

    Create an Alias for Interactive Console Work: Selenium and Capybara