We have a strong requirement to be able to reproduce very old builds. Our customers build games, those have multi-year cycles, and the cost/effort/risk involved for a games studio to upgrade a dependency (which we are) is very high - so, we need to retain the ability to support older versions for years.
This means we need to pin, to source control
our codebase (obviously! :) )
our build environments (i.e. retain the ability to create, or alternatively keep copies of, our build machines in the same state that a historical build was run on)
our CI configuration
In addition, we also have learned that not source controlling our CI configuration leads to a madness of manual GUI-driven unaudited stealth changes that, when breakages happen, we don't notice until much later.
So, it would be lovely to be able to keep the whole YAML pipeline definition inside source control, not just the step-definitions as currently.
We've seen we can use the REST API's Create/Update Pipeline endpoints - we'll definitely use those to achieve this, unless you get there first.
If we get there first, we'll create a CLI that does this - but it might be coloured by our own opinions. Anyone else want it? It strikes me that most build engineers that realise CI is built mostly with engineering tears might... ;)
We have a strong requirement to be able to reproduce very old builds. Our customers build games, those have multi-year cycles, and the cost/effort/risk involved for a games studio to upgrade a dependency (which we are) is very high - so, we need to retain the ability to support older versions for years.
This means we need to pin, to source control
In addition, we also have learned that not source controlling our CI configuration leads to a madness of manual GUI-driven unaudited stealth changes that, when breakages happen, we don't notice until much later.
So, it would be lovely to be able to keep the whole YAML pipeline definition inside source control, not just the step-definitions as currently.
We've seen we can use the REST API's Create/Update Pipeline endpoints - we'll definitely use those to achieve this, unless you get there first.
If we get there first, we'll create a CLI that does this - but it might be coloured by our own opinions. Anyone else want it? It strikes me that most build engineers that realise CI is built mostly with engineering tears might... ;)