Only Build Your Binaries Once

Only Build Your Binaries Once

 06 Jan 2023 -  Giulio Vian

One of the principles highlighted, many years ago, in Continuous Delivery   is: Only Build Your Binaries Once (Chap.5 p.113). As all good principles, its formulation is simple but its ramifications are numerous. Today I’ll try to explain the consequences and clarify the reasons that justify the principle of generating the binaries only once. Before going into it, we need to clarify that the term “binaries”. Both in the context of the original authors and also in this article ‘binaries’ includes all kinds of artifacts produced by continuous integration (i.

Read more… ( ~7 Min.)
Designing CI/CD pipelines in 2023

Designing CI/CD pipelines in 2023

 24 Dec 2022 -  Giulio Vian

Here’s a long article just in time for the Christmas holidays. Today I want to give you an overview of what to expect in a modern Continuous Integration / Continuous Delivery (CI/CD) pipeline. As usual, I won’t focus on specific technologies but on the process, hinting at products and technical solutions to exemplify concepts. In my humble opinion, the best approach to designing a process, even an architecture, is to move backwards, from the final goal with its fundamental requirements, all the way back to product evolution planning.

Read more… ( ~17 Min.)
Non-functional Releases

Non-functional Releases

 10 Dec 2022 -  Giulio Vian

What are non-functional releases? It is easy to say: they are “technical” releases with no functional changes. Someone will ask why re-releasing the same thing with no code changes. It makes sense when you do not change functional code but something around it, something that cannot be released separately. The most common case now happens one must replace a vulnerable library with a more secure version, then repackage and release again.

Read more… ( ~10 Min.)
Packages or Containers?

Packages or Containers?

 10 Oct 2022 -  Giulio Vian

In a previous article I considered the principle that DevOps collects from Lean, namely the importance of minimizing the size of releases. In Lean we talk about small batches, which for software means reducing as much as possible the amount of changes present in a release. With some simple examples I hope to have demonstrated the advantages that are derived from them and how automation is a consequence of minimizing the weight of our releases.

Read more… ( ~5 Min.)
Architecture, what is it?

Architecture, what is it?

 07 Oct 2022 -  Giulio Vian

Definitions are important and when I hear using the term architecture to refer to classes and programming patterns within a program, I find myself uneasy. It’s probably a problem of mine, so I looked at literature and what they say: not an exciting landscape. Martin Fowler in Software Architecture Guide (martinfowler.com)   mentions two definitions: ** the shared understanding that the expert developers have of the system design **

Read more… ( ~3 Min.)
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.)

Top 10 Pipeline mistakes

 23 May 2020 -  Giulio Vian

Introduction to the Top 10 Pipeline mistakes series

Read more… ( ~2 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.)