Jenkins Pipeline Examples

Coverity on Polaris has many analysis options that you can use in Jenkins pipeline steps

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()
    }
}