mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
106 lines
3.2 KiB
Markdown
106 lines
3.2 KiB
Markdown
|
# ${docGenStepName}
|
||
|
|
||
|
## ${docGenDescription}
|
||
|
|
||
|
## 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](https://support.sap.com/en/product/connectors/nwrfcsdk.html).
|
||
|
|
||
|
For more information, see [classical SAP connectivity technology RFC](https://help.sap.com/viewer/753088fc00704d0a80e7fbd6803c8adb/1709%20000/en-US/4888068ad9134076e10000000a42189d.html).
|
||
|
|
||
|
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](https://github.com/rodibrin/devops-docker-images/tree/master/node-rfc).
|
||
|
1. Push your image to your private [Docker Hub registry](https://hub.docker.com/).
|
||
|
1. Add the following to your config.yml file:
|
||
|
|
||
|
```yaml
|
||
|
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](transportRequestReqIDFromGit.md).
|
||
|
|
||
|
### 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.
|
||
|
|
||
|
```groovy
|
||
|
transportRequestUploadRFC(
|
||
|
script: this,
|
||
|
transportRequestId: ${TRANSPORT_REQUEST_ID},
|
||
|
...
|
||
|
)
|
||
|
```
|
||
|
|
||
|
The Jenkins pipeline `input` step allows you to specify the ID at runtime of the pipeline.
|
||
|
|
||
|
```groovy
|
||
|
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](transportRequestReqIDFromGit.md) 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.
|
||
|
|
||
|
```groovy
|
||
|
transportRequestReqIDFromGit( script: this )
|
||
|
transportRequestUploadRFC( script: this, ... )
|
||
|
```
|
||
|
|
||
|
## ${docGenParameters}
|
||
|
|
||
|
## ${docGenConfiguration}
|
||
|
|
||
|
## ${docJenkinsPluginDependencies}
|
||
|
|
||
|
## Example
|
||
|
|
||
|
```yaml
|
||
|
# 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'
|
||
|
```
|
||
|
|
||
|
```groovy
|
||
|
// pipeline script
|
||
|
transportRequestReqIDFromGit( script: this )
|
||
|
transportRequestUploadRFC( script: this, applicationUrl: 'https://example.org/appl/url/archive.zip')
|
||
|
```
|