Posts

Azure DevOps custom pipeline task - Template

 A few weeks ago, working for a new customer, I was asked to create a custom task. Having done this before (a couple of times) I started up Visual Studio Code and then immediately got a feeling of déjà-vu. Yes, there is documentation and some examples of how to create a custom pipeline task and there are some simple explanations of how to use the mock runner to unit-test your code, but it is spread all over the place, some documentation is several years old so things have changed slightly and even in the standard Microsoft GitHub repository for Azure DevOps pipeline-tasks , not every task is set up the same way. So, since I was going to set up a complete pipeline for building, testing and packaging a custom task I decided that this time, I would at least capture all the basics so that a next time, I have everything ready out of the box and can focus on implementing the functionality instead of setting up all the plumbing. TLDR, here: https://github.com/fgiele/AzureDevOpsTasks  Multip

Agile, Scrum and SAFe! Oh my!

Image
Originally posted on LinkedIn Agile is here to stay. What started a few decades ago as some stubborn developers who thought they could do things better by breaking with the old way of working has turned in to the standard of today. When plucky startups proved that they could innovate and react to the market faster than the old companies, not just because they were smaller but because they worked smarter, people started to notice. With technology going at an ever faster rate, it is the only way to keep up. If it takes you five years to react to emerging technology, you are running more than four years behind the rest. So agile working is getting embraced and the de-facto standard is Scrum, which is a pretty good starting point for any agile team. With simple rules, core values, select but clearly defined processes and artifacts, it helps any team to get started. Although there are many more ways to work in an agile way, the simplicity of the rules, the clearly defined wa

Running Azure DevOps container agents on OpenShift

Intro Although a lot of companies are moving towards the cloud, for many the on premise data centers are still important, either as an isolated, secure environment for data and work that should not leave the intranet, or as hybrid solutions (for example, data on premise, processing in the cloud). This doesn't prevent modern software development, it means that in most cases new software is written for containers. Data centers run a docker management layer like Kubernetes or OpenShift, enabling not just running containers but also maintaining the entire virtual infrastructure with load balancing and network provisioning capacity. For in house development, this might also mean that you will want to run your own Azure DevOps pipeline agents. For Kubernetes , this is simple, but for OpenShift there are a couple of things you need to take into account. Disclaimer I am not in any way or form an OpenShift specialist, the following observations came because I needed a build agent on an Ope

Moving to DevOps

For several years now, DevOps has been one of the hype words, due to the desire to run development and operations of company software with more efficiency and predictability. This often takes the form of dumping operators into a development team and subsequently declaring it 'done'.  Of course, nothing could be further from the truth. What is DevOps So, this is a tricky one. In its most basic form, it's just the contraction of Development and Operations, but the more important idea is that there is a fluent integration between both disciplines. Developers who understand operations and take that knowledge into account when building software, operators understanding software and influencing how it is made and deployed. We've been here before In a way, DevOps is nothing new in the world of software development. We used to have other roles that were formally separated back in the dark ages of waterfall style software development. Information analysts, functional designer, p

NuGet Release and Pre-Release pipeline

One of the big improvements that came with NuGet is the ability to easily work with third party libraries and, because of proper versioning, using them with relative safety in your software development projects. With rise of dependency injection, nowadays libraries are not just third party pieces of software, they also become an important part of your own software projects. And this means that you need to have a way to store and share them within your team, but also have a sensible way of versioning them. Using Semantic Versioning is the best approach, since it gives a clean and easy way for your team to use versions and have everyone understand the same thing when talking about major, minor and patch version numbers. Now you need to make this a part of your CI/CD pipeline. Pre-Release version, aka the feature build While creating a new version of the library, you will also want to test the changes to your library in the code that consumes said library. For this you need to hav

Using Azure Devops Service Connections in dashboard widgets

Image
Using queryServiceEndpoint Intro So, this is the reason for creating this blog. My frustration with not being able to find any documentation on how to use this feature. Checking the Azure DevOps REST API documentation , I can see this option is available, but there didn't seem to be anyone on the internet who had a working implementation. And the documents from Microsoft didn't help either. So in the end, after some trial and error, I figured this out and decided it might be useful for others to have an example to work from. Why this setup is needed Normally, you could connect the widget, which is running in the browser, directly to a REST API, have it consume the information and then show the values you extracted. However, this means you expose that REST connection and all details necessary to access that API in source code that is run in the browser. If this can be safely done, the party you are consuming your data from will have to set your domain as a valid locat

Setting up a blog

Ok, so this is a first, sort of. As a hobby photographer, I usually just publish on my own site, pictures, perhaps a few words, and that's it. Good enough for friends and family. In my professional work, being an IT engineer, I have written a few articles, but usually didn't feel the need to share. But I've spend the last couple of days working on a piece of code that should have been a breeze to build, but due to a complete lack of documentation turned into a real headache to make it work. My usual way of solving things is googling for answers because almost always someone else has run into the same challenge you're facing and the internet is your friend. Not this time. Diving into the source code of SDKs, APIs and with a lot of trial an error I got things to work. So perhaps this time, I'm supposed to be the one to write things down, so others can just Google the answer. Hence the blog. I'll be dumping stuff I run into and figure out here and might also