The first step will be to setup an environment where we can run Docker and is the topic for this instalment. We need at least two kinds of hosts: a Windows and a Linux machines. Simple reason: you cannot run Windows containers on a Linux host, also running Linux containers on a Windows machine is inefficient (they truly run inside a virtual machine). Windows support for Docker is tied to specific kernel versions.
Welcome. This series of articles will go in details of automating Azure Pipelines infrastructure itself. The text is accompanied by a source code repository publicly available on GitHub. Scenario and Problems Imagine yourself in the scenario of an independent team responsible of maintaining its own build pipeline. Typical solutions are: Grab a leftover desktop or server machine Ask the IT department for a virtual machine Buy a VM in the cloud Use the standard hosted agents provided by Azure Pipelines These solutions share some common problems.
To work on TFS Aggregator I use a number of virtual machines running different versions of Team Foundation Server. I also install the remote debugging tools (more info on remote debugging) inside the VM and I am good to go, except for a little tweak that I always forget. So I am writing about here as a reminder. In my configuration the Virtual Machine in Hyper-V sees the network as Public while TFS setup, by default, opens the Firewall ports only on Private networks.
Many of you knows my work on TFS Aggregator. Since the beginning we opted for Markdown as the format for the project documentation, at the beginning they were some files in a doc folder, then I moved the content to the project’s GitHub Wiki, today I use the same files to generate the GitHub pages at https://tfsaggregator.github.io/intro/. In this post I will describe how this latter step works in detail to publish our open source project’s documentation.
It all started because I needed using files coming from a Git repository and additional files stored in classic Team Foundation Version Control (TFVC), all toghether in the same build. The Options You have three options: the REST API, the tf.exe vc command or … we will see. Option 1 – REST API My first attempt relied on a Powershell script to download the files from TFVC using REST API.
I did it again and changed my blog engine to Hugo; as a consequence you will find some small change in style and navigation. The first and foremost reason is the complexity induced by Jekyll. It requires some GB (who says that Visual Studio is big?) and many vodoo hacks to work on Windows. I ended having a Linux VM running Jekyll and some additional steps going from the Markdown file to a published post.
Annoyed by this error? [Full Analysis Database Sync]: TF276000: The current Analysis Database Sync job has exited without making any changes. Either another Analysis Database Sync job is already in progress, or the Analysis Database Sync job cannot run because an Optimize Databases job is running. The next Analysis Database Sync job will start at its scheduled time. It shows up in the Cube Status report of the Administrative Report Pack, and you are using them, aren’t you?
I wrote lot of code in my life, and I discovered some patterns that can be useful to other people, so let’s share and discuss. More than design patterns, they are ways of applying classical Gang of Four Design Patterns in specific contexts. Today, I will start discussing writing logging and monitoring code, and you will see why I take these two together. The code examples use the C# language, but the ideas can be equally applied to C++, Java, Go or any other object oriented language with an interface feature that decouples implementation from definition.
In a previous post, I quickly touched on TfsGitAdmin. I published the code on GitHub at https://github.com/giuliov/TfsGitAdmin and added new features to it: Adds an additional Git repository to a Team Project Creates the default Git repository on a Team Project that was created without version control Deletes an existing Git repository List all Git repositories in a Team Project Renames an existing Git repository Some Usage Examples TfsGitAdmin add -s http://localhost:8080/tfs -c DefaultCollection -p MySampleProject -r MyAdditionalGitRepository Adds an additional Git repository to Team Project MySampleProject.
A while ago I held and internal session on Agile Portfolio Management. I found some questions interesting, so I share my answers here. Q: How to measure the improvement of an agile Team, which indicator to use? A: There are three useful values to monitor. One is the Team’s velocity: it should go up sprint after sprint, suggesting that the Team gets more and more efficient; the initial sprints are usually irregular.