Is DevOps no more than automation?

Is DevOps no more than automation?

 16 Sep 2022 -  Giulio Vian

One big misconception about DevOps is that it is just automation, no other purposes. Nothing is more wrong. Automation is a mean to a very different goal. The purpose of DevOps is to optimize and maximize the value delivered to users through the IT chain of work. To maximize value, we need to reduce the size of our releases. Each release has less features, but we release more frequently. More frequent releases are less efficient if we manage them manually.

Read more… ( ~3 Min.)
Automate? Always!

Automate? Always!

 16 Sep 2022 -  Giulio Vian

Some years ago I gave a talk, titled “Automate? Always!”, to stimulate a discussion about automation in software engineering. Today, I am putting the argument in writing to reach a bigger audience. Please note: in this post I refer to any automation in software development lifecycle: spanning from editor macros to deployment scripts (I confess my preference for the latter as you will perceive). Please bear with me because this will be a bit longer than other posts, although there is more to say that can fit a single article.

Read more… ( ~6 Min.)
Blog updated: Hugo & GitHub Actions

Blog updated: Hugo & GitHub Actions

 25 Apr 2020 -  Giulio Vian

I wrote a while ago about Automating Hugo to publish a blog. In that post, I used Azure Pipelines (well, they had a different name at that time). Today, after three years, I revised the solution and I am amazed by Hugo   progress. Many of my customisations and hacks I implemented are gone: Hugo batteries included philosophy is a true thing. In addition to using the most recent version – 0.

Read more… ( ~2 Min.)
Using GitVersion in GitHub Actions beta

Using GitVersion in GitHub Actions beta

 23 Sep 2019 -  Giulio Vian

I was lucky to enter the GitHub Actions beta program so I wondered about the best way to test it. Finally, I decided to port Aggregator CLI   build scripts to GitHub Actions. A critical step of those scripts is to run GitVersion   to generate the version for Aggregator. GitVersion, in the words of its authors, “looks at your git history and works out the semantic version of the commit being built.

Read more… ( ~5 Min.)
Meta-pipelines - Part 5 - Automating the Host Environment

Meta-pipelines - Part 5 - Automating the Host Environment

 20 Sep 2019 -  Giulio Vian

Looking back at the previous parts of this series, we have been able to manually setup two hosts, a Windows one and a Linux one, and a simple pipeline to automatically deploy new Azure DevOps/TFS Agents in Docker containers on such hosts and even update them. In this post we will look how to provision the hosts themselves. For this purpose we will use Terraform and invoke it from Azure Pipelines so we can automate host creation in Azure.

Read more… ( ~7 Min.)
Meta-pipelines - Part 4 - Deploy and Run

Meta-pipelines - Part 4 - Deploy and Run

 13 Sep 2019 -  Giulio Vian

In the previous instalment we built custom Docker images for Azure Pipelines/TFS Agents. In this post, we will explore the lifecycle of Docker containers running such images. Container Deploy Pipeline This pipeline is more complex than the previous requiring 4 actions: checking if the agent (rectius the container running the agent) is running If so, stop and remove the container Pulling the image from the selected Docker Registry Starting the container with the proper parameters.

Read more… ( ~5 Min.)
Meta-pipelines - Part 3 - Build and Registry

Meta-pipelines - Part 3 - Build and Registry

 06 Sep 2019 -  Giulio Vian

In the previous instalments we examined a possible Dockerfile for an Azure Pipelines/TFS Agent. In this post, we will explore the pipeline that can automatically build such custom agent images. Docker Registry To automate properly we need a Docker Registry where storing the Docker images we build. There are many advantages in using a registry, in our scenario it enables: pulling an image version built years ago distribution of images to multiple hosts caching locally base images, allowing air gap builds For the purpose of this series we will use Azure Container Registry (ACR for short), but there are many options; for example I used successfully ProGet   .

Read more… ( ~3 Min.)
Meta-pipelines - Part 2 - Dockerize the agent

Meta-pipelines - Part 2 - Dockerize the agent

 30 Aug 2019 -  Giulio Vian

In the previous instalment we setup a couple of machines to run Docker and host docker containers. In this post, we will explore the structure of a Dockerfile for Azure Pipelines/TFS Agent. There is a notable difference between Azure DevOps Service and Server in terms of handling agent updates. The first part of this article can be used in air-gapped environments. If you need a primer on Docker there is plenty of resources, from the excellent The Docker Book   to the official documentation   , Pluralsight courses, etc.

Read more… ( ~9 Min.)
Meta-pipelines - Part 1 - Docker Hosts

Meta-pipelines - Part 1 - Docker Hosts

 23 Aug 2019 -  Giulio Vian

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.

Read more… ( ~5 Min.)
Meta-pipelines - Introduction

Meta-pipelines - Introduction

 19 Aug 2019 -  Giulio Vian

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.

Read more… ( ~3 Min.)