Jenkins Windows Setup

I’m in the process of setting up a Jenkins Build Server for my teams Window projects.  It will be hosted internally on a Windows Server 2012 Virtual Machine and provide continuous integration, deployment, and testing for our team.

Now that the server is ready, the first step is to download Jenkins for Windows.  This is conveniently available on the Jenkins home page.


The download contains a setup.exe and jenkins.msi files which provide a very painless installation process.  Simply run the setup.exe and the setup wizard will begin.


Select Next to begin the setup.Jenkins_Install2_Destination_Folder

Select your installation directory, and then the Next button.


Now select the Install button and the installation will begin.  After a minute, the Jenkins setup will be completed.


Now that the installation is finished, select the Finish button and Jenkins will be ready to begin.Jenkins_Install6_Initial_Page

Adding Plugins

Jenkins has an extensive set of plugins to provide tools for all types of integration and configuration.  For this installation we will need support for the Git Plugin and the pre-scm-buildstep plugins.

ImageMagick – Update the Icon on a Directory of Screenshoots

Recently our company has update their logo which means that all of the screenshots of our application that we have recently done, need to be updated.  So our choice was to re-cut all the screen shots or do modified all of the screen shots.   Of course we chose to convert them all with ImageMagick.  While we were at it, we might as well crop all the images.

The goal – Convert images like this:


To images like this:NewLogoLogin

The Process:

  1. Take one new screen rip, and extract the new logo:
    convert -crop 32x32+9+51 +repage NewLogoLogin.png NewLogo.png


  2. Overlay the new image on each screen shot in the directory, and place it in to a new directory.
    mkdir new
    for %a in (*.png) DO composite -geometry +9+51 %a new\%a


  3. Crop the new images and place the in a final directory.
    mkdir final
    for %a in (*.png) DO convert -crop 320x320+8+50 %a final\%a




Interesting Stuff for November 2015



  • Why Scala? … by a hilarious Indian guy




  • Windows Sysinternals – PsTools:
    • PsExec – execute processes remotely
    • PsFile – shows files opened remotely
    • PsGetSid – display the SID of a computer or a user
    • PsInfo – list information about a system
    • PsPing – measure network performance
    • PsKill – kill processes by name or process ID
    • PsList – list detailed information about processes
    • PsLoggedOn – see who’s logged on locally and via resource sharing (full source is included)
    • PsLogList – dump event log records
    • PsPasswd – changes account passwords
    • PsService – view and control services
    • PsShutdown – shuts down and optionally reboots a computer
    • PsSuspend – suspends processes
    • PsUptime – shows you how long a system has been running since its last reboot (PsUptime’s functionality has been incorporated into PsInfo)
    • Running as the “Local System Account” for testing service account access:
      PsExec -i -s cmd.exe

Interesting Stuff for October 2015

A list of random interesting things I’ve seen over the last month or so.

Image Processing:


  • Dependency Walker ( Provides a utility to determine the dependencies of a Microsoft module.  Also distributed in older Microsoft VS.
  • The windows “where” command works like the Unix “which” command to find the path of an executable name.
  • Run multiple commands from a cmd shell (





Jenkins, formerly known as Hudson, is an extensible open source continuous integration server that simplifies the process between development and deployment.

I am installing it for our Windows development environment running Git, MSBuild and perl scripts to do the build.  Here are some things that helped getting it working.




Open Data Hack Night (10/15/15)

Open data has finally come to Allegheny County and the City of Pittsburgh. You’re invited to celebrate the launch of the Western Pennsylvania Regional Data Center at the community launch event.

Western Pennsylvania Regional Data Center (WPRDC) – , a site for public data sets in the Pittsburgh Region.
Looked at some cool data sets including:


SSH on Windows






Server Fault: SSH / SCP Server on Windows (

Successfully connected from putty. Note: With a domain account it needs to be connected to talk to the domain controller. Use the format \ or @

Could not connect to the BitVise SSHD server from the Git Extensions Bash shell.   With the error:

Terminal initialization failure. See server logs for more info.
Hint: Try requesting a different terminal environment.
Connection to localhost closed.

It turns out that this is a problem with the terminal type in the Bash shell which defaults to ‘msys’. I found the solution at ServerFault, Is it possible to change value of $TERM when calling ssh?. Set TERM=vt220.

When connecting from Git Extenstions to the server the first time you may get the error:

The server's host key is not cached in the registry.
You have no guarantee that the server is the computer you think it is.
The server's rsa2 key fingerprint is: ssh-rsa 2048
Connection abandoned. fatal: The remote end hung up unexpectedly

For some reason Plink can't handle setting up a new machine, but if you connect with putty it saves the remote machines information to the registry and everything will work fine thereafter (


Installing GitExtensions


Git Extensions is an awesome UI for working with Git in the Windows platform.

To install, download the distribution from and run it.  This walk-through is the installation of version 2.48.05.





Kdiff3 is a 3-way diff program that is the default diff program for Git Extensions.  It is loaded automatically if you selected it above.








Next sets up Msys Git, the actual Git installation that does all of the processing.





Note: I like using Git on the Windows side too, but for GitExtensions you can just use it with Git Bash.  Adding the optional tools is OK if you are a Unix junky, but confusing if you think you are on Microsoft and all of a sudden some of the commands are changing.


Note: I’m perhaps conservative here and just stick with how it is since some programs like it different ways.



Now Git Extensions runs and makes sure everything looks good:



And now we are ready to start using Git!!!


Random Stuff (9/15)

Some random stuff that I’ve been looking at lately.







  • Interesting, assignment if null.
    options = options || {};
  • Convert a string to be a one-element array
     if (typeof potentialKeys === 'string') {
     potentialKeys = [potentialKeys];

.NET Stuff