[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/cloud-sdk-pipeline-config-schema.json","definitions":{"dockerImage":{"description":"The image used in the step or stage.","type":"string"},"org":{"description":"Cloud Foundry organization.","type":"string"},"space":{"description":"Cloud Foundry space.","type":"string"},"appName":{"description":"Name of the application.","type":"string"},"manifest":{"description":"Manifest file that needs to be used.","type":"string"},"credentialsId":{"description":"ID to the credentials that will be used.","type":"string"},"apiEndpoint":{"description":"URL to the Cloud Foundry endpoint.","type":"string","default":"https://api.cf.eu10.hana.ondemand.com"},"mtaExtensionDescriptor":{"description":"(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.","type":"string"},"mtaExtensionCredentials":{"description":"(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","type":"string"},"host":{"description":"Host of the region you want to deploy to, see Regions.","type":"string"},"account":{"description":"Identifier of the subaccount.","type":"string"},"application":{"description":"Name of the application in your account.","type":"string"},"environment":{"description":"Map of environment variables in the form of KEY: VALUE.","type":"object"},"vmArguments":{"description":"String of VM arguments passed to the JVM.","type":"string"},"size":{"description":"Size of the JVM, e.g. lite, pro, prem, prem-plus.","type":"string","default":"lite"},"runtime":{"description":"Name of the runtime: neo-java-web, ne\u043e-javaee6-wp, ne\u043e-javaee7-wp. See the runtime for more information.","type":"string"},"runtimeVersion":{"description":"Version of the runtime. See runtime-version for more information.","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":{"description":"The URLs under which the app is available after deployment. Each appUrl can be a string with the URL or a map containing a property url and a property credentialId.","type":"string"},"credentialId":{"description":"ID to the credentials that will be used to connect to the SAP Cloudplatform account.","type":"string"},"parameters":{"description":"Additional parameters can be passed for each end-to-end test deployment by specifying optional parameters for an application URL. These parameters are appended to the npm command during execution. These parameters must be a list of strings, where each string corresponds to one element of the parameters. For example, if the parameter `--tag scenario1` should be passed to the test, specify parameters: ['--tag', 'scenario1'].","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":{"description":"A map specifying the Cloud Foundry specific parameters.","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}},"description":"The configuration file of the SAP Cloud SDK Continuous Delivery Toolkit. For more information please visit https://github.com/SAP/cloud-s4-sdk-pipeline","postActions":{"type":"object","properties":{"sendNotification":{"description":"The sendNotification post-build action can be used to send notifications to project members in case of an unsuccessful build outcome or if the build goes back to normal. By default, an email is sent to the list of users who committed a change since the last non-broken build. Additionally, a set of recipients can be defined that should always receive notifications.","type":["object","null"],"properties":{"enabled":{"description":"If set to true, notifications will be sent.","type":"boolean","default":false},"skipFeatureBranches":{"description":"If set to true, notifications will only be sent for the productive branch as defined in the general configuration section.","type":"boolean","default":false},"recipients":{"description":"List of email addresses that should be notified in addition to the standard recipients.","type":"array","items":{"type":"string"}}}}}},"properties":{"customDefaults":{"description":"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.","type":"array","items":{"type":"string"}},"general":{"description":"The general configuration of the pipeline","type":["object","null"],"properties":{"productiveBranch":{"description":"The name of your default branch. This branch will be used for deploying your application. Other branches will skip deployment.","type":"string","default":"master"},"projectName":{"description":"Name of the project. Will be used as identifier e.g. when creating a hdi container or executing code scans.","type":"string"},"globalExtensionsRepository":{"description":"Git url of the repository containing the extensions.","type":"string"},"globalExtensionsVersion":{"description":"Version of the extensions which should be used, e.g. the tag name","type":"string"},"globalExtensionsRepositoryCredentialsId":{"description":"Credentials required to clone the repository","type":"string"},"collectTelemetryData":{"description":"No personal data is collected. For details, consult the analytics documentation.","type":"boolean","default":true},"unsafeMode":{"description":"Enable unsafe mode to skip checking environment variables for insecure elements. Only use this for demo purposes, never for productive usage.","type":"boolean","default":false},"features":{"description":"Allows enabling or disable certain optional features.","type":"object","properties":{"parallelTestExecution":{"description":"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.","type":"string","enum":["on","off"],"default":"off"}},"additionalProperties":true},"jenkinsKubernetes":{"description":"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.","type":"object","properties":{"jnlpAgent":{"description":"Docker image for jnlp agent to be used.","type":"string","default":"jenkins/jnlp-slave:latest"}},"additionalProperties":true}},"additionalProperties":false},"stages":{"description":"Configuration, which will modify the behaviour of stages in the SAP Cloud SDK Pipeline.","type":["object","null"],"properties":{"backendIntegrationTests":{"type":"object","properties":{"retry":{"description":"The number of times that integration tests will retry before aborting the build. Note: This will consume more time for the jenkins build.","type":"integer","default":1},"forkCount":{"description":"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.","type":"string","default":"1C"},"credentials":{"description":"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.","type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"credentialId":{"type":"string"}},"required":["alias","credentialId"],"additionalProperties":false}},"sidecarImage":{"description":"Name of the Docker image that should be used.","type":"string"},"sidecarName":{"description":"On Docker: Name of the container in the local network. On Kubernetes: Name of the container.","type":"string"},"sidecarReadyCommand":{"description":"Command executed inside the container, which returns exit code 0 when the container is ready to be used.","type":"string"},"sidecarEnvVars":{"description":"Environment variables to set in the container.","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":{"description":"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.","type":"boolean"},"onlyRunInProductiveBranch":{"description":"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.","type":"boolean"},"appUrls":{"$ref":"#/definitions/appUrls"}}},"npmAudit":{"description":"This stage uses the npm audit command to check for known vulnerabilities in dependencies.","type":"object","properties":{"auditedAdvisories":{"description":"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.","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":{"description":"A list of exclusions expressed as an Ant-style pattern relative to the application folder. An example can be found below.","type":"array","items":{"type":"string"}},"customOdataServices":{"description":"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.","type":"array","items":{"type":"string"}},"nonErpDestinations":{"description":"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.","type":"array","items":{"type":"string"}},"nonErpUrls":{"description":"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.","type":"array","items":{"type":"string"}},"codeCoverageFrontend":{"description":"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.","type":"object"},"threshold":{"type":"object","description":"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.","properties":{"successCoverage":{"type":"integer","minimum":70},"unstableCoverage":{"type":"integer","minimum":65}},"additionalProperties":false,"required":["successCoverage","unstableCoverage"]},"disabledChecks":{"description":"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)","type":"array","items":{"type":"string","enum":["checkDeploymentDescriptors","checkResilience","checkServices","checkFrontendCodeCoverage","checkBackendCodeCoverage"]},"default":[]}},"additionalProperties":false},"checkmarxScan":{"description":"Checkmarx is one of the security analysis tools which is supported by the pipeline.","type":"object","properties":{"groupId":{"description":"Checkmarx Group ID","type":"string"},"checkMarxProjectName":{"description":"Name of the project on Checkmarx server.","type":"string"},"filterPattern":{"description":"Files which needs to be skipped during scanning.","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":{"description":"Toggle to enable or disable full scan on a certain schedule.","type":"boolean","default":false},"incremental":{"description":"Perform incremental scan with every run. If turned false, complete project is scanned on every submission.","type":"boolean","default":true},"vulnerabilityThresholdMedium":{"description":"The threshold for medium level threats. If the findings are greater than this value, pipeline execution will result in failure.","type":"integer","default":0},"vulnerabilityThresholdLow":{"description":"The threshold for low level threats. If the findings are greater than this value, pipeline execution will result in failure.","type":"integer","default":99999},"preset":{"description":"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.","type":["integer","string"],"default":36},"checkmarxCredentialsId":{"description":"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.","type":"string"},"checkmarxServerUrl":{"description":"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.","type":"string"},"generatePdfReport":{"description":"Possibility to generate PDF reports of the scan.","type":"boolean"}},"required":["groupId"],"additionalProperties":false},"productionDeployment":{"type":"object","properties":{"appUrls":{"$ref":"#/definitions/appUrls"},"neoTargets":{"$ref":"#/definitions/neoTargets"},"cfTargets":{"$ref":"#/definitions/cfTargets"}}},"artifactDeployment":{"description":"The deployment of artifacts to nexus can be configured with a map containing the following properties.","type":"object","properties":{"nexus":{"type":"object","properties":{"version":{"description":"Version of nexus. Can be nexus2 or nexus3.","type":"string","enum":["nexus2","nexus3"],"default":"nexus3"},"url":{"description":"URL of the nexus. The scheme part of the URL will not be considered, because only http is supported.","type":"string"},"mavenRepository":{"description":"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.","type":"string"},"npmRepository":{"description":"Name of the nexus repository for NPM artifacts. Ignored if the project does not contain a package.json in the project root directory.","type":"string"},"credentialsId":{"$ref":"#/definitions/credentialsId"}},"required":["url","repository"]}},"additionalProperties":true},"whitesourceScan":{"description":"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.\n\nPipeline 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.","type":"object","properties":{"product":{"description":"Name of your product in WhiteSource.","type":"string"},"staticVersion":{"description":"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.","type":"string"},"credentialsId":{"$ref":"#/definitions/credentialsId"},"whitesourceUserTokenCredentialsId":{"description":"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.","type":"string"}},"required":["product","credentialsId"],"additionalProperties":true},"sourceClearScan":{"description":"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.","type":"object","properties":{"credentialsId":{"$ref":"#/definitions/credentialsId"},"config":{"description":"Additional configuration for the SourceClear agent. The key-value pairs will be added to srcclr.yml.","type":"object","properties":{"vuln_methods_extra_ignored_directories":{"type":"string"},"scope":{"type":"string"}}}},"required":["credentialsId"],"additionalProperties":false},"compliance":{"description":"Configure the stage Compliance, which currently executes a SonarQube (https://www.sonarqube.org/) scan.","type":"object","properties":{"runInAllBranches":{"description":"Define whether the scan should also happen in non productive branches, i.e. if your SonarQube instance supports that.","type":"boolean","default":false}},"additionalProperties":false}}},"steps":{"type":["object","null"],"properties":{"mavenExecute":{"description":"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.","type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"maven:3.6.3-jdk-8-slim"},"projectSettingsFile":{"description":"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.","type":"string"}}},"artifactPrepareVersion":{"description":"If automatic versioning is enabled, this step is used to set a common version for artifacts and optionally push a corresponding tag.","type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage"},"commitUserName":{"description":"Defines the user name which appears in version control for the versioning update (in case versioningType: cloud).","type":"string"},"includeCommitId":{"description":"Defines if the automatically generated version (versioningType: cloud) should include the commit id hash.","type":"boolean","default":"true"},"tagPrefix":{"description":"Defines the prefix which is used for the git tag which is written during the versioning run (only versioningType: cloud).","type":"string"},"unixTimestamp":{"description":"Defines if the Unix timestamp number should be used as build number instead of the standard date format.","type":"boolean","default":"false"},"versioningType":{"description":"Defines the type of versioning (cloud: fully automatic, cloud_noTag: automatic but no tag created, library: manual)","type":"string"}}},"executeNpm":{"description":"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.","type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/node-browsers:v2"},"defaultNpmRegistry":{"description":"The default npm registry url to be used as the remote mirror. Bypasses the local download cache if specified.","type":"string","default":"npmjs.com"}}},"executeSourceClearScan":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/mta-archive-builder:v1"}}},"cloudFoundryDeploy":{"description":"A step configuration regarding Cloud Foundry deployment. This is required by stages like end-to-end tests, performance tests, and production deployment.","type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/cf-cli:v2"},"smokeTestStatusCode":{"description":"Expected return code for smoke test success.","type":"integer","default":200},"keepOldInstance":{"description":"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.","type":"boolean","default":true},"cloudFoundry":{"$ref":"#/definitions/cloudFoundry"}}},"neoDeploy":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/neo-cli:v2"},"neo":{"description":"The map for 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":{"description":"Gatling is used as one of the performance tests tool.","type":"object","properties":{"enabled":{"description":"You can enable Gatling tests by turning the flag to true.","type":"boolean","default":false}}},"checkJMeter":{"description":"Apache JMeter is executed as part of performance tests of the application. The user is free to choose between JMeter and Gatling or both.","type":"object","properties":{"options":{"description":"Options such as proxy.","type":"string"},"testPlan":{"description":"The directory where the test plans reside. Should reside in a subdirectory under performance-tests directory if both JMeter and Gatling are enabled.","type":"string","default":"./performance-tests/*"},"dockerImage":{"$ref":"#/definitions/dockerImage","default":"famiko/jmeter-base"},"failThreshold":{"description":"Marks build as FAILURE if the value exceeds the threshold.","type":"integer","default":100},"unstableThreshold":{"description":"Marks build as UNSTABLE if the value exceeds the threshold.","type":"integer","default":90}}},"fortifyExecuteScan":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage"},"verbose":{"description":"Sends the verbose output to the Jenkins log.","type":"boolean","default":false},"fortifyCredentialsId":{"description":"Jenkins 'Secret text' credentials ID containing token to authenticate to Fortify SSC.","type":"string"},"githubTokenCredentialsId":{"description":"Jenkins 'Secret text' credentials ID containing token to authenticate to GitHub.","type":"string"},"serverUrl":{"description":"Fortify SSC Url to be used for accessing the APIs","type":"string"},"projectName":{"description":"The project used for reporting results in SSC","type":"string"},"defaultVersioningModel":{"description":"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'","type":"string","default":"major"},"buildTool":{"description":"Scan type used for the step which can be 'maven', 'pip'","type":"string","default":"maven"},"autoCreate":{"description":"Whether Fortify project and project version shall be implicitly auto created in case they cannot be found in the backend","type":"boolean","default":false},"uploadResults":{"description":"Whether results shall be uploaded or not","type":"boolean","default":true},"memory":{"description":"The amount of memory granted to the translate/scan executions","type":"string","default":"-Xmx4G -Xms512M"},"src":{"description":"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 ['./**/*'].","type":"array","items":{"type":"string"}},"exclude":{"description":"A list of directories/files to be excluded from the scan. Wildcards can be used, e.g., '**/Test.java'.","type":"array","items":{"type":"string"}}},"required":["fortifyCredentialsId"]},"whitesourceExecuteScan":{"description":"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.\n\nPipeline 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.","type":"object","properties":{"productName":{"description":"Name of your product in WhiteSource.","type":"string"},"productVersion":{"description":"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\".","type":"string"},"orgAdminUserTokenCredentialsId":{"$ref":"#/definitions/credentialsId"},"userTokenCredentialsId":{"description":"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.","type":"string"}},"required":["productName","orgAdminUserTokenCredentialsId"],"additionalProperties":true},"mtaBuild":{"type":"object","properties":{"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/mta-archive-builder"},"buildTarget":{"type":"string","description":"The target platform to which the mtar can be deployed.","default":"NEO"},"mtaBuildTool":{"type":"string","description":"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":{"description":"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.","type":"string"},"defaultNpmRegistry":{"type":"string","description":"Url to the npm registry that should be used for installing npm dependencies."},"dockerOptions":{"type":["array","string"],"description":"Docker options to be set when starting the container (List or String)."},"extension":{"type":"string","description":"The path to the extension descriptor file."},"globalSettingsFile":{"type":"string","description":"Path or url to the mvn settings file that should be used as global settings file."},"projectSettingsFile":{"type":"string","description":"Path or url to the mvn settings file that should be used as project settings file."},"mtaJarLocation":{"type":"string","description":"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":{"description":"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.","type":"object","properties":{"shareConfidentialInformation":{"description":"If set to true, a confidential debug report is being generated with each build.","type":"boolean","default":false}}},"sonarExecuteScan":{"description":"Configure SonarQube (https://www.sonarqube.org/) scans.","type":"object","properties":{"projectKey":{"description":"The project key is used to refer your project.","type":"string"},"instance":{"description":"This property refers to a SonarQube instance, which needs to be defined in the Jenkins.","type":"string"},"options":{"type":["array","string"],"description":"A list of additional options (in the form of '-Dxy=z') to be passed to the sonar scanner tool."},"dockerImage":{"$ref":"#/definitions/dockerImage","default":"ppiper/node-browsers:v3"}},"required":["projectKey","instance"],"additionalProperties":true},"tmsUpload":{"description":"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.","type":"object","properties":{"nodeName":{"description":"Defines the name of the node to which the *.mtar file should be uploaded.","type":"string"},"credentialsId":{"description":"Credentials to be used for the file and node uploads to the Transport Management Service.","type":"string"},"customDescription":{"description":"Can be used as the description of a transport request. Will overwrite the default.","type":"string","default":"<Corresponding Git Commit-ID>"}}}}}},"title":"SAP Cloud SDK pipeline_config JSON schema","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "SAP Cloud SDK pipeline_config JSON schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

The image used in the step or stage.

Cloud Foundry organization.

Cloud Foundry space.

Name of the application.

Manifest file that needs to be used.

ID to the credentials that will be used.

URL to the Cloud Foundry endpoint.

(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.

(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 of the region you want to deploy to, see Regions.

Identifier of the subaccount.

Name of the application in your account.

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

String of VM arguments passed to the JVM.

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

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

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

host account application runtime runtimeVersion

The URLs under which the app is available after deployment. Each appUrl can be a string with the URL or a map containing a property url and a property credentialId.

ID to the credentials that will be used to connect to the SAP Cloudplatform account.

Additional parameters can be passed for each end-to-end test deployment by specifying optional parameters for an application URL. These parameters are appended to the npm command during execution. These parameters must be a list of strings, where each string corresponds to one element of the parameters. For example, if the parameter `--tag scenario1` should be passed to the test, specify parameters: ['--tag', 'scenario1'].

A map specifying the Cloud Foundry specific parameters.

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

The sendNotification post-build action can be used to send notifications to project members in case of an unsuccessful build outcome or if the build goes back to normal. By default, an email is sent to the list of users who committed a change since the last non-broken build. Additionally, a set of recipients can be defined that should always receive notifications.

If set to true, notifications will be sent.

If set to true, notifications will only be sent for the productive branch as defined in the general configuration section.

List of email addresses that should be notified in addition to the standard recipients.

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.

The general configuration of the pipeline

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

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

Git url of the repository containing the extensions.

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

Credentials required to clone the repository

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

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

Allows enabling or disable certain optional features.

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.

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.

Docker image for jnlp agent to be used.

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

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

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.

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.

Name of the Docker image that should be used.

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

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

Environment variables to set in the container.

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.

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.

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

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.

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

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.

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.

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.

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.

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.

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)

checkDeploymentDescriptors checkResilience checkServices checkFrontendCodeCoverage checkBackendCodeCoverage

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

Checkmarx Group ID

Name of the project on Checkmarx server.

Files which needs to be skipped during scanning.

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

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

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

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

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.

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.

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.

Possibility to generate PDF reports of the scan.

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

Version of nexus. Can be nexus2 or nexus3.

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

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.

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

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.

Name of your product in WhiteSource.

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.

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.

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.

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

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

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

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.

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.

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

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

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

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

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

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

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.

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

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

Expected return code for smoke test success.

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.

The map for neo.

Gatling is used as one of the performance tests tool.

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

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

Options such as proxy.

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

Marks build as FAILURE if the value exceeds the threshold.

Marks build as UNSTABLE if the value exceeds the threshold.

Sends the verbose output to the Jenkins log.

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

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

Fortify SSC Url to be used for accessing the APIs

The project used for reporting results in SSC

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'

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

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

Whether results shall be uploaded or not

The amount of memory granted to the translate/scan executions

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 ['./**/*'].

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

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.

Name of your product in WhiteSource.

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

The target platform to which the mtar can be deployed.

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/.

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.

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

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

The path to the extension descriptor file.

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

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

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.

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.

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

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

The project key is used to refer your project.

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

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

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.

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

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

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

SAP Cloud SDK pipeline_config JSON schema

Provide a JSON object that satisfies the schema "SAP Cloud SDK pipeline_config JSON schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

SAP Cloud SDK pipeline_config JSON schema


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/cloudbuild","$comment":"See the Cloud Build config schema at https://cloud.google.com/build/docs/build-config-file-schema for the definitions.","definitions":{"automapSubstitutions":{"description":"If set to true, automatically map all subsistutions and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.","markdownDescription":"If set to true, automatically map all subsistutions  and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.","type":"boolean","examples":[true,false]},"BuildStep":{"description":"A step in the build pipeline.","type":"object","additionalProperties":false,"properties":{"name":{"description":"Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the officially supported build steps. The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.","markdownDescription":"Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the [officially supported build steps](https://github.com/GoogleCloudPlatform/cloud-builders). The Docker daemon will also have cached many of the layers for some popular images, like `ubuntu`, `debian`, but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.","type":"string"},"allowFailure":{"description":"In a build step, if you set the value of the allowFailure field to true, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.","markdownDescription":"In a build step, if you set the value of the `allowFailure` field to `true`, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.","type":"boolean"},"allowExitCodes":{"description":"Specify that a build step failure can be ignored when that step returns a particular exit code.","type":"array","items":{"type":"integer"},"examples":[1,2]},"automapSubstitutions":{"$ref":"#/definitions/automapSubstitutions"},"waitFor":{"description":"The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in waitFor have completed successfully. If waitFor is empty, this build step will start when all previous build steps in the list have completed successfully. If waitFor is set to '-', the step runs immediately when the build starts.","markdownDescription":"The `id`(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `waitFor` have completed successfully. If `waitFor` is empty, this build step will start when all previous build steps in the list have completed successfully. If `waitFor` is set to `'-'`, the step runs immediately when the build starts.","type":"array","items":{"type":"string","examples":[["-"],["terraform-init","terraform-apply"]]}},"env":{"description":"A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".","markdownDescription":"A list of environment variable definitions to be used when running a step. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.","type":"array","items":{"type":"string"}},"entrypoint":{"description":"Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used.","markdownDescription":"Entrypoint to be used instead of the build step image's default `entrypoint`. If unset, the image's default `entrypoint` is used.","type":"string"},"script":{"description":"Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify args or entrypoint in the same step.","markdownDescription":"Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify `args` or `entrypoint` in the same step.","type":"string"},"volumes":{"description":"List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.","type":"array","items":{"$ref":"#/definitions/Volume"}},"args":{"description":"A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an entrypoint, the args are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments.","markdownDescription":"A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an `entrypoint`, the `args` are used as arguments to that `entrypoint`. If the image does not define an `entrypoint`, the first element in `args` is used as the `entrypoint`, and the remainder will be used as arguments.","type":"array","items":{"type":"string"}},"timeout":{"$ref":"#/definitions/Timeout","description":"Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out."},"id":{"description":"Unique identifier for this build step, used in waitFor to reference this build step as a dependency.","markdownDescription":"Unique identifier for this build step, used in `waitFor` to reference this build step as a dependency.","type":"string"},"secretEnv":{"description":"A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret.","type":"array","items":{"type":"string"}},"dir":{"description":"Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a RepoSource with dir and a step with a dir, which specifies an absolute path, the RepoSource dir is ignored for the step's execution.","markdownDescription":"Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.","type":"string"}}},"BuildOptions":{"description":"Optional arguments to enable specific features of builds.","type":"object","additionalProperties":false,"properties":{"automapSubstitutions":{"$ref":"#/definitions/automapSubstitutions"},"machineType":{"description":"Compute Engine machine type on which to run the build.","type":"string","enum":["E2_HIGHCPU_8","E2_HIGHCPU_32","E2_MEDIUM","N1_HIGHCPU_8","N1_HIGHCPU_32","UNSPECIFIED"],"enumDescriptions":["e2 HighCPU: 8 vCPUs, 8GB RAM","e2 HighCPU: 32 vCPUs, 32GB RAM","e2 Medium: 1 vCPU, 4GB RAM","n1 HighCPU: 8 vCPUs, 7.2GB RAM","n1 HighCPU: 32 vCPUs, 28.8GB RAM","e2 Standard: 2 vCPU, 8GB RAM"],"default":"UNSPECIFIED"},"volumes":{"description":"Global list of volumes to mount for ALL build steps. Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration.","type":"array","items":{"$ref":"#/definitions/Volume"}},"logStreamingOption":{"description":"Option to define build log streaming behavior to Google Cloud Storage.","type":"string","enum":["STREAM_DEFAULT","STREAM_ON","STREAM_OFF"],"enumDescriptions":["Service may automatically determine build log streaming behavior.","Build logs should be streamed to Google Cloud Storage.","Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed."]},"pool":{"description":"Set the value of this field to the resource name of the private pool to run the build.","type":"object","properties":{"name":{"description":"Required. The full resource name of the private pool of the form 'projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID'.","markdownDescription":"Required. The full resource name of the private pool of the form `projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID`.","type":"string"}},"additionalProperties":false,"required":["name"]},"env":{"description":"A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".","markdownDescription":"A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.","type":"array","items":{"type":"string"}},"logging":{"description":"Option to specify the logging mode, which determines where the logs are stored.","type":"string","enum":["LOGGING_UNSPECIFIED","LEGACY","GCS_ONLY","CLOUD_LOGGING_ONLY","NONE"],"enumDescriptions":["The service determines the logging mode. The default is LEGACY. Do not rely on the default logging behavior as it may change in the future.","Stackdriver logging and Cloud Storage logging are enabled.","Only Cloud Storage logging is enabled.","Only Cloud Logging is enabled. Note that logs for both the Cloud Console UI and Cloud SDK are based on Cloud Storage logs, so neither will provide logs if this option is chosen.","Turn off all logging. No build logs will be captured."]},"defaultLogsBucketBehavior":{"description":"Configure Cloud Build to create a default logs bucket within your own project in the same region as your build.","type":"string","enum":["DEFAULT_LOGS_BUCKET_BEHAVIOR_UNSPECIFIED","REGIONAL_USER_OWNED_BUCKET"],"enumDescriptions":["Unspecified","Configure Cloud Build to use regionalized, user-owned logs."]},"requestedVerifyOption":{"description":"Requested verifiability options.","type":"string","enum":["NOT_VERIFIED","VERIFIED"],"enumDescriptions":["Not a verifiable build. (default)","Verified build."]},"substitutionOption":{"description":"Option to specify behavior when there is an error in the substitution checks.","type":"string","enum":["MUST_MATCH","ALLOW_LOOSE"],"enumDescriptions":["Fails the build if error in substitutions checks, like missing a substitution in the template or in the map.","Do not fail the build if error in substitutions checks."]},"dynamicSubstitutions":{"description":"Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the dynamicSubstitutions field is always set to true and does not need to be specified in your build config file. If your build is invoked manually, you must set the dynamicSubstitutions field to true for bash parameter expansions to be interpreted when running your build.","markdownDescription":"Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the `dynamicSubstitutions` field is always set to `true` and does not need to be specified in your build config file. If your build is invoked manually, you must set the `dynamicSubstitutions` field to `true` for bash parameter expansions to be interpreted when running your build.","type":"boolean"},"diskSizeGb":{"description":"Requested disk size for the VM that runs the build.\n\nNote that this is *NOT* \"disk free\"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error.","oneOf":[{"type":"integer","minimum":1,"maximum":2000},{"type":"string","pattern":"^(?:[1-9]\\d{0,2}|1\\d{3}|2000)$"}],"examples":[30,50,"100",200,"300"]},"secretEnv":{"description":"A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret. These variables will be available to all build steps in this build.","type":"array","items":{"type":"string"}},"sourceProvenanceHash":{"description":"Requested hash for SourceProvenance.","type":"array","items":{"enum":["NONE","SHA256","MD5"],"type":"string"},"enumDescriptions":["No hash requested.","Use a sha256 hash.","Use a md5 hash."]}}},"Secret":{"description":"Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.","type":"object","properties":{"kmsKeyName":{"type":"string","description":"Cloud KMS key name to use to decrypt these envs."},"secretEnv":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets."}}},"Artifacts":{"description":"Artifacts produced by a build that should be uploaded upon successful completion of all build steps.","type":"object","properties":{"objects":{"$ref":"#/definitions/ArtifactObjects","description":"A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE.","markdownDescription":"A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked `FAILURE`."},"goModules":{"description":"Allows you to upload non-container Go modules to Go repositories in Artifact Registry.","type":"array","items":{"$ref":"#/definitions/GoModules"}},"mavenArtifacts":{"description":"Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.","type":"array","items":{"$ref":"#/definitions/MavenArtifacts"}},"pythonPackages":{"description":"Allows you to upload Python packages to Artifact Registry.","type":"array","items":{"$ref":"#/definitions/PythonPackages"}},"npmPackages":{"description":"Uploads your built NPM packages to supported repositories.","type":"array","items":{"$ref":"#/definitions/NpmPackages"}}}},"ArtifactObjects":{"description":"Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.","type":"object","properties":{"location":{"description":"Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\". Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.","markdownDescription":"Cloud Storage bucket and optional object path, in the form `gs://bucket/path/to/somewhere/`. See the [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.","type":"string"},"paths":{"description":"Path globs used to match files in the build's workspace.","type":"array","items":{"type":"string"}}}},"GoModules":{"description":"Allows you to upload non-container Go modules to Go repositories in Artifact Registry.","type":"object","additionalProperties":false,"properties":{"repositoryName":{"description":"The name of your Go repository in Artifact Registry.","type":"string"},"repositoryLocation":{"description":"The location for your repository in Artifact Registry.","type":"string"},"repositoryProject_id":{"description":"The ID of the Google Cloud project that contains your Artifact Registry Go repository.","type":"string"},"sourcePath":{"description":"The path to the go.mod file in the build's workspace.","type":"string"},"modulePath":{"description":"The local directory that contains the Go module to upload. It is recommended to use an absolute path for the value.","type":"string"},"moduleVersion":{"description":"The version of the Go module.","type":"string"}},"required":["repositoryName","repositoryLocation","repositoryProject_id","sourcePath","modulePath","moduleVersion"]},"MavenArtifacts":{"description":"Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.","type":"object","additionalProperties":false,"properties":{"repository":{"description":"Required. Name of the Artifact Registry repository to store Java artifacts.","type":"string"},"path":{"description":"Required. The application file path.","type":"string"},"artifactId":{"description":"Required. Name of your package file created from your build step","type":"string"},"groupId":{"description":"Required. Uniquely identifies your project across all Maven projects, in the format com.mycompany.app.","markdownDescription":"Required. Uniquely identifies your project across all Maven projects, in the format `com.mycompany.app`.","type":"string"},"version":{"description":"Required. The version number for your application.","type":"string"}},"required":["repository","path","artifactId","groupId","version"]},"PythonPackages":{"description":"Allows you to upload Python packages to Artifact Registry.","type":"object","additionalProperties":false,"properties":{"repository":{"description":"Required. Name of the Artifact Registry repository to store the Python package.","type":"string"},"paths":{"description":"Required. The package file paths.","type":"array","items":{"type":"string"}}},"required":["repository","paths"]},"NpmPackages":{"description":"Uploads your built NPM packages to supported repositories.","type":"object","additionalProperties":false,"properties":{"repository":{"description":"Required. Name of the Artifact Registry repository to store the NPM package.","type":"string"},"packagePath":{"description":"Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your packagePath value can be . to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a package.json file.","markdownDescription":"Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your `packagePath` value can be `.` to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a `package.json` file.","type":"string"}},"required":["repository","packagePath"]},"Volume":{"description":"Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.","type":"object","properties":{"name":{"description":"Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps.","type":"string"},"path":{"description":"Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths.","type":"string"}}},"Timeout":{"description":"Time limit for executing the build or particular build step. The timeout field of a build step specifies the amount of time the step is allowed to run, and the timeout field of a build specifies the amount of time the build is allowed to run.","markdownDescription":"Time limit for executing the build or particular build step. The `timeout` field of a build step specifies the amount of time the step is allowed to run, and the `timeout` field of a build specifies the amount of time the build is allowed to run.","type":"string","pattern":"^\\d+(\\.\\d{0,9})?s$","examples":["3.5s","120s"]}},"description":"A build resource in the Cloud Build API.","properties":{"steps":{"type":"array","items":{"$ref":"#/definitions/BuildStep"},"description":"Required. The operations to be performed on the workspace."},"logsBucket":{"description":"Google Cloud Storage bucket where logs should be written. Logs file names will be of the format ${logs_bucket}/log-${build_id}.txt.","markdownDescription":"Google Cloud Storage bucket where logs should be written. See [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.","type":"string"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for organizing and filtering builds."},"substitutions":{"additionalProperties":{"type":"string"},"description":"Substitutions data for Build resource.","type":"object"},"images":{"description":"A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked FAILURE.","markdownDescription":"A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.","type":"array","items":{"type":"string"}},"options":{"$ref":"#/definitions/BuildOptions","description":"Special options for this build."},"artifacts":{"$ref":"#/definitions/Artifacts","description":"Artifacts produced by the build that should be uploaded upon successful completion of all build steps."},"timeout":{"$ref":"#/definitions/Timeout","description":"Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.","markdownDescription":"Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`.","default":"600s"},"secrets":{"description":"Secrets to decrypt using Cloud Key Management Service.","type":"array","items":{"$ref":"#/definitions/Secret"}},"serviceAccount":{"description":"Use this field to specify the IAM service account to use at build time.","type":"string"},"queueTtl":{"description":"Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in queueTtl, the build expires and the build status is set to EXPIRED.","markdownDescription":"Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in `queueTtl`, the build expires and the build status is set to `EXPIRED`.","type":"string","pattern":"^\\d+(\\.\\d{0,9})?s$","examples":["3.5s","120s"],"default":"3600s"}},"required":["steps"],"title":"Google Cloud Build build config file","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "Google Cloud Build build config file". Here are the required top‑level fields: steps. Return only the valid JSON object.

See the Cloud Build config schema at https://cloud.google.com/build/docs/build-config-file-schema for the definitions.

If set to true, automatically map all subsistutions and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.

A step in the build pipeline.

Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.

The Docker daemon's cache will already have the latest versions of all of the officially supported build steps. The Docker daemon will also have cached many of the layers for some popular images, like "ubuntu", "debian", but they will be refreshed at the time you attempt to use them.

If you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.

Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.

The Docker daemon's cache will already have the latest versions of all of the [officially supported build steps](https://github.com/GoogleCloudPlatform/cloud-builders). The Docker daemon will also have cached many of the layers for some popular images, like `ubuntu`, `debian`, but they will be refreshed at the time you attempt to use them.

If you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.

In a build step, if you set the value of the allowFailure field to true, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.

In a build step, if you set the value of the `allowFailure` field to `true`, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.

Specify that a build step failure can be ignored when that step returns a particular exit code.

The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in waitFor have completed successfully. If waitFor is empty, this build step will start when all previous build steps in the list have completed successfully. If waitFor is set to '-', the step runs immediately when the build starts.

The `id`(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `waitFor` have completed successfully. If `waitFor` is empty, this build step will start when all previous build steps in the list have completed successfully. If `waitFor` is set to `'-'`, the step runs immediately when the build starts.

A list of environment variable definitions to be used when running a step. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".

A list of environment variable definitions to be used when running a step. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.

Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used.

Entrypoint to be used instead of the build step image's default `entrypoint`. If unset, the image's default `entrypoint` is used.

Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify args or entrypoint in the same step.

Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify `args` or `entrypoint` in the same step.

List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.

A list of arguments that will be presented to the step when it is started.

If the image used to run the step's container has an entrypoint, the args are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments.

A list of arguments that will be presented to the step when it is started.

If the image used to run the step's container has an `entrypoint`, the `args` are used as arguments to that `entrypoint`. If the image does not define an `entrypoint`, the first element in `args` is used as the `entrypoint`, and the remainder will be used as arguments.

Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out.

Unique identifier for this build step, used in waitFor to reference this build step as a dependency.

Unique identifier for this build step, used in `waitFor` to reference this build step as a dependency.

A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret.

Working directory to use when running this step's container.

If this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a RepoSource with dir and a step with a dir, which specifies an absolute path, the RepoSource dir is ignored for the step's execution.

Working directory to use when running this step's container.

If this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.

Optional arguments to enable specific features of builds.

Compute Engine machine type on which to run the build.

e2 HighCPU: 8 vCPUs, 8GB RAM
e2 HighCPU: 32 vCPUs, 32GB RAM
e2 Medium: 1 vCPU, 4GB RAM
n1 HighCPU: 8 vCPUs, 7.2GB RAM
n1 HighCPU: 32 vCPUs, 28.8GB RAM
e2 Standard: 2 vCPU, 8GB RAM

Global list of volumes to mount for ALL build steps. Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration.

Option to define build log streaming behavior to Google Cloud Storage.

Service may automatically determine build log streaming behavior.

Build logs should be streamed to Google Cloud Storage.

Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed.

Set the value of this field to the resource name of the private pool to run the build.

Required. The full resource name of the private pool of the form 'projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID'.

Required. The full resource name of the private pool of the form `projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID`.

A list of global environment variable definitions that will exist for all build steps in this build.

If a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".

A list of global environment variable definitions that will exist for all build steps in this build.

If a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.

Option to specify the logging mode, which determines where the logs are stored.

The service determines the logging mode. The default is LEGACY. Do not rely on the default logging behavior as it may change in the future.

Stackdriver logging and Cloud Storage logging are enabled.

Only Cloud Logging is enabled. Note that logs for both the Cloud Console UI and Cloud SDK are based on Cloud Storage logs, so neither will provide logs if this option is chosen.

Turn off all logging. No build logs will be captured.

Configure Cloud Build to create a default logs bucket within your own project in the same region as your build.

Configure Cloud Build to use regionalized, user-owned logs.

Requested verifiability options.

Not a verifiable build. (default)
Verified build.

Option to specify behavior when there is an error in the substitution checks.

Fails the build if error in substitutions checks, like missing a substitution in the template or in the map.

Do not fail the build if error in substitutions checks.

Use this option to explicitly enable or disable bash parameter expansion in substitutions.

If your build is invoked by a trigger, the dynamicSubstitutions field is always set to true and does not need to be specified in your build config file. If your build is invoked manually, you must set the dynamicSubstitutions field to true for bash parameter expansions to be interpreted when running your build.

Use this option to explicitly enable or disable bash parameter expansion in substitutions.

If your build is invoked by a trigger, the `dynamicSubstitutions` field is always set to `true` and does not need to be specified in your build config file. If your build is invoked manually, you must set the `dynamicSubstitutions` field to `true` for bash parameter expansions to be interpreted when running your build.

Requested disk size for the VM that runs the build.

Note that this is *NOT* "disk free"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error.

A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret. These variables will be available to all build steps in this build.

Requested hash for SourceProvenance.

No hash requested.
Use a sha256 hash.
Use a md5 hash.

Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.

Cloud KMS key name to use to decrypt these envs.

Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets.

Artifacts produced by a build that should be uploaded upon successful completion of all build steps.

A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE.

A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked `FAILURE`.

Allows you to upload non-container Go modules to Go repositories in Artifact Registry.

Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.

Allows you to upload Python packages to Artifact Registry.

Uploads your built NPM packages to supported repositories.

Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.

Cloud Storage bucket and optional object path, in the form "gs://bucket/path/to/somewhere/". Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.

Cloud Storage bucket and optional object path, in the form `gs://bucket/path/to/somewhere/`. See the [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.

Path globs used to match files in the build's workspace.

The name of your Go repository in Artifact Registry.

The location for your repository in Artifact Registry.

The ID of the Google Cloud project that contains your Artifact Registry Go repository.

The path to the go.mod file in the build's workspace.

The local directory that contains the Go module to upload. It is recommended to use an absolute path for the value.

The version of the Go module.

repositoryName repositoryLocation repositoryProject_id sourcePath modulePath moduleVersion

Required. Name of the Artifact Registry repository to store Java artifacts.

Required. The application file path.

Required. Name of your package file created from your build step

Required. Uniquely identifies your project across all Maven projects, in the format com.mycompany.app.

Required. Uniquely identifies your project across all Maven projects, in the format `com.mycompany.app`.

Required. The version number for your application.

repository path artifactId groupId version

Required. Name of the Artifact Registry repository to store the Python package.

Required. The package file paths.

Required. Name of the Artifact Registry repository to store the NPM package.

Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your packagePath value can be . to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a package.json file.

Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your `packagePath` value can be `.` to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a `package.json` file.

Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.

Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps.

Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths.

Time limit for executing the build or particular build step. The timeout field of a build step specifies the amount of time the step is allowed to run, and the timeout field of a build specifies the amount of time the build is allowed to run.

Time limit for executing the build or particular build step. The `timeout` field of a build step specifies the amount of time the step is allowed to run, and the `timeout` field of a build specifies the amount of time the build is allowed to run.

A build resource in the Cloud Build API.

Required. The operations to be performed on the workspace.

Google Cloud Storage bucket where logs should be written. Logs file names will be of the format ${logs_bucket}/log-${build_id}.txt.

Google Cloud Storage bucket where logs should be written. See [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.

Tags for organizing and filtering builds.

Substitutions data for Build resource.

A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked FAILURE.

A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.

Special options for this build.

Artifacts produced by the build that should be uploaded upon successful completion of all build steps.

Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.

Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`.

Secrets to decrypt using Cloud Key Management Service.

Use this field to specify the IAM service account to use at build time.

Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in queueTtl, the build expires and the build status is set to EXPIRED.

Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in `queueTtl`, the build expires and the build status is set to `EXPIRED`.

Google Cloud Build build config file

Provide a JSON object that satisfies the schema "Google Cloud Build build config file". Here are the required top‑level fields: steps. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$id":"https://github.com/cloudcannon/configuration-types/releases/latest/download/cloudcannon-config.schema.json","$schema":"http://json-schema.org/draft-07/schema#","description":"Delegates to other schemas based on version.","type":"object","properties":{"version":{"enum":["legacy-hugo","legacy-jekyll","legacy-eleventy","legacy-reader","latest"]}},"allOf":[{"if":{"properties":{"version":{"not":{"enum":["legacy-hugo","legacy-jekyll","legacy-eleventy","legacy-reader"]}}}},"then":{"$ref":"cloudcannon-config.latest.schema.json"}},{"if":{"properties":{"version":{"const":"legacy-hugo"}},"required":["version"]},"then":{"$ref":"cloudcannon-config.legacy-hugo.schema.json"}},{"if":{"properties":{"version":{"const":"legacy-jekyll"}},"required":["version"]},"then":{"$ref":"cloudcannon-config.legacy-jekyll.schema.json"}},{"if":{"properties":{"version":{"const":"legacy-eleventy"}},"required":["version"]},"then":{"$ref":"cloudcannon-config.legacy-eleventy.schema.json"}},{"if":{"properties":{"version":{"const":"legacy-reader"}},"required":["version"]},"then":{"$ref":"cloudcannon-config.legacy-reader.schema.json"}}]}
</schema>

[User] Provide a JSON object that satisfies the schema "cloudcannon-config.schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Delegates to other schemas based on version.

legacy-hugo legacy-jekyll legacy-eleventy legacy-reader latest

Provide a JSON object that satisfies the schema "cloudcannon-config.schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.