Sunday, 27 January 2019

TimeoutException (aka Tour Down Under 2019 and a week off)

Back at work for a couple of weeks of 2019 and I don't want to rush things too much, so I organised to take an extra week off after this year's Tour Down Under bike ride.

David, his son and his dad after completing the TDU
Last year's community ride (the 'Challenge Tour') had to be cancelled due to hot weather. We've had our share of hot weather again this year, but fortunately Saturday (previously Friday) turned out to be ideal. This year I rode with my dad and my son - 3 generations of Gardiners! Very proud of my son, who completed the 100km distance (his furthest ridden) plus (impressing a lot of our fellow riders) he did it on a mountain bike (as he doesn't have a road bike).

I didn't need the week off to recuperate from the ride - instead I was catching up with relatives visiting Adelaide! It was great to see them lots of time during the week.

We all just made it through the 46.6°C record maximum temperature for Adelaide on Thursday (that was a really, really hot day).
A ropes course
I watched as my son and his cousin did the ropes course at West Beach

Vanilla slice
Yum!

French monopoloy game board
French Monopoly - Relying on my niece to translate


I'm finishing off the mini-break with the Australia Day long weekend. Caught up with the visiting rellies one last time (before they flew home) for morning tea/lunch/kicking the footy in the park (how Aussie is that!) following by dinner with my folks. A really nice day!

Sunday, 13 January 2019

Installing .NET Core SDK for Azure Pipelines builds

How do you ensure that the correct version of .NET Core SDK is installed for your Azure Pipeline builds? You could install it manually on your build agents, but wouldn't it be better to automate it?

The .NET Core Tool Installer Task can be used for this, and if you don't change the version of the SDK that you require frequently, very often that's enough.

When you're developing .NET Core applications, you can indicate which version of the SDK you require to build with by using a global.json file.

Unfortunately, the Installer Task doesn't currently know about global.json, so you might feel like you're doubling up - specifying the required version not only in that file but also in the configuration of the Installer Task. Don't do that!

With a bit of PowerShell, that can be done.. Create a PowerShell Task that runs before the Installer task and use it to set a variable that can then be used by the following task(s).

If you're using YAML, the task definitions would look something like this:

steps:
- powershell: |
    $PathToGlobalJson = Join-Path -Path $Env:BUILD_SOURCESDIRECTORY -ChildPath "global.json"
    $GlobalJson = Get-Content -Raw -Path  $PathToGlobalJson | ConvertFrom-Json
    $Version= $GlobalJson.sdk.version
    
    Write-Host ("##vso[task.setvariable variable=SdkVersion;]$Version")
  displayName: 'Parse global.json'

- task: DotNetCoreInstaller@0
  displayName: 'Use .NET Core sdk $(SdkVersion)'
  inputs:
    version: '$(SdkVersion)'