Difference between revisions of "Continuous Integration: Dependency Walker Jenkins Pipeline"
Manuele.simi (Talk | contribs) (→Description) |
Manuele.simi (Talk | contribs) (→Interface) |
||
Line 12: | Line 12: | ||
= Interface = | = Interface = | ||
+ | |||
+ | The pipeline can be launched at https://jenkins.d4science.org/job/gCube-DependencyWalker/. | ||
[[File:Jenkins_DepsWalkerInterface.png|600px]] | [[File:Jenkins_DepsWalkerInterface.png|600px]] |
Revision as of 17:09, 20 April 2020
Description
The Dependency Walker pipeline allows to navigate dependencies among projects in Jenkins.
Given the name of a Jenkins project (P):
- navigate the maven modules built by (P)
- recursively analyze the modules' dependencies and their Jenkins projects
- generate the list of projects that have modules depending on each maven module in (P)
- print a formatted report of the information extracted with the analysis.
Pipeline Definition
The definition of the gCube Dependency Walker pipeline is maintained in this Git Repository: https://code-repo.d4science.org/gCubeCI/gCubeDepsWalker
Interface
The pipeline can be launched at https://jenkins.d4science.org/job/gCube-DependencyWalker/.
Report
The report is divided in two main sections:
1. Project Maven Modules This section lists all the Maven Modules built by the current Jenkins instance that depend on the input project. In particular, for each Maven Module, it reports:
- Deepest Dependency Level: the deepest level of dependency of this module with respect to the input project. L1 is the level of the modules directly built by the project, L2 is the level of the modules that use L1 modules, and so on;
- Used by: the list of modules that use the module;
- Referred by: the list of Jenkins projects that refer the module (which are basically the projects that build the Used by modules).
2. All Downstream Projects This section presents a union of all the Jenkins projects affected by the changes in the input project. These projects built Maven modules that depend on modules built by the input project, directly or through transitive dependency.
Sample Report
Dependency Report for workspace-sharing-widget |--Project Maven Modules |--Module: org.gcube.portlets.widgets:workspace-sharing-widget |--Deepest Dependency Level: L1 |--Used by (Maven Modules) |--org.gcube.portlets.user:tabular-data-share-widget |--org.gcube.portlets.user:workspace-tree-widget |--Referred by (Jenkins Projects) |--workspace-sharing-widget |--tabular-data-share-widget |--workspace-tree-widget |--Module: org.gcube.portlets.user:tabular-data-share-widget |--Deepest Dependency Level: L2 |--Used by (Maven Modules) |--org.gcube.portlets.user:tabular-data-manager |--org.gcube.portlets.user:tabular-data-rule-widget |--Referred by (Jenkins Projects) |--tabular-data-share-widget |--tabular-data-manager |--tabular-data-rule-widget |--Module: org.gcube.portlets.user:workspace-tree-widget |--Deepest Dependency Level: L2 |--Used by (Maven Modules) |--org.gcube.portlets.user:workspace |--Referred by (Jenkins Projects) |--workspace-tree-widget |--workspace |--Module: org.gcube.portlets.user:tabular-data-manager |--Deepest Dependency Level: L3 |--Used by (Maven Modules) |--Referred by (Jenkins Projects) |--tabular-data-manager |--Module: org.gcube.portlets.user:tabular-data-rule-widget |--Deepest Dependency Level: L3 |--Used by (Maven Modules) |--org.gcube.portlets.user:tabular-data-manager |--Referred by (Jenkins Projects) |--tabular-data-rule-widget |--tabular-data-manager |--Module: org.gcube.portlets.user:workspace |--Deepest Dependency Level: L3 |--Used by (Maven Modules) |--Referred by (Jenkins Projects) |--workspace |--All Downstream Projects |--tabular-data-manager |--tabular-data-rule-widget |--tabular-data-share-widget |--workspace |--workspace-sharing-widget |--workspace-tree-widget
Back to the CI guide.