Closed cazlo closed 3 weeks ago
An alternative solution which could be utilized to achieve the same desired end state with potentially less ongoing labor expenditure necessary:
Absorb nasa/koviz
source code into nasa/trick
using a utility which preserves its git history.
There appears to be tight coupling between nasa/trick
and nasa/koviz
; trick needs koviz to test and koviz needs trick to get data to visualize. To provide data around this statement, in analysis of the NASA org, I am finding only reference to this code in nasa/trick
:
https://github.com/search?q=org%3Anasa%20github.com%2Fnasa%2Fkoviz&type=code
Expanding the search further to all of public GitHub yields similar results from various forks of trick.
The tight coupling between the components introduces a potential circular dependency with respect to testing, if they are managed as 2 separate codebases/CI runtimes. This appears to be worked around now by the CI tests of nasa/koviz
primarily being smoke-check type functions, as opposed to higher fidelity tests which include coverage analysis.
Merging the 2 codebases would replace the need to download and unzip the nasa/koviz
artifact at nasa/trick
CI runtime, potentially saving a ROM (rough order of magnitude) of between tens of seconds and minutes in the nasa/trick
CI operations.
We could reuse the existing trick Release process, avoiding the need for the 5 manual steps described in the original feature request.
Having 1 git commit which describes the entire system, as opposed to 2, ensures deterministic, reliable CI operations. It helps to avoid situations where a change in nasa/koviz
introduces fault into nasa/trick
in a released version of nasa/trick
.
nasa/trick
, create a feature branch from master
git subtree add --prefix koviz https://github.com/nasa/koviz.git master
master
nasa/koviz
nasa/trick
. The additional I/O comes from pulling the git history of nasa/koviz
and the additional source code. Could potentially be mitigated by use of the --squash
feature of git subtree
.nasa/trick
and/or nasa/koviz
may be impacted. nasa/koviz
in Engineering documentation would need to be updated. To mitigate this, before we archive nasa/koviz
as step number 5 of the procedure, we would probably want to update the README or add a banner or something to point people to nasa/trick/koviz
.Hi cazlo! I think this makes good sense, "To support deterministic, stable CI test operations, open dependencies are usually replaced with references to a specific version of the software, e.g. a specific git sha, a git tag, etc."
I haven't resisted tagging so much as waiting for the actual need and to make it meaningful. It's very hard to draw a line because the latest is really the greatest. A tag seems arbitrary. That said, I get that it'd be good, especially since koviz is used in other tool's CI process, to sit on a static koviz commit rather than always pointing to HEAD. That gives confidence that a koviz update didn't change the response - even if the response is better. I guess I've always thought that people would want the latest hash until a point where koviz got more established. Maybe this issue signifies that milestone. Koviz could be growing out of, "Oh, pull the latest."
What this would do as well is, draw a line where I could create a corresponding RPM. This issue is pertinant as well to conversations today where koviz is being included in various projects.
I'm closing this issue after tagging. I think the next tag will be 1.0.0 and will be customer driven.
Awesome, thank you!
You're welcome!
What
Release tags periodically
Why
There is an upstream dependency in nasa/trick on nasa/koviz for trickops tests it performs in CI. See also trickops CI definition.
Currently this upstream dependency is "open", pointing to the HEAD of master. Open dependencies bring with them several operational challenges including:
To support deterministic, stable CI test operations, open dependencies are usually replaced with references to a specific version of the software, e.g. a specific git sha, a git tag, etc.
This is related to several standards including:
NASA 7150.2D (NASA Software Engineering Handbook)
NIST 800-218 (Secure Software Development Framework - SSDF)
NIST 800-53 (Security and Privacy Controls for Information Systems and Organizations)
Recommended Process Implementation
nasa/koviz
gets merged intomaster
nasa/trick
where we update CI to point tonasa/koviz
@master
commit from step 1nasa/trick
has all passing testsnasa/koviz
from the commit tomaster
in step 1nasa/trick
to point tonasa/koviz
@ the tag in step 4Recommend additionally to use calver (e.g.
v2024.09
) or semver (e.g.v1.2.3
) for the tag.