{"$schema":"http://json-schema.org/draft-07/schema#","title":"SAP Cloud SDK pipeline_config JSON schema","type":"object","properties":{"customDefaults":{"type":"array","items":{"type":"string"}},"general":{"type":["object","null"],"properties":{"productiveBranch":{"type":"string","default":"master"},"projectName":{"type":"string"},"globalExtensionsRepository":{"type":"string"},"globalExtensionsVersion":{"type":"string"},"globalExtensionsRepositoryCredentialsId":{"type":"string"},"collectTelemetryData":{"type":"boolean","default":true},"unsafeMode":{"type":"boolean","default":false},"features":{"type":"object","properties":{"parallelTestExecution":{"type":"string","enum":["on","off"],"default":"off"}},"additionalProperties":true},"jenkinsKubernetes":{"type":"object","properties":{"jnlpAgent":{"type":"string","default":"jenkins/jnlp-slave:latest"}},"additionalProperties":true}},"additionalProperties":false},"stages":{"type":["object","null"],"properties":{"backendIntegrationTests":{"type":"object","properties":{"retry":{"type":"integer","default":1},"forkCount":{"type":"string","default":"1C"},"credentials":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"credentialId":{"type":"string"}},"required":["alias","credentialId"],"additionalProperties":false}},"sidecarImage":{"type":"string"},"sidecarName":{"type":"string"},"sidecarReadyCommand":{"type":"string"},"sidecarEnvVars":{"type":"object"}},"additionalProperties":false},"frontEndIntegrationTests":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage"}},"additionalProperties":false},"frontEndUnitTests":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage"}},"additionalProperties":false},"endToEndTests":{"type":"object","properties":{"enableZeroDowntimeDeployment":{"type":"boolean"},"onlyRunInProductiveBranch":{"type":"boolean"},"appUrls":{"$ref":"#/definitions/appUrls"}}},"npmAudit":{"type":"object","properties":{"auditedAdvisories":{"type":"array","items":{"type":["integer","string"]}}},"additionalProperties":false},"performanceTests":{"type":"object","properties":{"neoTargets":{"$ref":"#/definitions/neoTargets"},"cfTargets":{"$ref":"#/definitions/cfTargets"}}},"s4SdkQualityChecks":{"type":"object","properties":{"jacocoExcludes":{"type":"array","items":{"type":"string"}},"customOdataServices":{"type":"array","items":{"type":"string"}},"nonErpDestinations":{"type":"array","items":{"type":"string"}},"nonErpUrls":{"type":"array","items":{"type":"string"}},"codeCoverageFrontend":{"type":"object"},"threshold":{"type":"object","properties":{"successCoverage":{"type":"integer","minimum":70},"unstableCoverage":{"type":"integer","minimum":65}},"additionalProperties":false,"required":["successCoverage","unstableCoverage"]},"disabledChecks":{"type":"array","items":{"type":"string","enum":["checkDeploymentDescriptors","checkResilience","checkServices","checkFrontendCodeCoverage","checkBackendCodeCoverage"]},"default":[]}},"additionalProperties":false},"checkmarxScan":{"type":"object","properties":{"groupId":{"type":"string"},"checkMarxProjectName":{"type":"string"},"filterPattern":{"type":"string","default":"!**/*.log, !**/*.lock, !**/*.json, !**/*.html, !**/Cx*, !**/test/**, !s4hana_pipeline/**, !**/unit-tests/**, !**/integration-tests/**, !**/frontend-unit-tests/**, !**/e2e-tests/**, !**/performance-tests/**, **/*.js, **/*.java, **/*.ts"},"fullScansScheduled":{"type":"boolean","default":false},"incremental":{"type":"boolean","default":true},"vulnerabilityThresholdMedium":{"type":"integer","default":0},"vulnerabilityThresholdLow":{"type":"integer","default":99999},"preset":{"type":["integer","string"],"default":36},"checkmarxCredentialsId":{"type":"string"},"checkmarxServerUrl":{"type":"string"},"generatePdfReport":{"type":"boolean"}},"required":["groupId"],"additionalProperties":false},"productionDeployment":{"type":"object","properties":{"appUrls":{"$ref":"#/definitions/appUrls"},"neoTargets":{"$ref":"#/definitions/neoTargets"},"cfTargets":{"$ref":"#/definitions/cfTargets"}}},"artifactDeployment":{"type":"object","properties":{"nexus":{"type":"object","properties":{"version":{"type":"string","enum":["nexus2","nexus3"],"default":"nexus3"},"url":{"type":"string"},"mavenRepository":{"type":"string"},"npmRepository":{"type":"string"},"credentialsId":{"$ref":"#/definitions/credentialsId"}},"required":["url","repository"]}},"additionalProperties":true},"whitesourceScan":{"type":"object","properties":{"product":{"type":"string"},"staticVersion":{"type":"string"},"credentialsId":{"$ref":"#/definitions/credentialsId"},"whitesourceUserTokenCredentialsId":{"type":"string"}},"required":["product","credentialsId"],"additionalProperties":true},"sourceClearScan":{"type":"object","properties":{"credentialsId":{"$ref":"#/definitions/credentialsId"},"config":{"type":"object","properties":{"vuln_methods_extra_ignored_directories":{"type":"string"},"scope":{"type":"string"}}}},"required":["credentialsId"],"additionalProperties":false},"compliance":{"type":"object","properties":{"runInAllBranches":{"type":"boolean","default":false}},"additionalProperties":false}}},"steps":{"type":["object","null"],"properties":{"mavenExecute":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"maven:3.6.3-jdk-8-slim"},"projectSettingsFile":{"type":"string"}}},"artifactPrepareVersion":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage"},"commitUserName":{"type":"string"},"includeCommitId":{"type":"boolean","default":"true"},"tagPrefix":{"type":"string"},"unixTimestamp":{"type":"boolean","default":"false"},"versioningType":{"type":"string"}}},"executeNpm":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/node-browsers:v2"},"defaultNpmRegistry":{"type":"string","default":"npmjs.com"}}},"executeSourceClearScan":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/mta-archive-builder:v1"}}},"cloudFoundryDeploy":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/cf-cli:v2"},"smokeTestStatusCode":{"type":"integer","default":200},"keepOldInstance":{"type":"boolean","default":true},"cloudFoundry":{"$ref":"#/definitions/cloudFoundry"}}},"neoDeploy":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/neo-cli:v2"},"neo":{"type":"object","properties":{"host":{"$ref":"#/definitions/host"},"account":{"$ref":"#/definitions/account"},"application":{"$ref":"#/definitions/application"},"credentialsId":{"$ref":"#/definitions/credentialsId"},"environment":{"$ref":"#/definitions/environment"},"vmArguments":{"$ref":"#/definitions/vmArguments"},"size":{"$ref":"#/definitions/size"},"runtime":{"$ref":"#/definitions/runtime"},"runtimeVersion":{"$ref":"#/definitions/runtimeVersion"}},"required":["host","account","application","runtime","runtimeVersion"],"additionalProperties":false}}},"checkGatling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}}},"checkJMeter":{"type":"object","properties":{"options":{"type":"string"},"testPlan":{"type":"string","default":"./performance-tests/*"},"dockerImage":{"$ref":"#/definitions/dockerImage","default":"famiko/jmeter-base"},"failThreshold":{"type":"integer","default":100},"unstableThreshold":{"type":"integer","default":90}}},"fortifyExecuteScan":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage"},"verbose":{"type":"boolean","default":false},"fortifyCredentialsId":{"type":"string"},"githubTokenCredentialsId":{"type":"string"},"serverUrl":{"type":"string"},"projectName":{"type":"string"},"defaultVersioningModel":{"type":"string","default":"major"},"buildTool":{"type":"string","default":"maven"},"autoCreate":{"type":"boolean","default":false},"uploadResults":{"type":"boolean","default":true},"memory":{"type":"string","default":"-Xmx4G -Xms512M"},"src":{"type":"array","items":{"type":"string"}},"exclude":{"type":"array","items":{"type":"string"}}},"required":["fortifyCredentialsId"]},"whitesourceExecuteScan":{"type":"object","properties":{"productName":{"type":"string"},"productVersion":{"type":"string"},"orgAdminUserTokenCredentialsId":{"$ref":"#/definitions/credentialsId"},"userTokenCredentialsId":{"type":"string"}},"required":["productName","orgAdminUserTokenCredentialsId"],"additionalProperties":true},"mtaBuild":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/mta-archive-builder"},"buildTarget":{"type":"string","default":"NEO"},"mtaBuildTool":{"type":"string","default":"cloudMbt"},"applicationName":{"type":"string"},"defaultNpmRegistry":{"type":"string"},"dockerOptions":{"type":["array","string"]},"extension":{"type":"string"},"globalSettingsFile":{"type":"string"},"projectSettingsFile":{"type":"string"},"mtaJarLocation":{"type":"string","default":"/opt/sap/mta/lib/mta.jar"}}},"debugReportArchive":{"type":"object","properties":{"shareConfidentialInformation":{"type":"boolean","default":false}}},"sonarExecuteScan":{"type":"object","properties":{"projectKey":{"type":"string"},"instance":{"type":"string"},"options":{"type":["array","string"]},"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/node-browsers:v3"}},"required":["projectKey","instance"],"additionalProperties":true},"tmsUpload":{"type":"object","properties":{"nodeName":{"type":"string"},"credentialsId":{"type":"string"},"customDescription":{"type":"string","default":"<Corresponding Git Commit-ID>"}}}}}},"postActions":{"type":"object","properties":{"sendNotification":{"type":["object","null"],"properties":{"enabled":{"type":"boolean","default":false},"skipFeatureBranches":{"type":"boolean","default":false},"recipients":{"type":"array","items":{"type":"string"}}}}}},"definitions":{"dockerImage":{"type":"string"},"org":{"type":"string"},"space":{"type":"string"},"appName":{"type":"string"},"manifest":{"type":"string"},"credentialsId":{"type":"string"},"apiEndpoint":{"type":"string","default":"https://api.cf.eu10.hana.ondemand.com"},"mtaExtensionDescriptor":{"type":"string"},"mtaExtensionCredentials":{"type":"string"},"host":{"type":"string"},"account":{"type":"string"},"application":{"type":"string"},"environment":{"type":"object"},"vmArguments":{"type":"string"},"size":{"type":"string","default":"lite"},"runtime":{"type":"string"},"runtimeVersion":{"type":"string"},"neoTargets":{"type":"array","items":{"type":"object","properties":{"host":{"$ref":"#/definitions/host"},"account":{"$ref":"#/definitions/account"},"application":{"$ref":"#/definitions/application"},"credentialsId":{"$ref":"#/definitions/credentialsId"},"environment":{"$ref":"#/definitions/environment"},"vmArguments":{"$ref":"#/definitions/vmArguments"},"size":{"$ref":"#/definitions/size"},"runtime":{"$ref":"#/definitions/runtime"},"runtimeVersion":{"$ref":"#/definitions/runtimeVersion"}},"required":["host","account","application","runtime","runtimeVersion"],"additionalProperties":false}},"appUrls":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"credentialId":{"type":"string"},"parameters":{"type":"array"}},"required":["url"],"additionalProperties":false}},"cfTargets":{"type":"array","items":{"type":"object","properties":{"org":{"$ref":"#/definitions/org"},"space":{"$ref":"#/definitions/space"},"appName":{"$ref":"#/definitions/appName"},"manifest":{"$ref":"#/definitions/manifest"},"credentialsId":{"$ref":"#/definitions/credentialsId"},"apiEndpoint":{"$ref":"#/definitions/apiEndpoint"},"mtaExtensionDescriptor":{"$ref":"#/definitions/mtaExtensionDescriptor"},"mtaExtensionCredentials":{"$ref":"#/definitions/mtaExtensionCredentials"}},"additionalProperties":false}},"cloudFoundry":{"type":"object","properties":{"org":{"$ref":"#/definitions/org"},"space":{"$ref":"#/definitions/space"},"appName":{"$ref":"#/definitions/appName"},"manifest":{"$ref":"#/definitions/manifest"},"credentialsId":{"$ref":"#/definitions/credentialsId"},"apiEndpoint":{"$ref":"#/definitions/apiEndpoint"},"mtaExtensionDescriptor":{"$ref":"#/definitions/mtaExtensionDescriptor"},"mtaExtensionCredentials":{"$ref":"#/definitions/mtaExtensionCredentials"}},"additionalProperties":false}}}