[BUILD-503] Recursive webapp release rather than simple module release Created: 25/Aug/21  Updated: 10/Dec/21  Resolved: 10/Dec/21

Status: Closed
Project: Build
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Neutral
Reporter: Maxime Michel Assignee: Maxime Michel
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File Screenshot 2021-12-09 at 15.07.20.png    
Issue Links:
relation
is related to BUILD-602 Introduce a manually-maintained but o... Closed
Template:
Acceptance criteria:
Empty
Epic Link: Release automation

 Description   

While it's aware of a module's dependencies, the webapp is currently only able to:

  • release when there are no SNAPSHOT dependencies
  • raise a red flag when SNAPSHOT dependencies are present

In the case of SNAPSHOT dependencies, the webapp should instead be able to:

  • release the SNAPSHOT dependencies
  • then come back to release the module

If too difficult, a simpler and intermediate approach would be to feed the webapp an ordered list of modules to release.

Implementation notes

 
IIUC you are dealing with a DAG though and want to do topological sorting. After some googling I found https://jgrapht.org/javadoc-1.4.0/org/jgrapht/graph/DirectedAcyclicGraph.html from the JGraphT library, which looks promising. I didn't use it before neither though...
 
getRoot() is basically https://jgrapht.org/javadoc-1.4.0/org/jgrapht/graph/DirectedAcyclicGraph.html#iterator() here



 Comments   
Comment by Maxime Michel [ 10/Dec/21 ]

I was able to get this to work, but the problem is that it takes way too long to compute. See the screenshot for an example of the complexity. We will instead manually maintain this list, in a follow-up. Should we ever want to revive this approach, the BUILD-503 branch is available.

Generated at Sun Feb 11 23:42:27 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.