I wanted to try out using GitHub Actions to deploy a .NET Core web application to Azure. Microsoft already has some actions available to accomplish this, so this should be rather straightforward 😄. I haven’t really played with GitHub Actions yet, so this should be rather informative 😁. Usually I do this using Azure DevOps, so this will be a nice way to check the other side of the fence....  
View post
Ever needed to deploy a Windows Service onto a machine with Azure DevOps? It turns out this is really easy (some caveat’s apply 😄, see section at the bottom)! There is an extension on the Azure DevOps Marketplace that is a wrapper around the SC tool from Windows: Add the extension and perform the tasks that you need: In this case, I use these tasks: delete the existing service (will...  
View post
I’ve been working on a Stryker run for a larger .NET solution (115 projects and counting) and wanted to document on the final setup in Azure DevOps. You can find more information on what Stryker is and how this can be used on a .NET project with an example on this previous blog post. In this post you can find how I got to this point: link. unsplash-logoPhoto by Dallas...  
View post
Today I was configuring a SonarQube Analysis in Azure DevOps on a Java project. Following the documentation I still got this error: [ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project 'prefix-project' Project was never analyzed. A regular analysis is required before a branch analysis -> [Help 1] Given the error message says it is an error for the project prefix-project I guessed that the plugin wanted to link everything...  
View post
TL;DR Stryker cannot run for an entire solution with multiple test projects (YET), so we need to help it a little and run each project by itself and then join the results. Finding a way to do so started by checking in with the Stryker team on GitHub. I ❤️ OSS! They are working at making this part easier, so I checked out their code to see if I could...  
View post
I ran into a weird thing in .NET Core Global tools: If you try to install the tools while they are already installed on that system, .NET Core will throw an error and exit with a non-zero exit code. This is not helpful in a Continuous Integration (CI) scenario! Expected installation Normally you expect that you run an install command like this: dotnet tool install dotnet-stryker -g And the tool...  
View post
Recently I was at a customer where they where testing running test mutation with Stryker. Mutation testing is a concept where you change the code in your System Under Test (SUT) to see if your unit test would actually fail. If they don’t, your unit tests aren’t specific enough for the SUT and should be re-evaluated. Since Stryker changes your code, they call it mutations and they check if they...  
View post
Last week I was testing some .NET tooling and wanted to install a tool locally instead of globally. To do so you run this command: dotnet tool install dotnet-stryker While running (either locally or in an Azure DevOps task) I got this error message: [command]"C:\Program Files\dotnet\dotnet.exe" tool install dotnet-stryker Cannot find any manifests file. Searched: C:\Apps\TFSAgent\_work\7\s\StrykerDemo.UnitTests\.config\dotnet-tools.json C:\Apps\TFSAgent\_work\7\s\StrykerDemo.UnitTests\dotnet-tools.json C:\Apps\TFSAgent\_work\7\s\.config\dotnet-tools.json C:\Apps\TFSAgent\_work\7\s\dotnet-tools.json C:\Apps\TFSAgent\_work\7\.config\dotnet-tools.json C:\Apps\TFSAgent\_work\7\dotnet-tools.json C:\Apps\TFSAgent\_work\.config\dotnet-tools.json C:\Apps\TFSAgent\_work\dotnet-tools.json C:\Apps\TFSAgent\.config\dotnet-tools.json C:\Apps\TFSAgent\dotnet-tools.json C:\Apps\.config\dotnet-tools.json C:\Apps\dotnet-tools.json C:\.config\dotnet-tools.json C:\dotnet-tools.json Searching...  
View post
I wanted to run .NET Core tools in Azure DevOps and ran into some installation issues. I tried installing the tool I needed globally, yet the agent could not find it. Local tools to the rescue In the latest versions of .NET Core 3.0 (currently still in preview), you can install tools locally. This means that you can install the tool in the current folder, with its own version and...  
View post
Recently I had to refresh a Let’s Encrypt certificate for an Azure App Service after the first certificate had expired. Of course, refreshing a certificate should be done by some tooling, either in a CI/CD pipeline or another service. I tried setting up the Lets Encrypt Extension on the App Service, but could not get it to work. Eventually I even ran into the Let’s Encrypt rule that you can...  
View post
Recently I wanted to build and run a .NET core console application in Azure DevOps and found out you cannot do that with the default .NET core tasks. unsplash-logoPhoto by Sam Truong Dan The default tasks in Azure DevOps and tutorials are more geared towards web-development and publishing a zip file that can be used with a WebDeploy command. For an application,I would have thought that you could run the...  
View post
I’ve been developing software for over 16 years now and every now and then I come across someone who thinks developers do something magic that they can never learn to do. Maybe they are even afraid to ask us something because they don’t understand something. As a consultant my role has often meant that I could take the time and explain to someone more functional oriented the reasoning behind some...  
View post
As a consultant, I get to work at a lot of different settings and environments. For most of my customers these days, that means working on my own laptop and in the cloud with SaaS application. Logging in to all those customers can be a messy thing: I’ve seen people having a identity picker in Azure (or any other Azure Active Directory backed system) that they have to scroll through...  
View post
Today I noticed that my syntax highlighting was not working on this blog. Here is how I fixed it! I am using Jekyll on GitHub pages as I wrote before. unsplash-logoPhoto by Zach Reiner Looking at the generated HTML indicated that there was some parsing done during the build of the page, but there were no CSS classes available to them: I tried searching for documentation about this issue and...  
View post
I found myself searching the internet again on how to use the Azure CLI from PowerShell so that I can use it in Azure Pipelines to create new Azure resources. The reason I want to do this with PowerShell is twofold: Azure Pipelines has a task for using the Azure CLI, but this only has the options to use the command line (.cmd or .com files), or from bash (.sh)....  
View post
Last month we got the opportunity to organize the Global DevOps Bootcamp (link) and it was a blast! I wanted to create an overview of all blogposts that I could find about the event, so here it is. Links Pre-event registration Jasper Gilhuis wrote down how he handled the pre-event registration of venues and enable them to register the attendees. Read about it here. Azure Learnings A post by myself...  
View post
On the 15th of June we got the opportunity to organize the Global DevOps Bootcamp edition of 2019 (see link) and we had a blast! For the 2018 edition we created challenges for the attendees to setup their CI/CD pipelines to push a web application into Azure. You can read up on the setup for that edition here. Next level Since we need to create something next level for each...  
View post
When I am working on something, usually software, I know from experience that a simple tool to test something out (e.g. a POC, Proof of Concept), can be in production in no-time. That is when I start to focus on everything we start to ignore: don’t write unit tests, it is only a POC; we don’t need to make this resilient, it is only to proof this will work; just...  
View post
Last weekend we got the opportunity to organize the Global DevOps Bootcamp (link) and it was a blast! Thanks to René van Osnabrugge, Marcel de Vries and Mathias Olausson for coming up with the idea to create GDBC and sticking with the team to get this idea of the ground! Without them and our sponsors (Xpirit, Solidify, Microsoft) we could not have started with the event! Team work! To set...  
View post
As noted in a previous post, you can host a SonarQube on an Azure App Service, thanks to Nathan Vanderby, a Premier Field Engineer from Microsoft. He created an ARM template to run the SonarQube installation behind an Azure App Service with a Java host. This saves you a lot of steps mentioned above! You can find the scripts for it on GitHub or deploy it from the big deploy...  
View post
I recently found that I had a web service plan running for my Machine Learning Studio (MLS) workspace in Azure. I was hosting some test webservices on it from a research session earlier on. The web service plan was not doing anything for me, but I did incur some costs running it. Since the default tier it picks during is already an S1, this can build up if you are...  
View post
I ran into an issue with a new Azure Function I created: when I tried to run it, I got an error message about a RunResolvePublishAssemblies setting. The target “RunResolvePublishAssemblies” does not exist in the project Digging around the internet did not give an indication where to look. Most examples pointed to years old issues that indicated this message for dotnet core version 1.0. I am running a preview version...  
View post
I wanted to trigger an Azure Function based on changes in the Azure Subscription(s) we where monitoring. The incoming data can than be used to do interesting things with: keeping track of who does what, see new resources being deployed or old ones being deleted, etc. Back when I started working on this, there was no Event Grid option to use in Azure Functions, so I started with linking it...  
View post
After installing Docker for Windows (recently renamed to Docker Desktop) I could not get the basic command docker run hello-world working. I checked my install, read more docs, got confused if it was in my Hyper-V setup, the networking stack in it, or something else. Finally a light bulb went off and I found the solution! The issue After installation Docker present you with a login screen. Since that login...  
View post
I was testing with our Azure Function and had set the cron expression on the timer trigger to "0 0 */2 * * *", based on the example from the Microsoft documentation. When I went to the logs a day later, I noticed that some of the runs weren’t there! unsplash-logoPhoto by Emily Morter Missing logs ?? I added a red line were I noticed some of the logs missing....  
View post
Last week I noticed our Azure Function wasn’t running anymore and I got a pop-up in the Azure Portal indicating that we reached the limit on our open connections. The popup message contains something like Azure Host thresholds exceeded: [Connections] and links to this documentation page. The documentation already hints at the usual suspects: HttpClient holds on to the connections longer then you’ll usually need. Since the whole Azure Functions...  
View post
During installation and setting up a SonarQube server for usage in an Azure DevOps Build I found some things that I didn’t remember from previous installation and wanted to log that in this post, so the next time I have somewhere to find these things in one place. Updated 5-1-2019 Read the last section of this post if you want to use an even easier way of setting up and...  
View post
Microsoft announced today that they have a ‘new’ product: Azure DevOps! With that announcement came another one: Azure DevOps pipelines for GitHub open source projects with unlimited minutes! I wanted to see what the integration with GitHub would look like, so I tried it out. Note: of course, you could already create pipelines for GitHub repo’s, but only inside of a VSTS account and not with unlimited build/release minutes! If...  
View post
While working to setup an export from Activity Log to an Event Hub I got no response on a save action. This took some time to figure out why this happened, so I thought it could be helpful for someone else. Photo by Adam Solomon on Unsplash Issue when saving When saving the export setting via this blade: I got this error: After scratching my head a little I checked...  
View post
Global DevOps BootCamp In June 2018 I was part of the team behind Global DevOps BootCamp (or GDBC in short). The goal of the boot camp is to create a world wide event where everyone could get a taste of DevOps on the Microsoft Stack. It is an amazing combination between getting your hands dirty and sharing experience and knowledge around VSTS, Azure, DevOps with other community members. This years...  
View post
I am using the Azure Fluent SDK to retrieve information about the Azure setup and I wanted to retrieve the AppSettings from an App Service (or function app, or logic app). The simple solution didn’t work and searching around didn’t reveal any information about it. Finding something that did work (initial testing with a different service principle didn’t change the results), so here we are… Photo by Osman Rana on...  
View post
Recently I got a customer request to help them with provisioning a SonarQube server hosted in Azure. Fortunately there is an ARM template available for it: link. I ran into some issues with the ARM template at first and then tried to use the new SonarQube server within VSTS. TL;DR I didn’t manage to get the SonarQube VSTS Tasks working with the self-signed certificate. I think it’s probably possible, but...  
View post
Today I was listening to RadioTFS episode 163 on my commute, with guests Wouter de Kort and Henry Been. During the show Wouter mentioned that he always revoked his VSTS Personal Access Token after using it, especially when used for a Build Agent. Apparantly the PAT is only used for the initial authentication to VSTS/TFS and after that it isn’t needed anymore! That indeed means that you can revoke the...  
View post
Recently I wanted to demo an example of how you can rollout Chocolatey packages via your own choco server. Sometimes we cannot save every binary in VSTS to use it in a pipeline as an artifact and therefor I needed a different artifact server. Chocolatey provides a NuGet wrapper around binaries that you can easliy track different versions with. Since that worked out an I now have a local document...  
View post
Global DevOps Bootcamp On the 16th of June 2018, Xpirit and Solidify organised a global event around the topic of DevOps and improving your release cadence. It is an ‘out of the box’ event with a lot of self organisation where people around the global gathered on their free saturdays to learn something new about DevOps. People interested in hosting a local venue went to the site https://globaldevopsbootcamp.com/ and started...  
View post
Note This is part 3 in a series of posts about DevOps and the role of telemetry in it. In part one I described the reasoning behind the series and explained how I started with logging (usage) telemetry for a SaaS application. You can read part 1 in the series here. In this post I want to explain about the next step: logging information about the systems that support the...  
View post
Note This is part 2 in a series of posts about DevOps and the role of telemetry in it. In part one I described the reasoning behind the series and explained how I started with logging (usage) telemetry for a SaaS application. You can read part 1 in the series here. In this post I want to explain about the next step: logging information about the systems that support the...  
View post
I like to make work and performance visible for teams by giving them the necessary information to gauge the performance of a system, both on a daily basis as well as over time. This will help them to find less performant parts of the system, or checking engagement statistics. Sometimes I feel this part of the process is forgotten when talking about DevOps these days. People will focus on bringing...  
View post
Update proces templates Recently I had a customer request to update their process definition in Visual Studio Team Services (VSTS). They had 30+ different processes migrated from TFS (Team Foundation Server), so they were all Hosted XML processes. Somehow they had the process setup like this: Epic –> Product Backlog Item Which they requested me to convert to this: Epic –> Feature –> Product Backlog Item In TFS you would...  
View post
I wanted to include at least some more information in the index page of my blog instead of just the publish date and title, so I searched around for some help to include an excerpt in Jekyll and found some help on this blog. The solution was very straightforward, but I’ll include it here for future reference. Index page In the index page, you can search the content of a...  
View post
Trying out Jekyll on top of GitHub pages as a new blogging platform. For know, I just needed a simple way to create posts, but add some stuff I am missing on my current method (WithKnown), like RSS and Google Analytics. So far I like the easy setup (like: no installation whatsoever!) and the fact that it uses Jekyll to generate static pages. I started with the excelent guide of...  
View post
After searching for the third time on how to do this, I thought it would be time to write about this here 😬. If you have an Azure App Service that for some reason should just display a message to the user, indicating that it isn’t available, you can do this. I have had several reasons to do this: single app service host, without a deployment slot and a big...  
View post
I wanted to use https in my dotnetcore application (v. 1.0.0-rc2-final) and had to dig around the web quite a bit to find the most recent and working method to accomplish this. Eventually a link in the MVC github site lead to an example how to fix this (link). First, the most easy way I've found to do this, is to add some custom middleware for redirecting all http requests...  
View post
Some links to important Visual Studio extensions for later reference: Open Bin folder Visual Studio Extension: Visual Studio Gallery Wakatime: wakatime.com SlowCheetah Visual Studio Gallery SonarLint sonarlint.org T4MVC github.io  
View post
If you previously had a new Windows 10 preview build installed in your computer and then you reverted back to an older build, you could lose access to the new build where the new build is no longer offered as an upgrade option. If you want to install that build again, deleting that build number from the list in the Registry Editor will restore the ability to upgrade. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\Applicability\RecoveredFrom Source...  
View post
While migrating CI stuff from Jenkins into TFS 2015 SP1 I ran into this blog post from Microsoft explaining how to include SonarQube runs information in the TFS Build Tasks. We have been running SonarQube on our projecs for about a year now to gain some insights into Code Coverage and basic code smells. I sure don’t want to lose the information Sonar gives us. The problem was that we...  
View post
I’m not the only one who is annoyed by the new Windows 10 way to connect to VPN connections. The new route takes a lot of new clicks, just to connect to a VPN! The old Windows 8 style was a lot faster. Since I frequently change connections at work, It’s a recurring annoyance everyday :-(. Today, I’ve found out that there is a simple registry setting to revert the...  
View post
Just putting this out here for future reference: there is a service update for VS2015 update 1 to fix some issues. I needed this update to fix an error in VS with T4MVC. Knowledge base article: Link  
View post
https://wakatime.com/dashboard Plugin for Visual Studio (and other editors) to log hours spend in the editor. Free account only retains the information for a couple of weeks and gives you an overview of time per project/solution and per language. Really neat to see those stats. Currently I have this extension installed on both my laptop, pc and in a VM designated for SharePoint development.  
View post
Tonight, I had the idea of starting a new project to test and demo new area’s and features of ASP.NET. Initially it will be a project to test ASP.NET MVC 6 from Visual Studio 2015. I’ll set the project on Github for future reference and to get more familiair with git. Github: https://github.com/rajbos/Asp.Net-DemoProject  
View post