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:v12 |
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: cfCredentialsId reference to: password Vault resource: name: cloudfoundryVaultSecretName default 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: cfCredentialsId reference to: username Vault resource: name: cloudfoundryVaultSecretName default 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 }"