mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-02-07 13:42:23 +02:00
* Add ReportAggregator to collect information about executed stages and create reports * ReportAggregator is used by the SAP Cloud SDK to collect information about which stages were executed, code coverage and many more measurements. * based on the measurements a pdf report can be generated which can be used to get a certification by SAP
128 lines
5.1 KiB
Plaintext
128 lines
5.1 KiB
Plaintext
SAP Cloud SDK Continuous Delivery Report
|
|
|
|
SAP offers special programs for partners to get their products certified or apply for vendor branded and SAP branded reselling. These programs require that the partner fulfills certain quality criteria.
|
|
The SAP Cloud SDK helps partners to fulfill many of these qualities. Furthermore, the SAP Cloud SDK Continuous Delivery toolkit helps to ensure these qualities as listed below.
|
|
This report lists which qualities were assessed during the pipeline run. For each quality, it references the relevant requirements in the partner certification or qualification program.
|
|
|
|
This report was generated at: $utcTimestamp UTC
|
|
It belongs to the artifact/project with the following identifier: $projectIdentifier
|
|
|
|
1. Continuous Delivery Pipeline
|
|
|
|
Relevant for Requirements:
|
|
- CP-SWLC-04: Capability to Quickly Deliver Urgent Corrections
|
|
- CP-CD-04: Continuous Integration applied
|
|
- CP-CD-06: Deployment Pipeline used
|
|
- CQP-CLI-4: Provisioning Tools
|
|
- CQP-OPE-1: Software Lifecycle Automation
|
|
|
|
The projects uses a build pipeline. The following checks were executed successfully during the pipeline run:
|
|
|
|
<% print qualityChecks.collect({each -> " - ${each}"}).join("\n") %>
|
|
|
|
<% print deploymentExecuted? "Afterwards the pipeline deployed the project." : "The pipeline did not execute a productive deployment." %>
|
|
|
|
Details regarding these checks executed in the pipeline can be found below.
|
|
|
|
2. Version Control
|
|
|
|
Relevant for Requirements:
|
|
- CP-SEC-02: Version Control available
|
|
|
|
<% print versionControlTool ? "This project uses ${versionControlTool} as version control system." : "No version control system could be identified." %>
|
|
|
|
3. Security Checks
|
|
|
|
Relevant for Requirements:
|
|
- CP-SEC-02: No vulnerability with high and critical severity
|
|
- CQC-SEC-2: Web/Internet Security
|
|
|
|
The following Security Scanners were executed during the pipeline build:
|
|
<% print securityScans.collect({each -> " - ${each}"}).join("\n") %>
|
|
|
|
<% print npmAuditedAdvisories ?"The following advisories for npm were found but audited:\n" :""
|
|
print npmAuditedAdvisories.collect({each -> " - https://www.npmjs.com/advisories/${each}"}).join("\n") %>
|
|
|
|
4. Resilience Check
|
|
|
|
Relevant for Requirements:
|
|
- CP-PERF-02: Communication (Resilience)
|
|
- CQC-SRV-5: Resilience
|
|
|
|
<% print resilienceChecked? "The pipeline checked during the test execution that all calls to 3rd party systems were wrapped with Hystrix." : "There were no checks for resilience." %>
|
|
|
|
5. Performance Tests
|
|
|
|
Relevant for Requirements:
|
|
- CP-OP-15: Scalability
|
|
- CP-OP-16: Elasticity
|
|
- CQC-PRF-1: Performance Tests
|
|
- CQC-PRF-2: E2E Processing Time
|
|
|
|
<% print performanceTestsExecutions ?"The following performance tests were executed:" :"No performance tests were executed in the pipeline." %>
|
|
<% print performanceTestsExecutions.collect({each -> " - ${each}"}).join("\n") %>
|
|
|
|
6. Artifact Repository
|
|
|
|
Relevant for Requirements:
|
|
- CP-CD-03: Artifact Repository available
|
|
|
|
<%
|
|
if(deploymentToNexusExecuted){
|
|
print "The pipeline deployed artifacts to nexus.\n"
|
|
print automaticVersioning ?"The pipeline generates a new version identifier for each deployment." :"The pipeline does not generate a new version identifier for each deployment."
|
|
}
|
|
else {
|
|
print "There is no deployment to nexus configured in the pipeline."
|
|
}
|
|
%>
|
|
|
|
7. Test Automation
|
|
|
|
Relevant for Requirements:
|
|
- CP-CD-05: Test Automation
|
|
- CQP-OPE-7: Test Automation
|
|
|
|
The pipeline executed the following kinds of tests:
|
|
<% print testsExecutions.collect({each -> " - ${each}"}).join("\n") %>
|
|
|
|
Test statistics:
|
|
- Number of failed tests: $failedTests
|
|
- Number of skipped tests: $skippedTests
|
|
- Number of passed tests: $passedTests
|
|
|
|
<%
|
|
if(minimumCodeCoverage) {
|
|
print "The pipeline checked that the line code coverage for backend unit/integration tests is above ${minimumCodeCoverage}%.\n"
|
|
print "The actual line code coverage is ${lineCoverage}%\n"
|
|
print "The actual branch code coverage is ${branchCoverage}%\n"
|
|
}
|
|
else {
|
|
print "There was no assertion of the code coverage."
|
|
}
|
|
%>
|
|
<% print jacocoExcludes?"The following excludes regarding code coverage were defined:\n" :""
|
|
print jacocoExcludes.collect({each -> " - ${each}"}).join("\n")
|
|
%>
|
|
|
|
8. Only public APIs
|
|
|
|
Relevant for Requirements:
|
|
- CQC-EXT-3: Openness to Standards
|
|
|
|
<% print onlyPublicAPIsChecked ?"The pipeline checked that only public SAP S/4HANA APIs were called." :"There were no checks executed whether only public APIs are used." %>
|
|
<%
|
|
print apiCheckExceptions.customODataServices ?"The following exceptions from that were declared:\n" :""
|
|
print apiCheckExceptions.customODataServices.collect({each -> " - ${each}"}).join("\n")
|
|
print apiCheckExceptions.nonErpDestinations ?"The following Destinations not representing an ERP were declared:\n" :""
|
|
print apiCheckExceptions.nonErpDestinations.collect({each -> " - ${each}"}).join("\n")
|
|
%>
|
|
|
|
9. Zero Downtime Deployment
|
|
|
|
Relevant for Requirements:
|
|
- CP-PERF-03: Zero Downtime
|
|
- CQC-PRF-4: Zero Downtime
|
|
|
|
<% print deploymentExecuted? "The pipeline used a zero-downtime approach to deploy productively." : "The pipeline did not execute a deployment." %>
|