SAP Cloud Integration – External Version Management of Artifacts
SAP Cloud Integration version 2.53.x or 3.11.x adds enhancement to artifacts download, using which you can externally version manage the artifacts resources with a version management system of your choice. SAP Cloud Integration already has an inbuilt linear version management functionality. For customers who need advanced capabilities like branching, tagging etc., this enhancement allows for usage of external version management systems in a simplified manner.
This blog explains about the changes to artifacts download and how makes use of GIT version management in Eclipse IDE as an example.
In the past, whenever you download multiple artifacts (mass download) from the Design tab of SAP Cloud Integration web tooling, a zip was downloaded, which contained multiple zip files representing each artifact. With SAP Cloud Integration version 2.53.x or 3.11.x, the mass download has been changed to contain folders representing each artifact. Meaning, the downloaded zip file will now contain folders (with all the resources including artifacts project structure). This zip file can now be directly imported into the resource editor of your choice and manage the versions accordingly.
Eclipse IDE and GIT
In the below example, Eclipse IDE along with eclipse GIT plugin has been used to demonstrate version management of SAP Cloud Integration artifacts.
My integration package below with the artifacts CRM_Business_Partner_yMKT and EC 2 WFS Time Vendor Custom have been developed to address my integration use cases. After quality related activities of these integration artifacts are complete, I saved them with version 1.0.0 in my design workspace.
Let’s download these two integration artifacts as shown in the below screenshot.
The Eclipse IDE has been configured with GIT management system via the Eclipse GIT plugin. We can now import all the artifacts from the downloaded zip and, commit and push to GIT.
Let’s create a generic eclipse project to have on root container for all my artifacts resources.
Let’s give it a name as MySAPCloudIntegrationArtifacts.
Now we can import the artifacts projects from the downloaded zip with the following steps as shown in the screenshots
Browse and select the downloaded zip file
Now share the projects with configured GIT in Eclipse editor as given in the below screenshots.
Select the Repository from the drop down UI control
All the resources will be available in the Unstaged Changes area as shown below.
Move all the resources to Staged Changes area, to commit and push artifacts resources to GIT repository.
Add Commit Message as required, Commit and Push the changes to your GIT repository.
Since the GIT environment in this example demonstration configured to have review/sandbox/staging area, the review could be done on the resources before merging to the remote GIT repository.
Open the change list URL in the browser to review the changes as shown in the below example.
If the changes are OK for the reviewer, he can provide the approval as shown below screenshot.
Clicking on Submit button will merge the changes.
If needed, we can get these changes in a separate branch of your choice as these artifacts have been concluded to be complete/stable. We can create a branch in GIT environment with initial/stable version code-line/branch at that moment (e.g. referred as master branch in GIT). Sample screenshots of the provided below.
Providing a name and clicking on Create Branch will create the branch as shown below. In this example the branch name “my-sap-cloud-integration-artifacts-rel-1.0.0” has been used.
Now, as a continued development process, let’s update integration artifacts and after quality and testing process, let’s save them as new/incremented version. For the update scenario, let’s add a script step in the integration flow Exception SubProcess and add a comment in the logging script as shown in the below example.
(Before the script step addition in the Exception SubProcess)
(After the script step addition in the Exception SubProcess)
Let’s add a comment in a groovy script which is used to log the payload, as shown in the below example, at line 18.
Similarly, the other integration flow is also modified. Save these artifacts with version 1.1.0 (using the Save As button in the editor). Select both the integration flows and download.
Import the newly downloaded zip file into Eclipse IDE as shown below.
Click Yes (or Yes To All) to overwrite while importing as shown in the below screenshot.
After importing, the Unstaged Changes area will be having only changed/updated resources. Stage them by moving to Staged Changes area, commit and push the changes after providing an appropriate commit message.
Visit the GIT review/sandbox/staging are to review the changes.
Below is the example of groovy script diff view where the change has been done.
Below is the example of MANIFEST file change, because of Save As action in the SAP Cloud Integration Web tooling where you saved this with new version.
Merge the changes after review, as shown below example screenshot
If needed, we can cherry pick this change to a dedicated branch, e.g. to a branch named my-sap-cloud-integration-artifacts-1.1.0 to mark its completeness/stability as shown in the sample screen below.
Now, assume that a scenario where in you need to provide a fix to the integration artifact named CRM_Business_Partner_yMKT for the previous version (i.e. 1.0.0). In this case, the sequence of operations is,
- Get this content from branch my-sap-cloud-integration-artifacts-1.0.0 from your GIT repository to eclipse.
- Export this project as zip.
- Upload this project zip to SAP Cloud Integration and then provide the fix.
Example of getting the content form the branch can be done by pulling and switch to my-sap-cloud-integration-artifacts-1.0.0 showed in below screenshots
Click on the New Branch… button
Click on Select… button to choose the branch
Clicking on the Finish button will import the contents of branch. Observe the change in the branch name as encircled in below screenshot
Select the project CRM_Business_Partner_yMKT and export it as shown in below screenshot
Use this exported zip file to update the integration artifact in SAP Cloud Integration Web tooling via the View metadata action as shown below.
Click on Edit button
Click on the Browse… button to upload the zip file
Click on OK button, and the contents will be update in the integration flow artifact.
Observe the version of CRM_Business_Partner_yMKT changed to 1.0.0 as encircled in the above screenshot.
If you now open the integration flow, you will see the integration flow (focusing on Exception Subprocess) was on the older release where there is no script step available Exception SubProcess sample screenshot below.
Similarly, the logging groovy script will be of older version where the comment on line number 18 was unavailable.
With enhancement to mass artifacts download feature, user can now manage the artifacts resources with external version management systems in a simplified manner.
Thanks for sharing on this. I would like to know if this is the "Git support" capability that has been mentioned in the CPI roadmap slides. If it is, then it is quite disappointing, to be honest.
I'm already using Git to manually manage my artifacts externally, and this update does not really enhance anything much. There are still a lot of manual steps to be executed.
I was kind of hoping for some built-in capability much like in WebIDE where a Git repository can be configured directly to the development artifacts, and all the various Git commands (branch, merge, rebase, etc) can be done directly in the UI.
Hi Eng Swee,
Thanks for providing feedback.
Yes, with this approach we would like to slightly improve the GIT support.
We do understand your feedback that we can improve further with better coupling of GIT capabilities directly.
As of now we are looking for further feedback based on usage.
I'm sorry but I cannot understand this idea at all.
ZIP download possibility started ~year ago and NO any git support is introduced in 3.11.12.
Yes, the zip download possibility was already available. What has been changed is, the downloaded zip file used to have multiple zip files, each zip files representing an artifact. It has been slightly modified in a way that downloaded zip to have multiple folders, each folder representing an artifact.
has there been an enhancement of the GIT integration for CPI meanwhile?
I agree to Eng Swee that the functionality shown in this blog is not really satifying.
Thanks for an update