Jenkins Pipeline Examples
Note: This platform is renamed Coverity on Polaris.References to Polaris or Polaris Software Integrity Platform in this documentation and screenshots are referring to Coverity on Polaris.
Use the following pipeline examples to help you run various analysis options in Jenkins.
Pipeline examples
The following example uses returnStatus
and
returnSkipCode
(default=true) to create dynamic workflows
(Pipelines), for example, running incremental analysis (LCA) and switching to
full analysis if the changeset is empty, and then performing an issue check only
when either the incremental analysis (LCA) or full analysis step succeeds.
Conditional step examples
Run incremental analysis (LCA) on changes to '*.java'
files;
switch to full analysis if no '*.java'
files have changed, and
only perform an issue check if either incremental analysis (LCA) or full
analysis succeeds.
stage('Polaris Analysis') {
steps {
script {
def polarisStatus = polaris arguments: 'analyze -w --incremental $CHANGE_SET_FILE_PATH', createChangeSetFile: [excluding: '', including: '*.java', returnSkipCode: true], polarisCli: 'MyPolaris', returnStatus: true
if (polarisStatus == -1) {
print 'Incremental analysis was skipped because no change set file could be created. Falling back on full analysis'
polarisStatus = polaris arguments: 'analyze -w', polarisCli: 'MyPolaris', returnStatus: true
}
if (polarisStatus == 0) {
print 'Success: Polaris static analysis succeeded, perform issue check'
polarisIssueCheck()
} else {
print 'Failure: Both incremental analysis and full analysis failed'
}
}
}
}
Individual step examples
The following example shows a simple use case for each major workflow, for example, full analysis, incremental analysis (LCA), and issue check.
// Example: Full Analysis, performing a full analysis, throwing an exception if analysis fails
polaris arguments:
'analyze -w', polarisCli: 'MyPolaris'
// Example: Incremental Analysis (LCA), throwing an exception if analysis fails or a different exception if analysis is skipped, analyzing only *.java files
polaris arguments:
'analyze -w --incremental $CHANGE_SET_FILE_PATH', createChangeSetFile: [excluding: '', including: '*.java'], polarisCli: 'MyPolaris'
// Example: Checking for Issues, throwing an exception on issues found and using default timeout
polarisIssueCheck()
Separate analysis and issue check pipeline
The following example separates the analysis and issue checking so that you can leverage asynchronous analysis.
// Simple use case: Split Full Analysis and Issue Check
stage('Polaris Analysis') {
steps {
polaris arguments: 'analyze', polarisCli: 'MyPolaris'
}
}
// Other stages and steps can be performed while Polaris analyzes your data
stage('Polaris Issue Check') {
steps {
polarisIssueCheck()
}
}