15 Jun 2016


DevOps using Visual Studio 2015 training in full swing

Some of the most exciting new features to arrive in Visual Studio Team Services and TFS 2015 have been the completely new Build system and the new Release Management capabilities built using the same technology. These are critical pieces to the DevOps puzzle for teams using VSTS or TFS as their ALM suite of choice.

To help educate teams on how to adopt DevOps best practices using Visual Studio, I have written a course focused specifically on this outcome.  The new 3-day DevOps using Visual Studio TFS 2015 course has already been delivered several times and has received very positive feedback.

We usually use electronic manuals where possible but for a client in Virginia this week, they requested printed hardcopy manuals. It was the first time I had the chance to “see” all my hard work in hard copy.

WP_20160614_07_34_10_Rich (2)

This is what 603 pages of DevOps knowledge and hands on exercises looks like

If this course is something you or your team may benefit from, there are scheduled courses coming up in the United States and Australia over the coming months. You can also just AskShane about onsite training or customised versions of the course.

There are two courses you may want to consider.

1. DevOps using Visual Studio TFS 2015 (3-day course)

2. Build and Release Management using TFS 2015 (2-day course which is a subset of the 3-day DevOps)

UNITED STATES (Online or in-person in Kirkland, WA)

* August 15-16: Build and Release Management using TFS 2015  [Register link]

* September 12-14:  DevOps using Visual Studio TFS 2015  [Register link]

* October 17-18: Build and Release Management using TFS 2015  [Register link]

* November 28-30: DevOps using Visual Studio TFS 2015  [Register link]

* December 12-13: Build and Release Management using TFS 2015  [Register link]


* July 14-15: Brisbane: Build and Release Management using TFS 2015 [Register link]

* August 08-09: Melbourne: Build and Release Management using TFS 2015 [Register link]

* August 10-12: Melbourne: DevOps using Visual Studio TFS 2015 [Register link]

* August 15-16: Sydney: Build and Release Management using TFS 2015 [Register link]

* August 17-19: Sydney: DevOps using Visual Studio TFS 2015  [Register link]

13 May 2016

1 Comment

A Raspberry Pi3 VSTS Build Light-Part 2, installing Windows 10 IoT Core

In this second part of this blog series, I’ll walk through setting up Windows 10 IoT Core on your Raspberry Pi 3.  Technically it’s more like setting up Windows 10 IoT Core on a MicroSD but that’s beside the point Smile

If you missed part 1 you can find it here.

At the moment, the version of Windows IoT core for Raspberry Pi3 that includes the drivers for the on-board WiFi is only available to Windows Insiders. If you’re not already an insider, you can go and sign up. (It’s free.)   I am writing this in early May 2016, so this may not be the case at the time you’re reading this.

For this exercise, I am using a Sandisk Ultra Class 10 8Gb MicroSD card to install Windows IoT Core and the Codify Build light software on. If you’re considering purchasing one, I’d go for a 16Gb MicroSD as the price is almost the same as the 8Gb ones.

The first thing I’m going to download is the March 2016 Insider Preview for Windows 10 IoT Core. The latest one I can download at the moment is build 14322. If there’s a more recent one available, I’d go ahead and get that one. Save the ISO file somewhere convenient for now then double-click it to mount the ISO.

Open Windows Explorer and navigate to the mounted ISO image. You should find a single MSI installer in the root of the mounted image. In my case the file is named “Windows_10_IoT_Core_for_RPi2.msi” which is misleading as I definitely selected the Raspberry Pi 3 image.

Double-click the MSI file and follow the prompt to install the program. This will give us easy access to the FFU file we’ll need in the next section.

The next thing I’m going to do is download and install the Windows 10 IoT Core Dashboard from the Microsoft website. This makes getting started much easier.

After the dashboard has been installed, it automatically runs and gives you the option to setup a new device. Go ahead and click “Set up a new device”.

VSTS Build Light - IoT Dashboard

On the setup new device screen, the Raspberry Pi 3 is not currently listed. I expect this to change soon. For now, I will select “Custom” for the device type and then point to the FFU file that was created when you ran the installer in the previous step. You should be able to find it at  C:\Program Files (x86)\Microsoft IoT\FFU\RaspberryPi2\flash.ffu.

You need to have access to the MicroSD card now. When prompted to select the drive, select the drive letter corresponding to your Micros SD card.

You will need to accept the licensing terms and click Install. A command window will be displayed and you’ll see the Deployment Image Servicing and Management Tool displayed as well as a progress indicator as it sets up Windows 10 IoT core on your MicroSD card.

VSTS Build Light -DISM

Once the image has been extracted into your MicroSD card, you should see a message to let you know the MicroSD card is ready. Remove the card from your PC and insert it into the MicroSD card slot in the Raspberry Pi 3. In my case, I’m going to choose to connect the Raspberry Pi 3 via an Ethernet cable before I look at the Wireless drivers and configuration.

Connect the power supply to your Raspberry Pi 3 and turn on the power.

In the IoT Dashboard, click “My Devices”. If everything is working you should see you device appear as shown in the following screenshot.

VSTS Build Light - IoT Dashboard New Device

In the list of My Devices, I’m going to click the pencil icon in the settings column to change the settings for my Raspberry Pi 3. Specially, I am going to set the name of my device to “RPiVSTSBuild” but you can choose a suitable name for yourself. You should also set a device password for the Administrator account on this screen. The default password is p@ssw0rd. Once you rename, you will be prompted to reboot your device. Click OK.

Once your Raspberry Pi has rebooted, click the VSTS Build Light - Global iconicon to display the device portal in your browser. You will be prompted to enter the username (administrator) and the password you have selected.

VSTS Build Light - Device Home page

I have configured the Time zone to match my current time zone and I’ve configured my Wireless settings to connect to my local wireless network.

That’s about it for getting Windows 10 IoT Core ready. In the third and final part of this blog series, we’ll get our computer configured to use Visual Studio 2015 to build the Codify build light software . We’ll then deploy it to the Raspberry Pi and configure it to connect to our VSTS account.

Coming soon:  A Raspberry Pi3 VSTS Build Light-Part 3, installing the Codify VSTS Build Light software

12 May 2016


A Raspberry Pi3 VSTS Build Light–Part 1, the hardware

In this three part series, I’ll walk you through my experience creating a VSTS Build Light using a Raspberry Pi3 and an add-on board from the great folk at Codify, here in Brisbane, Australia.

We’ll walk through setting up the hardware in this blog post. In the second blog post we’ll install Windows IoT Core on the MicroSD card ready to run on the Raspberry Pi 3. Finally in the third blog post we’ll setup our PC for building and deploying the Codify software onto the Raspberry Pi. We’ll configure the software to connect to our VSTS account and let it know which build we want it to show the status of.

Here’s a photo of the finished project showing that the status of my build is happy and healthy (for now) Smile

14 ASuccessfulBuild

Here a list of the parts and tools I’ll be using in this three part blog series. I live in Brisbane, Australia and the closest electronics shop to me is called Jaycar. You can find them all around Australia.

Parts list:

  • Raspberry Pi 3 (Purchased from Newark Element 14 in the US but broadly available)
  • Sandisk Ultra 8Gb MicroSD card (Class 10)
  • Official Raspberry Pi 3 Case
  • Spacer Nylon Tapped Hex M3x9MM Pk25 (Jaycar# HP0922)
  • Washer Nylon M3 Flat Wht Pk10 (Jaycar# HP0148)
  • Screw M3x6mm Phil R/Hd ZP Pk25 (Jaycar# HP0400)
  • 12V DC 1.5 Amp regulated switch mode power supply
  • RGB Light Strip
  • Codify VSTS Build Light Circuit Board

Tool list:

  • Wire cutters
  • Screwdriver (small Phillips head)
  • Sharp scissors for cutting RGB light strip to desired length
  • Soldering iron (for tinning the ends of the braided cable on the RGB power strip only)


Here’s a look at some of our parts as we prepare to get started. Note that the official Raspberry Pi 3 power supply is shown in the photo. I didn’t end up using this as the Raspberry Pi gets its power from the Codify board.

01 Parts laid out

I’m choosing to use a Raspberry Pi 3 for this project primarily due to the fact it has built-in wireless networking which means I don’t need to have a USB wireless adapter hanging out of the device to connect to VSTS. You can easily use a Raspberry Pi 2 if you happen to have one and you can always choose to connect via network cable in the ethernet port if you prefer.

02 RaspberryPi3

Here’s the hero of our project. It is a board that the guys at Codify have created as a project for themselves. Ben Parker kindly gave me a couple of these to use and demonstrate. You can read about the origins of their VSTS Build light on their blog. The custom printed board is certainly much nicer than wires on a breadboard.

03 CodifyBoard

This board is designed to plug directly into the 40 PIN GPIO connect on the Raspberry Pi. Note that it does not use all 40 pins but it is fairly obvious where you line up pin 1.

Ben was kind enough to point out one issue that you’ll need to be aware of. As you can see in the next photo the two pins from the terminal block that you connect to 12 volt power to are at risk of shorting against the metal shield around the HDMI connector. This would be bad Smile

04 SpacersRequired

To solve this problem I purchased a set of both 9mm (Jaycar HP0922) and 12mm (Jaycar HP0924) nylon tapped hex spacers. I found the 12mm spacers were slightly too tall and the 9mm ones just slightly too short. A Nylon M3 Flat washer proved to be just the right answer to this problem.

I screwed the spacer and washer to the Codify board using a M3x6mm Phillips head screw (Jaycar# HP0400) as you can see in the following photo.

05 SpacersOnCodifyBoard

I’m much happier with the space between the pins from the terminal block and the HDMI connector now. You should also note that I am not securing the other ends of the spacers to the Raspberry Pi board. I find the IDC connector holds the Codify very firmly to the Raspberry Pi and by leaving the other end of the spacers open, they’ll line up nicely with the bottom of the official Raspberry Pi case.

06 BetterClearence

The next item on the agenda is to look at the LED light strip. The 12 volt RGB light strips seem to be popping up everywhere. Make sure you get an RGB one as there are plenty of single colour ones out there which aren’t nearly as useful in showing build status.

Most light strips can be easily cut to whatever length you want depending on how and where you’re going to mount your build light. The strips usually have a 3M adhesive strip on the back so they can be stuck to a wall or piece of furniture.

07 CutLEDStripToLength

If you look around you can also find a variety of different aids to help you mount the light strip including clip-on corners and little plastic brackets you can use to tack into place on walls/furniture.

08 LEDStripCorners

Usually both ends of the light strip are terminated with a 4-pin plug. These allow you to easily chain them if you want to create a particularly long light strip. For my build light, I’ve cut the strip to around 80 cms in length. I’ll also cut off the plug as you can see below and then strip the wires back and tin the wire with a little solder. This will make it easy to attach the light strip to the terminal block on the Codify board.

09 WiresFromLEDStrip

Now I’ll go back to the Raspberry Pi and place it into the bottom half of the official Raspberry Pi 3 case. You can see in the photo below why we’re not securing the nylon spacer to the Raspberry Pi. The hole in the PCB lines up with the lug in the bottom of the case and holds it in place.

10 AligningPCBtoCase

You can see now what the assembled project looks like. The Codify board is a great size to just fit on to of the Raspberry Pi. I should point out now that the top of the Raspberry Pi case is not going to fit due to the Codify board. We’ll only be taking advantage of the bottom of the Raspberry Pi case and leaving the top open.

11 Assembled

My next task is to connect the wires from the LED light strip to the terminal block on the Codify board. The labels on the board make it very apparent which wires go where. Make sure you don’t leave any loose wires poking out of the terminal block that might short and cause an issue.

12 AttachLEDStripWires

To power the VSTS Build light we will need a 12volt DC power plug supplying somewhere between 1.5 and 2.5 amps. The range will depend on exactly how long you want your light strip to be. The 1.5A supply seems to drive my 80cm LED strip without any problems at all. I had to cut the plug off the power plug so I could strip the wires and tin them with a little solder. Attach these to the Codify board on the appropriate terminal block ensuring your observe the correct polarity.

NOTE: THIS POWER SUPPLY WILL RUN BOTH THE CODIFY BOARD AND THE RASPBERRY PI. You should not plug the standard micro-USB power supply into your Raspberry Pi.

13 12VDCPlugpack

Here’s where we end this first part of my three part series on building the Codify VSTS Build Light.

The next two parts will be as follows;

8 Apr 2016


Listing all build variables and their current values in Team Build 2015

When Microsoft first released the new Build system in TFS 2015, I used a Command Line build step to list all variables in the log file to help me troubleshoot paths. As you can see in the screenshot below, it was very easy and only required two items to be specified in the build step.

[UPDATE] Thanks to Graham who reminded me in the comments that this also allows you to list all variables as part of a release, not just a build workflow.

Command Line Build Step Settings (Old version)

  1. Tool was set to cmd
  2. Arguments was set to /k set



Unfortunately when they updated the Command Line build step, the values I had been using no longer worked.  Here’s the error message I received in the log files.

“Warning message highlight pattern:  ‘set”‘ is not recognized as an internal or external command, operable program or batch file.”

With the updated Command Line build step, you need to add the “.exe” to output the build variables and their values in your log file.

Command Line Build Step Settings (Current version – Apr 2016)

  • Tool was set to cmd.exe
  • Arguments was set to /k set


These values will still give a single line error in your log files claiming “File name doesn’t indicate a full path to a executable file” but the command and arguments still do the job.

As you can see from the screenshot below, once the build has run you can select the Run cmd.exe item in the log and you’ll see all of the variables available for you to use in other build steps and their current values. This is super helpful in troubleshooting.


16 Mar 2016


Two Visual Studio DevOps courses to choose from

DevOps Visual Studio blog 1

With the recent launch of our new Build and Release Management using TFS 2015 course, I thought it timely to offer clarity in terms of the relationship between two similar courses. Simply stated, the Build and Release Management using TFS 2015 2-day course is a subset of the 3-day DevOps using Visual Studio TFS 2015 course.

The rationale behind having a 2-day course is that it suits attendees wanting to focus just on the new Build and Release Management (vNext) parts of TFS 2015 and Visual Studio Team Services. As a 2-day course it takes you out of the office for less time and the cost is less than a 3-day course.

For people wanting a little more in the DevOps area, the 3-day course covers everything in the 2-day course and adds additional topics including PowerShell, DSC and Application Insights.

To see more clearly what the differences are, download this one page PDF – Which DevOps course?

If you’re interested in attending either of these courses, we have them running in Australia, New Zealand and the United States. To find out more just AskShane.

More Posts