Closed cjdcordeiro closed 2 years ago
Whatever is the easiest to manage!
I would advocate for something consistent but flexible-enough. As in, the name of the repo should mean something (probably the name of the ROCK?) but a project should be able to contain multiple build definitions (for example, using different build environments, adding small tweaks, publishing a debug image…).
I assume you’re thinking of runtime-deps vs runtime? We could envision something such as — from the same “dotnet” repo:
This would be consistent with our convention of “app:version-base_risk[_branch]” where the branch is a main track flavour. (The fallback mechanism must allow to fallback from a missing branch to the main track, which I believe is the case here.)
I would also understand that this might create confusion; in that case splitting into multiple projects is also fine.
Anyway, this won't be set in stone and we will be able to change it again later.
separation of concerns: if one ROCK fails to build, another might succeed
Depending on how the automation is defined I can see this as being a con. For .NET, we want to release all images as a single unit. For example, we have the following dependency tree: runtime-deps -> runtime -> aspnetcore -> sdk. The scenario of concern is say we release a new version of .NET. If the aspnetcore image fails to build, we don't want to release runtime-deps and runtime. What we want is all images to be released concurrently.
thanks @valentincanonical .
@MichaelSimons makes a good point too.
I'm not so worried about
- dotnet:6.0-22.04_stable —> runtime
- dotnet:6.0-22.04_stable_runtime-deps —> runtime-deps
but once we start moving to aspnet and SDK...this feels a bit weird.
So I think it all boils down to these two questions:
runtime
ROCK is runtime-deps
fails. If the repositories are split, can we ensure a cross-repository build trigger to abide by this dependency chain?in the ROCKs story, can one single source generate multiple ROCKs?
I would say yes, but things will probably be easier to manage if the name of the repo means something (even if it is just a unique prefix.) We could also not care about being in a somewhat messy situation and completely unrelate the name of the repo from the name of the published ROCK. Let's discuss this on a call! (My thinking is, once again, that whatever is the easiest seem to be the best answer to the question. It doesn't look like we're making a too-deep commitment. Someday, we could imagine ROCKs will be built from upstream's GitLab/GitHub/Git{any} repos and we would not be able to rely on the git repo name anyway.)
If the repositories are split, can we ensure a cross-repository build trigger to abide by this dependency chain?
You tell me 😉 I'm thinking - why not? However, wrt our channels and risks system, it does sound to me like something that should be managed making use of the risks. Let me develop further with a(n example) solution proposal:
runtime
and runtime-deps
are built entirely separatelyedge
risk (eg rocks/dotnet:6.0_edge_rev32
)edge
channel of the two images align, the external machinery would begin their promotion process making them available to the beta
, candidate
, and stable
(ie latest
) risks/channels.(we can also discuss on our next call, it'll probably be easier!)
the current implementation is heading towards the following:
We can close this for now, saying "no, we don't need to split the repo into multiple ones"
ref: see #24 for more details on how to structure the ROCK project to have multiple ROCKs
right now we are packing
runtime-deps
,runtime
, and potential others ROCKs all within this GH repository.Should we actually split it such that we have one ROCK per repo?
Pros:
Cons: