diff --git a/Jenkinsfile b/Jenkinsfile index 6f20c3c..f25cf7d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,7 @@ def counts = 0 def projects2artifacts = [:] +def artifacts2projects = [:] def modules2deps = [:] def inputProject = 'storagehub-client-library' @@ -14,7 +15,7 @@ pipeline { script { Jenkins.getInstance().getAllItems(TopLevelItem.class).each { p -> projects2artifacts[p.name] = [] - p.getAllJobs().each { j -> projects2artifacts[p.name] << j.name } + p.getAllJobs().each { j -> projects2artifacts[p.name] << j.name; artifacts2projects[j.name] = p.name } } println "FOUND ${projects2artifacts.size()} projects" projects2artifacts.each { k,v -> println ("PROJECT ${k} BUILDS ${v}") } @@ -39,18 +40,18 @@ pipeline { steps { script { println "PROJECT ${inputProject} BUILDS ${projects2artifacts[inputProject]} artifacts" - // first, let's find out what components depends on the project's artifacts + // first, let's find out what components depends on the project's artifacts (i.e. downstream dependencies) def downstreamdeps = [:] projects2artifacts[inputProject].each { a -> downstreamdeps[a] = [] - downstreamdeps[a] << findDownstreamDependencies(modules2deps, a) + downstreamdeps[a].addAll(findDownstreamDependencies(modules2deps, a)) println "${a} is used by ${downstreamdeps[a]}" } // then we look for the projects that build the downstream dependencies - //downstreamdeps.each { k, v -> - // println "${k} is build by ${findProject()}" - //} + downstreamdeps.each { k, v -> + for (d in v) { println "${d} is build by ${artifacts2projects[d]}" } + } } } } @@ -65,7 +66,9 @@ def findDownstreamDependencies(modules2deps, artifact) { def findProject(projects2artifacts, artifact) { println "Looking for project that builds ${artifact}" - projects2artifacts.find { k,v -> v.contains("${artifact}")}.first.key + def name = "" + projects2artifacts.each { k,v -> if (v.contains("${artifact}")) name = k } + name }