From e8ac8ef4129c4a80c7da892734d30ada4c96d322 Mon Sep 17 00:00:00 2001 From: Ivo Gosemann Date: Thu, 25 Jul 2024 17:21:09 +0200 Subject: [PATCH] feat: init greenhouse release process adr --- .../014-greenhouse-release-process.md | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 architecture-decision-records/014-greenhouse-release-process.md diff --git a/architecture-decision-records/014-greenhouse-release-process.md b/architecture-decision-records/014-greenhouse-release-process.md new file mode 100644 index 0000000..6ce5072 --- /dev/null +++ b/architecture-decision-records/014-greenhouse-release-process.md @@ -0,0 +1,96 @@ +# 006-greenhouse-release-process + +- Status: [draft | proposed | rejected | accepted | deprecated | … | superseded by [xxx](yyyymmdd-xxx.md)] +- Deciders: [Ivo, Esther, Uwe, Arturo, Abhi, Wowa, Thomas] +- Date: [YYYY-MM-DD when the decision was last updated] +- Tags: [greenhouse / cloudoperators] +- Technical Story: [description | ticket/issue URL] + +## Context and Problem Statement + +- Define Greenhouse core version and release mechanism; Plugins are a different topic +- All together or different version allowed +- Discuss improvements to our versioned release mechanism (currently very cumbersome for Greenhouse MFEs) +- E2E/Smoke tests, automation to create and publish release (make, GH workflow) + documentation + +**Discussion:** + +- For GH deployment version bumping in various places required. Very cumbersome. +- Workaround tagging on `latest` is being used. +- Single source of truth for versions +- One version for GH core with plugin versions compatbility matrix +- Follow Kubernetes release principles. Version CRDs and treat as API contracts +- Automate version upgrades (dependabot, renovate) +- Consider draft releases + +## Decision Drivers + +- [driver 1, e.g., a force, facing concern, …] +- [driver 2, e.g., a force, facing concern, …] +- … + +## Considered Options + +- [option 1] +- [option 2] +- [option 3] +- … + +## Decision Outcome + +Chosen option: "[option 1]", +because [justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force force | … | comes out best (see below)]. + +### Positive Consequences + +- [e.g., improvement of quality attribute satisfaction, follow-up decisions required, …] +- … + +### Negative Consequences + +- [e.g., compromising quality attribute, follow-up decisions required, …] +- … + +## Pros and Cons of the Options | Evaluation of options + +### [option 1] + +[example | description | pointer to more information | …] + +| Decision Driver | Rating | Reason | +|---------------------|--------|-------------------------------| +| [decision driver a] | +++ | Good, because [argument a] | | +| [decision driver b] | --- | Good, because [argument b] | +| [decision driver c] | -- | Bad, because [argument c] | +| [decision driver d] | o | Neutral, because [argument d] | + +### [option 2] + +[example | description | pointer to more information | …] + +| Decision Driver | Rating | Reason | +|---------------------|--------|-------------------------------| +| [decision driver a] | +++ | Good, because [argument a] | | +| [decision driver b] | --- | Good, because [argument b] | +| [decision driver c] | -- | Bad, because [argument c] | +| [decision driver d] | o | Neutral, because [argument d] | + +### [option 3] + +[example | description | pointer to more information | …] + +| Decision Driver | Rating | Reason | +|---------------------|--------|-------------------------------| +| [decision driver a] | +++ | Good, because [argument a] | | +| [decision driver b] | --- | Good, because [argument b] | +| [decision driver c] | -- | Bad, because [argument c] | +| [decision driver d] | o | Neutral, because [argument d] | + +## Related Decision Records + +[previous decision record, e.g., an ADR, which is solved by this one | next decision record, e.g., an ADR, which solves this one | … | pointer to more information] + +## Links + +- [Link type](link to adr) +- …