Where did all my test results go?

Problem I recently tripped myself up whist adding SonarQube analysis to a rather complex Azure DevOps build. The build has two VsTest steps, both were using the same folder for their test result files. When the first VsTest task ran it created the expected .TRX and .COVERAGE files and then published its results to Azure DevOps, but when the second VsTest task ran it over wrote this folder, deleting the files already present, before it generated and published it results. ...

March 5, 2020 · 2 min · Richard Fennell

You need to pass a GitHub PAT to create Azure DevOps Agent Images using Packer

I wrote recently about Creating Hyper-V hosted Azure DevOps Private Agents based on the same VM images as used by Microsoft for their Hosted Agent. As discussed in that post, using this model you will recreate your build agent VMs on a regular basis, as opposed to patching them. When I came to do this recently I found that the Packer image generation was failing with errors related to accessing packages. ...

March 2, 2020 · 2 min · Richard Fennell

Cannot queue a new build on Azure DevOps Server 2019.1 due to the way a SQL cluster was setup

I have recently been doing a TFS 2015 to Azure DevOps Server 2019.1 upgrade for a client. The first for a while, I have been working with Azure DevOps Service mostly of late. Anyway I saw an issue I had never seen before with any version of TFS, and I could find no information on the Internet. The Problem The error occurred when I tried to queue a new build after the upgrade, the build instantly failed with the error ...

October 17, 2019 · 2 min · Richard Fennell

Strange issue with multiple calls to the same REST WebClient in PowerShell

Hit a strange problem today trying to do a simple Work Item update via the Azure DevOps REST API. To do a WI update you need to call the REST API Using the verb PATCH With the Header “Content-Type” set to “application/json-patch+json” Include in the Body the current WI update revision (to make sure you are updating the current version) So the first step is to get the current WI values to find the current revision. ...

August 29, 2019 · 2 min · Richard Fennell

Authentication loops swapping organisations in Azure DevOps

I have recently been getting a problem swapping between different organisations in Azure DevOps. It happens when I swap between Black Mable ones and customer ones, where each is back by different Azure Active Directory (AAD) but I am using the same credentials; because I am either a member of that AAD or a guest. The problem is I get into an authentication loop. It happens to be in Chrome, but you might find the same problem in other browsers. ...

August 13, 2019 · 2 min · Richard Fennell

Azure DevOps Repos branch build policies not triggering when expected in PRs - Solved

I recently hit a problem with builds triggered by branch policies in Azure DevOps Repos. With the help of Microsoft I found out the problem and I thought it worth writing up uncase others hit the issue. Setup Folders Assume you have a Git repo with source for the UI, backend Services and common code in sub folders / [root] UI Services Common Branch Policies On the Master branch there are a policies of running ...

May 23, 2019 · 1 min · Richard Fennell

Regex issues in Node

I have been trying to use Regex to select a block of an XML based .NET Core CSPROJ file, and yes before you say know I could use XPATH, but why am not is another story. I was trying to use the Regex content.match(/<PropertyGroup>((.|n)\*)</PropertyGroup>/gmi) The strange thing was this selection string worked in online Regex testers and in online Javascript IDEs, but failed inside my Node based Azure DevOps Pipeline extension. ...

May 23, 2019 · 1 min · Richard Fennell

A fix for Error: SignerSign() failed.&quot; (-2146958839/0x80080209) with SignTool.exe

I have spent too long recently trying to sign a UWP .MSIXBUNDLE generated from an Azure DevOps build using the SignTool.exe and our code signing certificate. I kept getting the error Done Adding Additional Store Error information: "Error: SignerSign() failed." (-2146958839/0x80080209) From past experience, SignTool errors are usually due to the publisher details in the XML manifest files (in this case unpack the bundle with MakeAppx.exe and look in AppxMetadataAppxBundleManifest.xml, and also check the manifest in the bundled .MSIX files) does not match the subject details for the PFX file being used for signing. ...

April 30, 2019 · 1 min · Richard Fennell

Programmatically adding User Capabilities to Azure DevOps Agents

I am automating the process by which we keep our build agent up to date. The basic process is to use a fork of the standard Microsoft Azure DevOps Pipeline agent that has the additional code included we need, notably Biztalk. Once I have the Packer created VM up and running, I need to install the agent. This is well document, just run _.config.cmd –help _for details. However, there is no option to add user capabilities to the agent. I know I could set them via environment variables, but I don’t want the same user capabilities on each agent on a VM (we use multiple agents on a single VM). There was no documented Azure DevOps API I could find to add capabilities, but a bit of hacking around with Chrome Dev tools and Postman got me a solution, which I have provided a ...

December 6, 2018 · 1 min · Richard Fennell

Keeping Azure DevOps organisations inherited process templates in sync

The problem If you are like me for historic reasons you have multiple Azure DevOps organisations (instances) backed by the same Azure Active Directory (AAD). In my case for example: one was created when Azure DevOps was first released as TFSPreview.com and another is from our migration from on-prem TFS using the DB Migration Tools method; and I have others. I make active use of all of these for different purposes, though one is primary with the majority of work done on it, and so I want to make sure the inherited process templates are the same on each of them. Using the primary organisation as the master customisation. Note I have already converted all my old on-premises XML process models to inherited process templates. There is no out the box way to do keep processes in syncs, but it is possible using a few tools. The main one is the Microsoft Process Migrator for Node on GitHub. ...

November 29, 2018 · 4 min · Richard Fennell