feat: ADR - TF tagging#435
Conversation
| |---|---|---|---|---| | ||
| | `3.6.7` | `3.6` | `26.04` | | `1.0.0` | | ||
| | | | | A TF endpoint added to track `3.6` | `1.1.0` | | ||
| | | | | A TF endpoint added to previous track e.g., `2.9` | `n-1.n+1.0` or `n.n+1.0` | |
There was a problem hiding this comment.
Why the ambiguity in the tag? Can we swap this with a concrete number like the other examples?
There was a problem hiding this comment.
❗️Some issues with our approach
A tag is based on a commit on track/0 and we are now on track/1, but we never had to make any TF changes until track/2 is released. Now we bump the major to e.g. 1.0.0 and this tag is based on a commit on track/2. However, now we want to go back and add an endpoint to the 0.x.x TF module, but I don't know which track to tag a commit from.
Solution idea: we can use branches named after major TF tag versions to avoid outdated TF in older branches.
If we have charms in a product that do not have breaking changes, then they have minor bumps per cycle. What do we do with the product version to stay up-to-date with docs? The concern Luca brought up is that we will not be able to version our stack docs separately from the i.e., we have a core mapping conflict between TF modules vs. RTD.
We might have a workaround if we name tracks after
major.minorof the product tf module
Then you'd have separate docs every time we change the charm channels (likely every 6 months); the downside is of course that if most documentation stays the same, we need to backport docs changes, but that's probably fine
|
|
||
| ### Shortcomings of our decision | ||
| - ❗️Tags are opaque to charm-tracks e.g., `1.0.0` is specific to track `2`. | ||
| - A user needs to search release notes / module docs to understand what tracks are allowed. |
There was a problem hiding this comment.
Note that the validation on tracks also implies users can't deploy chosen version of the workloads besides the few combinations that we explicitly allow.
If we have:
1.0.0with Loki 2.9 and Grafana 102.0.0with Loki 3.6 and Grafana 12
If a user wants to deploy Loki 3.6 with Grafana 10, they'll have to fork our Terraform module and write their own; I would add that here.
There was a problem hiding this comment.
This is not necessarily true. The bumping of applications/components within COS (likely every cycle) may not require a major change in the product module. E.g., this is also possible if we did not break the product API:
1.0.0with Loki 2.9 and Grafana 101.1.0with Loki 3.6 and Grafana 12
Regardless, the user can still override the channel for a specific application if they choose to. E.g.,
module "cos" {
source = 1.1.0
grafana = {channel = 10.1/stable}
}
Reference to discussion: