Difference between revisions of "Continuous Integration: Dependency Walker Jenkins Pipeline"

From Gcube Wiki
Jump to: navigation, search
(Report)
(Sample Report)
Line 86: Line 86:
 
|--workspace-tree-widget
 
|--workspace-tree-widget
 
</pre>
 
</pre>
 +
 +
 +
''Back to the [[Continuous_Integration_procedure_(2019) | CI guide]].''
 +
 +
[[Category:Continuous_Integration]]

Revision as of 03:17, 13 March 2020

Description

The Dependency Walker pipeline allows to navigate the dependencies among projects in Jenkins.

Given the name of a Jenkins project (P):

  • navigate the maven modules built by P
  • recursively analyze the module's 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 from 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

Jenkins DepsWalkerInterface.png

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.