Quality of life updates for managing versions and freights (create from freight and diff)
Checklist
- [x] I've searched the issue queue to verify this is not a duplicate feature request.
- [] I've pasted the output of
kargo version, if applicable. - [] I've pasted logs, if applicable.
Proposed Feature
I'm working on a platform engineering solution that uses multiple fairly large freights (4 Warehouses, 3 of which watch more than 5 sources). To help with our workflow and update process, we would need two QoL features:
-
Freight from freight: Have a way for the interface to manually create a freight from a different one. It would open the freight creation overlay with the versions from the other freight, allowing for specific updates or rollback.
-
Freight diff: Similar to the previous feature, the interface would have a way to compare two freights to see which versions are different
Motivation
Let's take a complete use case: I have a warehouse with several sources including our core-api docker image. I have three stages:
- Development
- Integration
- Production
Each of these render yaml manifests to an environment-specific branch which is deployed via argocd.
Let's say I build a new core-api image version; 1.0.2. The new freight is promoted to dev automatically. Testing passes, I am looking to promote to integration. I want to make sure that the only version that changes is this particular one: i diff the new freight against the freight currently in integration. If the core-api version is the only difference, I promote. If not, I can create a new freight from the one currently in integration. The freight creation form opens with corresponding version already selected. I just have to change the core-api one and confirm.
These two feature put togeher would allow for much easier fine-grained version control and partial updates/rollbacks.
Diffing is something I would definitely like to see, especially if support for promoting multiple freights at once gets added. For example promoting all freights in QA to prod could be done with a single click "Promote multiple to downstream" which could open up a view with the diff for each version.
Freight from freight: Have a way for the interface to manually create a freight from a different one. It would open the freight creation overlay with the versions from the other freight, allowing for specific updates or rollback.
Over the last year I have seen something like ten people who who are experiencing difficulties due to the lack of this functionality - https://github.com/akuity/kargo/issues/2988.
In my case, I solved it in a crude way. We have simple release policy, and according to that policy one set of artifacts is delivered to all environments after testing. We commit new versions for updated artifacts to main and Kargo is used only to render manifests to the right branches and update ArgoCD applications. It's sad, but still better than specify version for each image when assembling freight in UI or writing CI-pipeline for promotion
For example promoting all freights in QA to prod could be done with a single click "Promote multiple to downstream" which could open up a view with the diff for each version.
https://github.com/akuity/kargo/issues/3193 - take a look on this issue then. I also expected something like that, specifically in the form of a single promotion. But as far as I understand, Kargo developers have other plans, and they are considering the option of reusing the existing logic (repackage multiple pieces of Freight as a single piece of Freight) instead of implementing a new logic/kind of promotion
This issue has been automatically marked as stale because it had no activity for 90 days. It will be closed if no activity occurs in the next 30 days but can be reopened if it becomes relevant again.