abapEnvironmentCreateSystem¶
Creates a SAP BTP ABAP Environment system (aka Steampunk system)
Description¶
This step creates a SAP BTP ABAP Environment system (aka Steampunk system) via the cloud foundry command line interface (cf CLI). This can be done by providing a service manifest as a configuration file (parameter serviceManifest) or by passing the configuration values directly via the other parameters of this step.
Usage¶
We recommend to define values of step parameters via .pipeline/config.yml file.
In this case, calling the step is essentially reduced to defining the step name.
Calling the step can be done either in an orchestrator specific way (e.g. via a Jenkins library step) or on the command line.
library('piper-lib-os')
abapEnvironmentCreateSystem script: this
piper abapEnvironmentCreateSystem
Prerequisites¶
- On SAP Business Technology Platform (SAP BTP), Cloud Foundry needs to be enabled on subaccount level. This can be done on the Subaccount Overview page. The subaccount is then mapped to a “Cloud Foundry Organization”, for which you must provide a suitable name during the creation. Have a look at the documentation for more details.
- A (technical) user is required to access the SAP BTP via the cf CLI. The user needs to be a member of the global account and has to have the Space Developer role. The user and password need to be stored in the Jenkins Credentials Store.
- Please make sure, that there are enough entitlements in the subaccount for the Service Plan, which you want to use for this step.
Parameters¶
Overview - Step¶
| Name | Mandatory | Additional information |
|---|---|---|
| cfOrg | yes | |
| cfSpace | yes | |
| password | (yes) | cfCredentialsId) |
| script | (yes) | |
| username | (yes) | cfCredentialsId) |
| abapSystemAdminEmail | no | |
| abapSystemDescription | no | |
| abapSystemID | no | |
| abapSystemIsDevelopmentAllowed | no | |
| abapSystemSizeOfPersistence | no | |
| abapSystemSizeOfRuntime | no | |
| addonDescriptorFileName | no | |
| cfApiEndpoint | no | |
| cfService | no | |
| cfServiceInstance | no | |
| cfServicePlan | no | |
| includeAddon | no | |
| serviceManifest | no | |
| verbose | no | activates debug output |
Overview - Execution Environment¶
Orchestrator-specific only
These parameters are relevant for orchestrator usage and not considered when using the command line option.
| Name | Mandatory | Additional information |
|---|---|---|
| containerCommand | no | |
| containerShell | no | |
| dockerEnvVars | no | |
| dockerImage | no | |
| dockerName | no | |
| dockerOptions | no | |
| dockerPullImage | no | |
| dockerVolumeBind | no | |
| dockerWorkspace | no |
Details¶
abapSystemAdminEmail¶
Admin E-Mail address for the initial administrator of the system
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | $PIPER_abapSystemAdminEmail (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
abapSystemDescription¶
Description for the ABAP Environment system
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | Test system created by an automated pipeline |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
abapSystemID¶
The three character name of the system - maps to 'sapSystemName'
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | H02 |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
abapSystemIsDevelopmentAllowed¶
This parameter determines, if development is allowed on the system
| Scope | Details |
|---|---|
| Aliases | - |
| Type | bool |
| Mandatory | no |
| Default | true |
| Possible values | - true- false |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
abapSystemSizeOfPersistence¶
The size of the persistence
| Scope | Details |
|---|---|
| Aliases | - |
| Type | int |
| Mandatory | no |
| Default | 0 |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
abapSystemSizeOfRuntime¶
The size of the runtime
| Scope | Details |
|---|---|
| Aliases | - |
| Type | int |
| Mandatory | no |
| Default | 0 |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
addonDescriptorFileName¶
The file name of the addonDescriptor
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | $PIPER_addonDescriptorFileName (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
cfApiEndpoint¶
Cloud Foundry API endpoint
| Scope | Details |
|---|---|
| Aliases | cloudFoundry/apiEndpoint |
| Type | string |
| Mandatory | no |
| Default | https://api.cf.eu10.hana.ondemand.com |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
cfOrg¶
Cloud Foundry org
| Scope | Details |
|---|---|
| Aliases | cloudFoundry/org |
| Type | string |
| Mandatory | yes |
| Default | $PIPER_cfOrg (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
cfService¶
Parameter for Cloud Foundry Service to be used for creating Cloud Foundry Service
| Scope | Details |
|---|---|
| Aliases | cloudFoundry/service |
| Type | string |
| Mandatory | no |
| Default | $PIPER_cfService (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
cfServiceInstance¶
Parameter for naming the Service Instance when creating a Cloud Foundry Service
| Scope | Details |
|---|---|
| Aliases | cloudFoundry/serviceInstance |
| Type | string |
| Mandatory | no |
| Default | $PIPER_cfServiceInstance (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
cfServicePlan¶
Parameter for Cloud Foundry Service Plan to be used when creating a Cloud Foundry Service
| Scope | Details |
|---|---|
| Aliases | cloudFoundry/servicePlan |
| Type | string |
| Mandatory | no |
| Default | $PIPER_cfServicePlan (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
cfSpace¶
Cloud Foundry Space
| Scope | Details |
|---|---|
| Aliases | cloudFoundry/space |
| Type | string |
| Mandatory | yes |
| Default | $PIPER_cfSpace (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
containerCommand¶
Jenkins-specific: Used for proper environment setup.
Kubernetes only: Allows to specify start command for container created with dockerImage parameter to overwrite Piper default (/usr/bin/tail -f /dev/null).
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
containerShell¶
Jenkins-specific: Used for proper environment setup.
Allows to specify the shell to be executed for container with containerName.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerEnvVars¶
Environment variables to set in the container, e.g. [http_proxy: "proxy:8080"].
| Scope | Details |
|---|---|
| Aliases | - |
| Type | map[string]string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerImage¶
Name of the docker image that should be used. If empty, Docker is not used and the command is executed directly on the Jenkins system.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | ppiper/cf-cli:latest |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerName¶
Kubernetes only: Name of the container launching dockerImage. SideCar only: Name of the container in local network.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | cf |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerOptions¶
Docker options to be set when starting the container.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | []string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerPullImage¶
Set this to 'false' to bypass a docker image pull. Useful during development process. Allows testing of images which are available in the local registry only.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | bool |
| Mandatory | no |
| Default | true |
| Possible values | - true- false |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerVolumeBind¶
Jenkins-specific: Used for proper environment setup.
Volumes that should be mounted into the docker container.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | map[string]string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerWorkspace¶
Jenkins-specific: Used for proper environment setup.
Kubernetes only: Specifies a dedicated user home directory for the container which will be passed as value for environment variable HOME.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
includeAddon¶
Must be set to true to install the addon provided via 'addonDescriptorFileName'
| Scope | Details |
|---|---|
| Aliases | - |
| Type | bool |
| Mandatory | no |
| Default | false |
| Possible values | - true- false |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
password¶
Password for Cloud Foundry User
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | yes |
| Default | $PIPER_password (if set) |
| Secret | yes |
| Configuration scope |
|
| Resource references | Jenkins credential id: id: cfCredentialsIdreference to: passwordVault resource: name: cloudfoundryVaultSecretNamedefault value: cloudfoundry-$(org)-$(space)Vault paths:
|
script¶
The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the this parameter, as in script: this. This allows the function to access the commonPipelineEnvironment for retrieving, e.g. configuration parameters.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | Jenkins Script |
| Mandatory | yes |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
serviceManifest¶
Path to Cloud Foundry Service Manifest in YAML format for multiple service creations that are being passed to a Create-Service-Push Cloud Foundry cli plugin
| Scope | Details |
|---|---|
| Aliases | - cloudFoundry/serviceManifest- cfServiceManifest |
| Type | string |
| Mandatory | no |
| Default | $PIPER_serviceManifest (if set) |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
username¶
User or E-Mail for CF
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | yes |
| Default | $PIPER_username (if set) |
| Secret | yes |
| Configuration scope |
|
| Resource references | Jenkins credential id: id: cfCredentialsIdreference to: usernameVault resource: name: cloudfoundryVaultSecretNamedefault value: cloudfoundry-$(org)-$(space)Vault paths:
|
verbose¶
verbose output
| Scope | Details |
|---|---|
| Aliases | - |
| Type | bool |
| Mandatory | no |
| Default | false |
| Possible values | - true- false |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
cfCredentialsId¶
Jenkins 'Username with password' credentials ID containing user and password to authenticate to the Cloud Foundry API.
| Scope | Details |
|---|---|
| Aliases | cloudFoundry/credentialsId |
| Type | string |
| Configuration scope |
|
Example: Configuration in the config.yml¶
The recommended way to configure your pipeline is via the config.yml file. In this case, calling the step in the Jenkinsfile is reduced to one line:
abapEnvironmentCreateSystem script: this
The configuration values for the system can be passed through the config.yml file:
steps:
abapEnvironmentCreateSystem:
cfCredentialsId: 'cfCredentialsId'
cfApiEndpoint: 'https://test.server.com'
cfOrg: 'cfOrg'
cfSpace: 'cfSpace'
cfServiceInstance: 'H02_Q_system'
cfService: 'abap'
cfServicePlan: 'standard'
abapSystemAdminEmail: 'user@example.com'
abapSystemDescription: 'ABAP Environment Q System'
abapSystemIsDevelopmentAllowed: true
abapSystemID: 'H02'
abapSystemSizeOfPersistence: 4
abapSystemSizeOfRuntime: 1
Example: Configuration in the Jenkinsfile¶
The step, including all parameters, can also be called directly from the Jenkinsfile. In the following example, a configuration file is used.
abapEnvironmentCreateSystem (
script: this,
cfCredentialsId: 'cfCredentialsId',
cfApiEndpoint: 'https://test.server.com',
cfOrg: 'cfOrg',
cfSpace: 'cfSpace',
cfServiceManifest: 'manifest.yml'
)
The file manifest.yml would look like this:
---
create-services:
- name: "H02_Q_system"
broker: "abap"
plan: "standard"
parameters: "{ \"admin_email\" : \"user@example.com\", \"description\" : \"ABAP Environment Q System\", \"is_development_allowed\" : true, \"sapsystemname\" : \"H02\", \"size_of_persistence\" : 4, \"size_of_runtime\" : 1 }"