Skip to content

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
  • custom/transportRequestId

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:

  1. Create a Docker image as described in the Git repository devops-docker-images/node-rfc.
  2. Push your image to your private Docker Hub registry.
  3. 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) Secret pass via ENV or Jenkins credentials (uploadCredentialsId)
script (yes) Jenkins only reference to Jenkins main pipeline script
transportRequestId yes
username (yes) Secret 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 Jenkins only
containerShell no Jenkins only
dockerEnvVars no
dockerImage no
dockerName no
dockerOptions no
dockerPullImage no
dockerVolumeBind no Jenkins only
dockerWorkspace no Jenkins only

Details

abapPackage

ABAP package name of the UI5 application

back to overview

Scope Details
Aliases -
Type string
Mandatory yes
Default $PIPER_abapPackage (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

acceptUnixStyleLineEndings

If unix style line endings should be accepted

back to overview

Scope Details
Aliases -
Type bool
Mandatory no
Default true
Possible values - true
- false
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

applicationDescription

Description of the UI5 application

back to overview

Scope Details
Aliases -
Type string
Mandatory no
Default $PIPER_applicationDescription (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

applicationName

Name of the UI5 application

back to overview

Scope Details
Aliases -
Type string
Mandatory yes
Default $PIPER_applicationName (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

applicationUrl

URL of the UI5 application package to upload to the ABAP system via RFC

back to overview

Scope Details
Aliases -
Type string
Mandatory yes
Default $PIPER_applicationUrl (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

client

AS ABAP client number

back to overview

Scope Details
Aliases - changeManagement/client
- changeManagement/rfc/developmentClient
Type string
Mandatory no
Default $PIPER_client (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

codePage

Code page

back to overview

Scope Details
Aliases -
Type string
Mandatory no
Default UTF-8
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
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).

back to overview

Scope Details
Aliases -
Type string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

containerShell

Jenkins-specific: Used for proper environment setup.

Allows to specify the shell to be executed for container with containerName.

back to overview

Scope Details
Aliases -
Type string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

dockerEnvVars

Jenkins-specific: Used for proper environment setup.

Environment variables to set in the container, e.g. [http_proxy: "proxy:8080"].

back to overview

Scope Details
Aliases -
Type map[string]string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
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.

back to overview

Scope Details
Aliases -
Type string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
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.

back to overview

Scope Details
Aliases -
Type string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

dockerOptions

Jenkins-specific: Used for proper environment setup.

Docker options to be set when starting the container.

back to overview

Scope Details
Aliases -
Type []string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
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.

back to overview

Scope Details
Aliases -
Type bool
Mandatory no
Default false
Possible values - true
- false
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

dockerVolumeBind

Jenkins-specific: Used for proper environment setup.

Volumes that should be mounted into the docker container.

back to overview

Scope Details
Aliases -
Type map[string]string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
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.

back to overview

Scope Details
Aliases -
Type string
Mandatory no
Default
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

endpoint

Service endpoint, Application server URL

back to overview

Scope Details
Aliases changeManagement/endpoint
Type string
Mandatory yes
Default $PIPER_endpoint (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

failUploadOnWarning

If the upload should fail in case the log contains warnings

back to overview

Scope Details
Aliases failOnWarning
Type bool
Mandatory no
Default true
Possible values - true
- false
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

instance

AS ABAP instance number

back to overview

Scope Details
Aliases - changeManagement/instance
- changeManagement/rfc/developmentInstance
Type string
Mandatory no
Default $PIPER_instance (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references none

password

Service user password for uploading to the ABAP system via RFC

back to overview

Scope Details
Aliases -
Type string
Mandatory yes
Default $PIPER_password (if set)
Secret yes
Configuration scope
  • ☒ parameter
  • ☐ general
  • ☐ steps
  • ☐ stages
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.

back to overview

Scope Details
Aliases -
Type Jenkins Script
Mandatory yes
Default
Secret no
Configuration scope
  • ☐ parameter
  • ☐ general
  • ☐ steps
  • ☐ stages
Resource references none

transportRequestId

ID of the transport request to which the UI5 application is uploaded

back to overview

Scope Details
Aliases -
Type string
Mandatory yes
Default $PIPER_transportRequestId (if set)
Secret no
Configuration scope
  • ☒ parameter
  • ☐ general
  • ☐ steps
  • ☐ stages
Resource references commonPipelineEnvironment:
  reference to: custom/transportRequestId

username

Service user for uploading to the ABAP system via RFC

back to overview

Scope Details
Aliases -
Type string
Mandatory yes
Default $PIPER_username (if set)
Secret yes
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
Resource references Jenkins credential id:
  id: uploadCredentialsId
  reference to: username

verbose

verbose output

back to overview

Scope Details
Aliases -
Type bool
Mandatory no
Default false
Possible values - true
- false
Secret no
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages
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

back to overview

Scope Details
Aliases changeManagement/credentialsId
Type string
Configuration scope
  • ☒ parameter
  • ☒ general
  • ☒ steps
  • ☒ stages

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')