Type object
File match pipeline_config.yml
Schema URL https://catalog.lintel.tools/schemas/schemastore/cloud-sdk-pipeline-configuration/latest.json
Source https://www.schemastore.org/cloud-sdk-pipeline-config-schema.json

Validate with Lintel

npx @lintel/lintel check
Type: object

The configuration file of the SAP Cloud SDK Continuous Delivery Toolkit. For more information please visit https://github.com/SAP/cloud-s4-sdk-pipeline

Properties

customDefaults string[]

List of paths or URLs to YAML files with custom defaults to consider. These defaults override built-in defaults, and can be shared across multiple projects. Project configuration takes precedence.

general object | null

The general configuration of the pipeline

9 nested properties
productiveBranch string

The name of your default branch. This branch will be used for deploying your application. Other branches will skip deployment.

Default: "master"
projectName string

Name of the project. Will be used as identifier e.g. when creating a hdi container or executing code scans.

globalExtensionsRepository string

Git url of the repository containing the extensions.

globalExtensionsVersion string

Version of the extensions which should be used, e.g. the tag name

globalExtensionsRepositoryCredentialsId string

Credentials required to clone the repository

collectTelemetryData boolean

No personal data is collected. For details, consult the analytics documentation.

Default: true
unsafeMode boolean

Enable unsafe mode to skip checking environment variables for insecure elements. Only use this for demo purposes, never for productive usage.

Default: false
features object

Allows enabling or disable certain optional features.

1 nested properties
parallelTestExecution string

Run E2E Tests in parallel. This feature is disabled by default because it is not supported in Blue Ocean. If this feature is enabled, we suggest not using the Blue Ocean interface and rely on the classic UI instead.

Default: "off"
Values: "on" "off"
jenkinsKubernetes object

If the Jenkins is running on a kubernetes cluster as a pod, we can use the dynamic scaling feature in the pipeline. In order to enable this, an environment variable ON_K8S has to be set to true on the jenkins.

1 nested properties
jnlpAgent string

Docker image for jnlp agent to be used.

Default: "jenkins/jnlp-slave:latest"
stages object | null

Configuration, which will modify the behaviour of stages in the SAP Cloud SDK Pipeline.

13 nested properties
backendIntegrationTests object
7 nested properties
retry integer

The number of times that integration tests will retry before aborting the build. Note: This will consume more time for the jenkins build.

Default: 1
forkCount string

The number of JVM processes that are spawned to run the tests in parallel in case of using a maven based project structure. For more details visit the surefire documentation.

Default: "1C"
credentials object[]

The list of system credentials to be injected during integration tests. The following example will provide the username and password for the systems with the aliases ERP and SFSF. For this, it will use the Jenkins credentials entries erp-credentials and successfactors-credentials. You have to ensure that corresponding credential entries exist in your Jenkins configuration.

sidecarImage string

Name of the Docker image that should be used.

sidecarName string

On Docker: Name of the container in the local network. On Kubernetes: Name of the container.

sidecarReadyCommand string

Command executed inside the container, which returns exit code 0 when the container is ready to be used.

sidecarEnvVars object

Environment variables to set in the container.

frontEndIntegrationTests object
1 nested properties
dockerImage string

The image used in the step or stage.

frontEndUnitTests object
1 nested properties
dockerImage string

The image used in the step or stage.

endToEndTests object
3 nested properties
enableZeroDowntimeDeployment boolean

It is possible to activate zero downtime deployment in end-to-end tests with the option enableZeroDowntimeDeployment. This will lead to a blue-green-deployment on SCP Cloud Foundry respectively to a rolling update on SCP Neo. By default, this feature is turned off.

onlyRunInProductiveBranch boolean

Running end-to-end tests can be restricted to the productiveBranch with the option onlyRunInProductiveBranch. This might be useful when the end-to-end tests slow down development, and build failure on the productiveBranch is acceptable. By default, this feature is turned off.

appUrls object[]
npmAudit object

This stage uses the npm audit command to check for known vulnerabilities in dependencies.

1 nested properties
auditedAdvisories integer | string[]

In case you audited an advisory, and it turns out to be a false positive, you can mark it as audited by adding its id to the auditedAdvisories in the stage configuration. A false positive in this case is when you are confident your application is not affected in any way by the underlying bug or vulnerability.

performanceTests object
2 nested properties
neoTargets object[]
cfTargets object[]
s4SdkQualityChecks object
7 nested properties
jacocoExcludes string[]

A list of exclusions expressed as an Ant-style pattern relative to the application folder. An example can be found below.

customOdataServices string[]

We recommend only using OData services listed in the in SAP API Business Hub. Despite that for using custom business objects you can add those APIs here.

nonErpDestinations string[]

List of destination names that do not refer to ERP systems. Use this parameter to exclude specific destinations from being checked in context of ERP API whitelists.

nonErpUrls string[]

List of URLs that are not defined as destinations. Use this parameter to exclude specific URLs from being checked in context of ERP API whitelists.

codeCoverageFrontend object

A map containing the thresholds unstable and failing. If the code coverage is lower than what is configured in unstable, the pipeline result is unstable. If it is lower than what is configured in failing, the pipeline will fail.

threshold object

This setting allows the code coverage to be stricter compared to the default values. By default, the pipeline will fail if the coverage is below 65% line coverage (unstableCoverage), and will be unstable if it is less than 70% (successCoverage). If lower numbers are configured, or this configuration is left out, the default values are applied.

2 nested properties
successCoverage integer required
min=70
unstableCoverage integer required
min=65
disabledChecks string[]

A list of checks which should not be executed. Possible values are: checkDeploymentDescriptors (Check for insecure options, such as ALLOW_MOCKED_AUTH_HEADER in deployment descriptors), checkResilience(Check that application is resilient to faults in the network), checkServices (Check that only official APIs are used), checkFrontendCodeCoverage (Ensures high frontend code coverage), checkBackendCodeCoverage (Ensures high backend code coverage)

Default:
[]
checkmarxScan object

Checkmarx is one of the security analysis tools which is supported by the pipeline.

11 nested properties
groupId string required

Checkmarx Group ID

checkMarxProjectName string

Name of the project on Checkmarx server.

filterPattern string

Files which needs to be skipped during scanning.

Default: "!**/*.log, !**/*.lock, !**/*.json, !**/*.html, !**/Cx*, !**/test/**, !s4hana_pipeline/**, !**/unit-tests/**, !**/integration-tests/**, !**/frontend-unit-tests/**, !**/e2e-tests/**, !**/performance-tests/**, **/*.js, **/*.java, **/*.ts"
fullScansScheduled boolean

Toggle to enable or disable full scan on a certain schedule.

Default: false
incremental boolean

Perform incremental scan with every run. If turned false, complete project is scanned on every submission.

Default: true
vulnerabilityThresholdMedium integer

The threshold for medium level threats. If the findings are greater than this value, pipeline execution will result in failure.

Default: 0
vulnerabilityThresholdLow integer

The threshold for low level threats. If the findings are greater than this value, pipeline execution will result in failure.

Default: 99999
preset integer | string

Name or numerical ID of Checkmarx preset to be used when scanning this project. When a name (string) is specified, the pipeline will try to discover the corresponding numerical ID via the Checkmarx API. Please also make sure to specify checkmarxCredentialsId and checkmarxServerUrl in such a case. For determining available presets in your Checkmarx webclient, go to Checkmarx -> Management -> Scan Settings -> Preset Manager. Alternatively, you can determine the numerical ID of your targeted preset by following those guides: Token-based Authentication and Get All Preset Details.

Default: 36
checkmarxCredentialsId string

The Credential ID to connect to Checkmarx server. The credentials must be type username with password. This property becomes mandatory if the credentials are not configured in the Jenkins plugin itself.

checkmarxServerUrl string

An URL to Checkmarx server. This property becomes mandatory if the URL to the Checkmarx server is not configured in the Jenkins plugin itself or if the checkmarxCredentialsId is configured.

generatePdfReport boolean

Possibility to generate PDF reports of the scan.

productionDeployment object
3 nested properties
appUrls object[]
neoTargets object[]
cfTargets object[]
artifactDeployment object

The deployment of artifacts to nexus can be configured with a map containing the following properties.

1 nested properties
nexus object
5 nested properties
url string required

URL of the nexus. The scheme part of the URL will not be considered, because only http is supported.

version string

Version of nexus. Can be nexus2 or nexus3.

Default: "nexus3"
Values: "nexus2" "nexus3"
mavenRepository string

Name of the nexus repository for Maven and MTA artifacts. Ignored if the project does not contain pom.xml or mta.yml in the project root.

npmRepository string

Name of the nexus repository for NPM artifacts. Ignored if the project does not contain a package.json in the project root directory.

credentialsId string

ID to the credentials that will be used.

whitesourceScan object

Configure credentials for WhiteSource scans. The minimum required Maven WhiteSource plugin version is 18.6.2, ensure this in the plugins section of the project pom.xml file.

Pipeline will execute npx whitesource run for npm projects. Please ensure that all package.json files have a name and version configured so that it is possible to distinguish between the different packages.

4 nested properties
product string required

Name of your product in WhiteSource.

credentialsId string required

ID to the credentials that will be used.

staticVersion string

Overwrites the respective version in the whitesource UI per scan with the staticVersion. Per default for every new version of a pom/package.json a new project will be created in the whitesource UI. To deactivate the creation of new projects and always have a fixed version for each project in the whitesource UI, configure the staticVersion.

whitesourceUserTokenCredentialsId string

Unique identifier of the Secret Text on Jenkins server that stores WhiteSource userKey of a user. This is required only if the administrator of the WhiteSource service has enabled additional access level control. More details can be found here.

sourceClearScan object

Configure SourceClear scans.Note: Please note that the SourceClear stage of this pipeline is not actively maintained anymore. In case of issues, feel free to contribute to this project by opening a pull request.

2 nested properties
credentialsId string required

ID to the credentials that will be used.

config object

Additional configuration for the SourceClear agent. The key-value pairs will be added to srcclr.yml.

2 nested properties
vuln_methods_extra_ignored_directories string
scope string
compliance object

Configure the stage Compliance, which currently executes a SonarQube (https://www.sonarqube.org/) scan.

1 nested properties
runInAllBranches boolean

Define whether the scan should also happen in non productive branches, i.e. if your SonarQube instance supports that.

Default: false
steps object | null
14 nested properties
mavenExecute object

The mavenExecute step is used for all invocations of the mvn build tool. It is either used directly for executing specific maven phases such as test, or indirectly for steps that execute maven plugins such as checkPmd.

2 nested properties
dockerImage string

The image used in the step or stage.

projectSettingsFile string

The project settings.xml to be used for maven builds. You can specify a relative path to your project root or a URL starting with http or https.

artifactPrepareVersion object

If automatic versioning is enabled, this step is used to set a common version for artifacts and optionally push a corresponding tag.

6 nested properties
dockerImage string

The image used in the step or stage.

commitUserName string

Defines the user name which appears in version control for the versioning update (in case versioningType: cloud).

includeCommitId boolean

Defines if the automatically generated version (versioningType: cloud) should include the commit id hash.

Default: "true"
tagPrefix string

Defines the prefix which is used for the git tag which is written during the versioning run (only versioningType: cloud).

unixTimestamp boolean

Defines if the Unix timestamp number should be used as build number instead of the standard date format.

Default: "false"
versioningType string

Defines the type of versioning (cloud: fully automatic, cloud_noTag: automatic but no tag created, library: manual)

executeNpm object

The executeNpm step is used for all invocations of the npm build tool. It is, for example, used for building the frontend and for executing end to end tests.

2 nested properties
dockerImage string

The image used in the step or stage.

defaultNpmRegistry string

The default npm registry url to be used as the remote mirror. Bypasses the local download cache if specified.

Default: "npmjs.com"
executeSourceClearScan object
1 nested properties
dockerImage string

The image used in the step or stage.

cloudFoundryDeploy object

A step configuration regarding Cloud Foundry deployment. This is required by stages like end-to-end tests, performance tests, and production deployment.

4 nested properties
dockerImage string

The image used in the step or stage.

smokeTestStatusCode integer

Expected return code for smoke test success.

Default: 200
keepOldInstance boolean

In case of a blue-green deployment the old instance will be stopped and will remain in the Cloud Foundry space by default. If this option is set to false, the old instance will be deleted.

Default: true
cloudFoundry object

A map specifying the Cloud Foundry specific parameters.

8 nested properties
org string

Cloud Foundry organization.

space string

Cloud Foundry space.

appName string

Name of the application.

manifest string

Manifest file that needs to be used.

credentialsId string

ID to the credentials that will be used.

apiEndpoint string

URL to the Cloud Foundry endpoint.

Default: "https://api.cf.eu10.hana.ondemand.com"
mtaExtensionDescriptor string

(Only for MTA-projects) Path to the mta extension description file. For more information on how to use those extension files please visit the SAP HANA Developer Guide.

mtaExtensionCredentials string

(Only for MTA-projects) Map of credentials that need to be replaced in the mtaExtensionDescriptor. This map needs to be created as value-to-be-replaced:id-of-a-credential-in-jenkins

neoDeploy object
2 nested properties
dockerImage string

The image used in the step or stage.

neo object

The map for neo.

9 nested properties
host string required

Host of the region you want to deploy to, see Regions.

account string required

Identifier of the subaccount.

application string required

Name of the application in your account.

runtime string required

Name of the runtime: neo-java-web, neо-javaee6-wp, neо-javaee7-wp. See the runtime for more information.

runtimeVersion string required

Version of the runtime. See runtime-version for more information.

credentialsId string

ID to the credentials that will be used.

environment object

Map of environment variables in the form of KEY: VALUE.

vmArguments string

String of VM arguments passed to the JVM.

size string

Size of the JVM, e.g. lite, pro, prem, prem-plus.

Default: "lite"
checkGatling object

Gatling is used as one of the performance tests tool.

1 nested properties
enabled boolean

You can enable Gatling tests by turning the flag to true.

Default: false
checkJMeter object

Apache JMeter is executed as part of performance tests of the application. The user is free to choose between JMeter and Gatling or both.

5 nested properties
options string

Options such as proxy.

testPlan string

The directory where the test plans reside. Should reside in a subdirectory under performance-tests directory if both JMeter and Gatling are enabled.

Default: "./performance-tests/*"
dockerImage string

The image used in the step or stage.

failThreshold integer

Marks build as FAILURE if the value exceeds the threshold.

Default: 100
unstableThreshold integer

Marks build as UNSTABLE if the value exceeds the threshold.

Default: 90
fortifyExecuteScan object
13 nested properties
fortifyCredentialsId string required

Jenkins 'Secret text' credentials ID containing token to authenticate to Fortify SSC.

dockerImage string

The image used in the step or stage.

verbose boolean

Sends the verbose output to the Jenkins log.

Default: false
githubTokenCredentialsId string

Jenkins 'Secret text' credentials ID containing token to authenticate to GitHub.

serverUrl string

Fortify SSC Url to be used for accessing the APIs

projectName string

The project used for reporting results in SSC

defaultVersioningModel string

The default project versioning model used in case 'projectVersion' parameter is empty for creating the version based on the build descriptor version to report results in SSC, can be one of 'major', 'major-minor', 'semantic', 'full'

Default: "major"
buildTool string

Scan type used for the step which can be 'maven', 'pip'

Default: "maven"
autoCreate boolean

Whether Fortify project and project version shall be implicitly auto created in case they cannot be found in the backend

Default: false
uploadResults boolean

Whether results shall be uploaded or not

Default: true
memory string

The amount of memory granted to the translate/scan executions

Default: "-Xmx4G -Xms512M"
src string[]

A list of source directories to scan. Wildcards can be used, e.g., 'src/main/java//*'. The default value for buildTool: 'maven' is ['/.xml', '**/.html', '/*.jsp', '/.js', '/src/main/resources//', '/src/main/java//'], for buildTool: 'pip' it is ['./**/'].

exclude string[]

A list of directories/files to be excluded from the scan. Wildcards can be used, e.g., '**/Test.java'.

whitesourceExecuteScan object

Configure credentials for WhiteSource scans. The minimum required Maven WhiteSource plugin version is 18.6.2, ensure this in the plugins section of the project pom.xml file.

Pipeline will execute npx whitesource run for npm projects. Please ensure that all package.json files have a name configured so that it is possible to distinguish between the different packages.

4 nested properties
productName string required

Name of your product in WhiteSource.

orgAdminUserTokenCredentialsId string required

ID to the credentials that will be used.

productVersion string

Overwrites the project version in the WhiteSource UI per scan with the given version. Per default, the version from the main build descriptor file is used and transformed according to the versioningModel parameter, i.e. "1" for the default model of "major".

userTokenCredentialsId string

Unique identifier of the Secret Text on Jenkins server that stores WhiteSource userKey of a user. This is required only if the administrator of the WhiteSource service has enabled additional access level control. More details can be found here.

mtaBuild object
10 nested properties
dockerImage string

The image used in the step or stage.

buildTarget string

The target platform to which the mtar can be deployed.

Default: "NEO"
mtaBuildTool string

Choose which tool is used to build your mta project. The default option is cloudMbt which is not backwards compatible with the classic tool. For more information on migrating from classic to cloudMbt, please refer to https://sap.github.io/cloud-mta-build-tool/migration/.

Default: "cloudMbt"
applicationName string

The name of the application which is being built. If the parameter has been provided and no mta.yaml exists, the mta.yaml will be automatically generated using this parameter and the information (name and version) from package.json before the actual build starts.

defaultNpmRegistry string

Url to the npm registry that should be used for installing npm dependencies.

dockerOptions array | string

Docker options to be set when starting the container (List or String).

extension string

The path to the extension descriptor file.

globalSettingsFile string

Path or url to the mvn settings file that should be used as global settings file.

projectSettingsFile string

Path or url to the mvn settings file that should be used as project settings file.

mtaJarLocation string

The location of the SAP Multitarget Application Archive Builder jar file, including file name and extension. If it is not provided, the SAP Multitarget Application Archive Builder is expected on PATH.

Default: "/opt/sap/mta/lib/mta.jar"
debugReportArchive object

The debugReportArchive configuration can be used to create confidential (instead of redacted) debug reports. The difference between the redacted and the confidential debug report is that potentially confidential information, such as the GitHub repository and branch, global extension repository and shared libraries, are included in the confidential debug report. It is the user's responsibility to make sure that the debug report does not contain any confidential information.

1 nested properties
shareConfidentialInformation boolean

If set to true, a confidential debug report is being generated with each build.

Default: false
sonarExecuteScan object

Configure SonarQube (https://www.sonarqube.org/) scans.

4 nested properties
projectKey string required

The project key is used to refer your project.

instance string required

This property refers to a SonarQube instance, which needs to be defined in the Jenkins.

options array | string

A list of additional options (in the form of '-Dxy=z') to be passed to the sonar scanner tool.

dockerImage string

The image used in the step or stage.

tmsUpload object

This step allows you to upload an MTA file (multi-target application archive) and multiple MTA extension descriptors into a TMS (SAP Cloud Platform Transport Management Service) landscape for further TMS-controlled distribution through a TMS-configured landscape.

3 nested properties
nodeName string

Defines the name of the node to which the *.mtar file should be uploaded.

credentialsId string

Credentials to be used for the file and node uploads to the Transport Management Service.

customDescription string

Can be used as the description of a transport request. Will overwrite the default.

Default: "<Corresponding Git Commit-ID>"

Definitions

dockerImage string

The image used in the step or stage.

org string

Cloud Foundry organization.

space string

Cloud Foundry space.

appName string

Name of the application.

manifest string

Manifest file that needs to be used.

credentialsId string

ID to the credentials that will be used.

apiEndpoint string

URL to the Cloud Foundry endpoint.

mtaExtensionDescriptor string

(Only for MTA-projects) Path to the mta extension description file. For more information on how to use those extension files please visit the SAP HANA Developer Guide.

mtaExtensionCredentials string

(Only for MTA-projects) Map of credentials that need to be replaced in the mtaExtensionDescriptor. This map needs to be created as value-to-be-replaced:id-of-a-credential-in-jenkins

host string

Host of the region you want to deploy to, see Regions.

account string

Identifier of the subaccount.

application string

Name of the application in your account.

environment object

Map of environment variables in the form of KEY: VALUE.

vmArguments string

String of VM arguments passed to the JVM.

size string

Size of the JVM, e.g. lite, pro, prem, prem-plus.

runtime string

Name of the runtime: neo-java-web, neо-javaee6-wp, neо-javaee7-wp. See the runtime for more information.

runtimeVersion string

Version of the runtime. See runtime-version for more information.

neoTargets object[]
appUrls object[]
cfTargets object[]
cloudFoundry object

A map specifying the Cloud Foundry specific parameters.

org string

Cloud Foundry organization.

space string

Cloud Foundry space.

appName string

Name of the application.

manifest string

Manifest file that needs to be used.

credentialsId string

ID to the credentials that will be used.

apiEndpoint string

URL to the Cloud Foundry endpoint.

Default: "https://api.cf.eu10.hana.ondemand.com"
mtaExtensionDescriptor string

(Only for MTA-projects) Path to the mta extension description file. For more information on how to use those extension files please visit the SAP HANA Developer Guide.

mtaExtensionCredentials string

(Only for MTA-projects) Map of credentials that need to be replaced in the mtaExtensionDescriptor. This map needs to be created as value-to-be-replaced:id-of-a-credential-in-jenkins