compliance checks feature

Compliance checks in your IDE, Git hooks or CI

In this article I compare several approaches for running compliance checks, like validating Git commit messages with a regular expression, or linting your code. I explain how these checks can either run in your IDE, in a local pre-commit hook, a remote pre-receive Git hook, or as part of your CI pipeline. I compare these … Read more

release it book summary feature

Book recommendation: Release It! – Design and Deploy Production-Ready Software

In this book recommendation, I review the second edition of the book Release It! Design and Deploy Production-Ready Software by Michael Nygard, released in 2018. I also offer my 27 page summary of the book as free download. Introduction A common misconception is that the majority of the costs in a software-based project is allocated to … Read more

Docker build cache debug techniques

Docker build cache: debug techniques

The Docker build cache avoids rebuilding those parts of a Docker image that were already built. Unfortunately, cache misses are hard to debug. In this article I explain three frequent yet unexpected reasons for cache misses, with solutions. One of them is that COPY or ADD statements are rebuilt, because files have changed. To diagnose … Read more

speed up gitlab ci feature

Speed up GitLab CI – the 5 best tips for fast pipelines

Starting from an overview of frequent causes for slow pipelines, I derive 5 tips to speed up GitLab CI pipelines. These include choosing the appropriate runner infrastructure, choosing the right caching approach (Docker vs. GitLab), DAG pipelines, mixing GitLab’s caches and artifacts, and optimizing individual jobs (e.g. via parallelization). Introduction As I already explained in … Read more

gitlab vs docker caching

GitLab CI/CD: GitLab vs. Docker caching – how to get insanely fast CI/CD pipelines

Using a Node.js example project I demonstrate how Docker-based caching can speed up your GitLab CI/CD pipelines even more than GitLab’s built-in caching mechanism. I explain how each approach works, and what the technical prerequisites are. I also list tools that support you with setting up a Docker-based CI pipeline. Introduction Caching of files between … Read more

docker image tagging best practices feature

Docker image tagging: best practices in a CI pipeline

This article explains why you should not tag your own Docker images with only the “latest” tag. I discuss alternative best practices, categorizing them into stable vs. unstable version tags. I also fully deconstruct a Docker image tag into its basic components to improve your understanding of Docker image names and tags. Introduction When you … Read more

GitOps with GitLab ArgoCD and Renovate Bot

GitOps for managing cluster software using GitLab, ArgoCD and Renovate Bot

This article demonstrates how to use the ArgoCD GitOps controller to deploy applications to a Kubernetes cluster. The definitions/manifests of these applications, such as an Ingress controller, monitoring stack, etc., are stored in GitLab. They are automatically updated by Renovate Bot, which regularly scans your GitLab project for outdated dependencies. A demo project illustrates how … Read more

gitlab ci/cd introduction

Introduction to GitLab CI/CD pipelines: a complete guide to get you started

This article provides a detailed introduction to the general concepts of GitLab CI/CD pipelines. It discusses the anatomy of the pipeline definition file, how GitLab distributes and runs jobs on runners, and what good practices you can follow. I also explain how the containerization of CI jobs affects their ability to build Docker/OCI images. Introduction … Read more

ci/cd basics feature

CI/CD Basics

CI/CD is the process of fully automating tasks such as building, testing and deploying your software. Instead of running these tasks manually, on a developer laptop, you have them executed on a server all the time. In this article, I dive deeper into the definition of CI/CD and related terms, explain the background of CI/CD, … Read more

renovate bot cheat sheet feature

Renovate bot cheat sheet – the 11 most useful customizations

Renovate bot is a tool that automatically updates third-party dependencies declared in your Git repository via pull requests. This Renovate bot cheat sheet helps developers who adopt Renovate to customize the most common (and useful) configuration options, without having to read the entire, extensive Renovate bot documentation. Introduction Renovate (Bot) is a CLI tool that … Read more