1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-02-07 13:42:23 +02:00
Florian Geckeler 2673a58a38
Add ReportAggregator to collect information about executed stages and create reports (#1291)
* 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
2020-03-21 18:42:27 +01:00

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." %>