transportRequestUploadRFC¶
This step uploads a UI5 application as ZIP file to the ABAP system via RFC connections.
Description¶
This step uploads a UI5 application as ZIP file to the ABAP system via RFC connections.
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')
transportRequestUploadRFC script: this
piper transportRequestUploadRFC
Outputs¶
Output type | Details |
---|---|
commonPipelineEnvironment |
|
Prerequisites¶
- You have enabled RFC on the ABAP system.
- You have a user account on the ABAP system where you have assigned the required roles for uploading via RFC.
- You have created a transport request on the ABAP system, which is the target container of the upload.
RFC Client¶
The RFC Client connects to your ABAP system using the SAP NetWeaver RFC SDK.
For more information, see classical SAP connectivity technology RFC.
To install an RFC library based Connector Client, proceed as follows:
- Create a Docker image as described in the Git repository devops-docker-images/node-rfc.
- Push your image to your private Docker Hub registry.
- Add the following to your config.yml file:
steps:
transportRequestUploadRFC:
dockerImage: 'my/rfc-client'
Specifying the Transport Request¶
The target of the upload is a transport request, identified by an identifier (ID).
The step transportRequestUploadRFC
allows you to set the ID by parameter.
Alternatively, you can pass the ID through the commonPipelineEnvironment
.
For example, by performing a step that generates the ID or obtains it differently.
See transportRequestReqIDFromGit.
Adding a Parameter¶
A parameterized pipeline allows you to specify the ID with the launch of the build instead of entering it statically into the pipeline.
transportRequestUploadRFC(
script: this,
transportRequestId: ${TRANSPORT_REQUEST_ID},
...
)
The Jenkins pipeline input
step allows you to specify the ID at runtime of the pipeline.
def ids = input( message: "Upload?",
parameters: [
string(name: 'TRANSPORT_REQUEST_ID',description: 'Transport Request ID')
]
)
transportRequestUploadRFC(
script:this,
transportRequestId: ids['TRANSPORT_REQUEST_ID'],
...
)
Common Pipeline Environment¶
Use the step transportRequestReqIDFromGit to obtain the transportRequestId
value from your Git commit messages.
This step extracts the ID from the commit messages of your project repository and enters it into the commonPipelineEnvironment
, in turn, the upload step transportRequestUploadRFC
picks it up from there.
transportRequestReqIDFromGit( script: this )
transportRequestUploadRFC( script: this, ... )
Parameters¶
Overview - Step¶
Name | Mandatory | Additional information |
---|---|---|
abapPackage | yes | |
applicationName | yes | |
applicationUrl | yes | |
endpoint | yes | |
password | (yes) | pass via ENV or Jenkins credentials (uploadCredentialsId ) |
script | (yes) | reference to Jenkins main pipeline script |
transportRequestId | yes | |
username | (yes) | pass via ENV or Jenkins credentials (uploadCredentialsId ) |
acceptUnixStyleLineEndings | no | |
applicationDescription | no | |
client | no | |
codePage | no | |
failUploadOnWarning | no | |
instance | 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¶
abapPackage¶
ABAP package name of the UI5 application
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | yes |
Default | $PIPER_abapPackage (if set) |
Secret | no |
Configuration scope |
|
Resource references | none |
acceptUnixStyleLineEndings¶
If unix style line endings should be accepted
Scope | Details |
---|---|
Aliases | - |
Type | bool |
Mandatory | no |
Default | true |
Possible values | - true - false |
Secret | no |
Configuration scope |
|
Resource references | none |
applicationDescription¶
Description of the UI5 application
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | no |
Default | $PIPER_applicationDescription (if set) |
Secret | no |
Configuration scope |
|
Resource references | none |
applicationName¶
Name of the UI5 application
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | yes |
Default | $PIPER_applicationName (if set) |
Secret | no |
Configuration scope |
|
Resource references | none |
applicationUrl¶
URL of the UI5 application package to upload to the ABAP system via RFC
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | yes |
Default | $PIPER_applicationUrl (if set) |
Secret | no |
Configuration scope |
|
Resource references | none |
client¶
AS ABAP client number
Scope | Details |
---|---|
Aliases | - changeManagement/client - changeManagement/rfc/developmentClient |
Type | string |
Mandatory | no |
Default | $PIPER_client (if set) |
Secret | no |
Configuration scope |
|
Resource references | none |
codePage¶
Code page
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | no |
Default | UTF-8 |
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¶
Jenkins-specific: Used for proper environment setup.
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¶
Jenkins-specific: Used for proper environment setup.
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 | rfc-client |
Secret | no |
Configuration scope |
|
Resource references | none |
dockerName¶
Jenkins-specific: Used for proper environment setup.
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 | rfcclient |
Secret | no |
Configuration scope |
|
Resource references | none |
dockerOptions¶
Jenkins-specific: Used for proper environment setup.
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¶
Jenkins-specific: Used for proper environment setup.
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 |
endpoint¶
Service endpoint, Application server URL
Scope | Details |
---|---|
Aliases | changeManagement/endpoint |
Type | string |
Mandatory | yes |
Default | $PIPER_endpoint (if set) |
Secret | no |
Configuration scope |
|
Resource references | none |
failUploadOnWarning¶
If the upload should fail in case the log contains warnings
Scope | Details |
---|---|
Aliases | failOnWarning |
Type | bool |
Mandatory | no |
Default | true |
Possible values | - true - false |
Secret | no |
Configuration scope |
|
Resource references | none |
instance¶
AS ABAP instance number
Scope | Details |
---|---|
Aliases | - changeManagement/instance - changeManagement/rfc/developmentInstance |
Type | string |
Mandatory | no |
Default | $PIPER_instance (if set) |
Secret | no |
Configuration scope |
|
Resource references | none |
password¶
Service user password for uploading to the ABAP system via RFC
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | yes |
Default | $PIPER_password (if set) |
Secret | yes |
Configuration scope |
|
Resource references | Jenkins credential id: id: uploadCredentialsId reference to: password |
script¶
Jenkins-specific: Used for proper environment setup.
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 |
transportRequestId¶
ID of the transport request to which the UI5 application is uploaded
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | yes |
Default | $PIPER_transportRequestId (if set) |
Secret | no |
Configuration scope |
|
Resource references | commonPipelineEnvironment: reference to: custom/transportRequestId |
username¶
Service user for uploading to the ABAP system via RFC
Scope | Details |
---|---|
Aliases | - |
Type | string |
Mandatory | yes |
Default | $PIPER_username (if set) |
Secret | yes |
Configuration scope |
|
Resource references | Jenkins credential id: id: uploadCredentialsId reference to: username |
verbose¶
verbose output
Scope | Details |
---|---|
Aliases | - |
Type | bool |
Mandatory | no |
Default | false |
Possible values | - true - false |
Secret | no |
Configuration scope |
|
Resource references | none |
uploadCredentialsId¶
Jenkins-specific: Used for proper environment setup. See using credentials for details.
Jenkins 'Username with password' credentials ID containing user and password to authenticate against the ABAP system
Scope | Details |
---|---|
Aliases | changeManagement/credentialsId |
Type | string |
Configuration scope |
|
Example¶
# config.yaml
steps:
transportRequestUploadRFC:
changeManagement:
credentialsId: 'RFC_CREDENTIALS_ID'
endpoint: 'https://example.org/cm/rfc/endpoint'
instance: '00'
client: '001'
abapPackage: 'PACK'
applicationDescription: 'Lorem ipsum'
applicationName: 'APP'
dockerImage: 'my/rfc-client'
// pipeline script
transportRequestReqIDFromGit( script: this )
transportRequestUploadRFC( script: this, applicationUrl: 'https://example.org/appl/url/archive.zip')