How to manage objects using gCTS
With launch of much awaited gCTS app in 2019 SAP has taken a step forward towards Continuous Integration. gCTS makes use of special Git features , changes in the objects are still recorded in Transport Requests . We can move the objects to remote Git repositories i.e. “Push Objects” either by releasing the Transport Request or while working on the objects.
Sounds quite easy right? Yes, it is, we will see how to use gCTS in this Blog.
Key Pre requisites for having gCTS app working are:
- S/4HANA EM 1909 FPS00
- JVM Version should be 1.8 or higher
- You have GitHub account ( in case your Enterprise has its own private GitHub , you can use the same too )
- gCTS app is activated and you have the required role assigned to your user as per Fiori Library
Let us see sequence of key steps that are required to push objects to remote Git repositories:
- Maintain Configuration : Before you create repository ; maintain the configurations
- VCS_PATH : It need to be set to proper directory path in order to clone repositories on OS level. In case you do not provide any value for configuration parameter VCS_PATH, the application will not create any directory on OS level and expects that the directory already exists
- A2G_RUNTIME: Communication application for remote repository on the OS layer
- JAVA_RUNTIME: Path to the java environment on OS layer .
2. Create Repository:You need to register repository on ABAP system before you can push objects to Git repositories.
The creation part of a repository is just a registration process and the opportunity to provide further configuration before clone
You also need to maintain Configuration for Repository ( Configuration tab in repository) by maintaining below parameters before saving Repository .
Click on Save to create Repository.
- Initialize System : In case ABAP system is the domain controller, then choose initialize system on the main page of app. This schedules gCTS services and all the required settings for Transport Management System are done. The system will automatically create the non-ABAP system and a transport layer that will be used to transport objects that are part of packages managed by gCTS. The transport layer follows the naming convention Z+<vSID>
Now when you create objects that are required to be moved to Git Repository; assign Transport layer to objects as Zvsid (the one that was created above)
4. Clone Repository :All update or change actions are disabled as long as the repository was not cloned.
The cloning process copies the file structure of the remote repository to the file system of your ABAP system and imports the content to the local repository on the file system. Note that this process may take some time, depending on the size of the repository
Once the Repository is created successfully, status will be changed from ‘CREATED’ to ‘READY’ at the top of Repository
Once the clone Repository is successful, Clone Repository button will be disabled. You can check the results of cloning process in Logs tab.
Now when the transport requests are released in then ABAP system; the objects will automatically be pushed to the remote repository on the Git Server.
5. Push Objects : You can also push objects manually; where the Transport request of objects are not released yet. Go to Objects tab in the repository and click on “+”
P.S: + button is only enabled when your repository status is in ‘READY’.
Now enter the name of object /package that you would like to push manually and click on Push button as shown. It will automatically create Transport of copies having the object and will automatically release the TR in the backend
You can also use this app to import objects from Repository to your SAP S/4HANA system as well .
To summarize ; in this blog post we have seen how using gCTS app you can push the objects to Git repositories once the basic settings as mentioned above are in place .
Please share your thoughts and any additional points you think we can add .
Great stuff Taranamjit Kaur Dhindsa. A small query How will we move from Dev-QA-PROD still via same CTS concept , If yes then what benefits this brings
Thanks Nabheet . Either you can pull manually in subsequent systems using gCTS app / we can build CI pipeline which can be used to trigger changes automatically example currently we have been using internal Devops platform for triggering automatic push into quality after validating changes by executing ATC and ABAP Unit .
One of the use case currently we have is an existing customer who has 2 development boxes ; one for Master changes D1 and other for Project/Int bug fixes changes D2
The Master branch contains all the user stories that have already been developed in DEV system
The Release branch contains the code done in DEV1 system (Typically any roll out changes/Int bug fixes).
The code from release branch is merged continuously into Master branch.The Merged code is pushed back to D1 system .So benefit typically depends on how Customers are executing their implementation projects and if they have scenarios where they would have multiple people working on same development as gCTS will give that flexibility by using branching and merging concept.
Hi Taranamjit, this part is the one actually, we are waiting for, because the conceptualized stuff will be there as a working model with respect to Proper branching technique of GCTS.
But this whole CI server scenario will come once the, TR is released from DEV, as Pipeline will only start after a commit, if I am not wrong. Can you provide any conceptualized model, which you are following.
May be my perception would not be correct, but surely waiting for your reply of what till now you have achieved. ?✌
Hello sir great stuff how can spare time for doing all this and your reguler work
And is it really working this gCTS app with pipeline
Thanks John .. Sorry for coming back late ; didn't check earlier . .. Well I spare time to list down my learnings since in future if anyone else faces same issue it can help him 🙂
We are building pipeline using Jenkins so may be after we are done I will share the experience on that as well in coming month.
Interesting blog, Taranamjit. Thanks for sharing.
I'm having issues with configuring my first repo and suspect the vSID is not setup correctly. Are able to add a screenshot of the STMS configuration that the 'Initialise System' step produces?
hi Ian ,
Thank you . I am attaching the STMS image ; I have mocked up my S/4HANA system name in the screen shot .ZG19 is the transport layer generated with Initialize step . Now any objects I assign to Transport layer ZG19 are moved to GitHub when TR is released
Thanks for this, I now have a similar setup after following the guidance below as well.
My virtual system was not created by the 'Initialise System' and hence I had to do it manually.
Good one . Thanks for sharing
Thanks for sharing. Very detailed post.
I read you are building the pipeline using Jenkins, wondering if you have already observed any significant effort savings and impact on RICEFW objects.
Effort Savings are in overall process like with CI and CD for one customer we integrated JIRA as well . So as and when status of JIRA request is set ; pipeline will Triger automatic ATC and push of TR in Q system no need to release/ import TR manually . Now with 2020 as SAP has further enhanced ; there are more use cases and benefits of using CI and CD with SAP which is well covered in recent Open SAP course .
We are on SAP S/4 HANA 1909 and SP01.
I managed to the do above prerequisites. I have created a repository in github and I have a working directory as explained. My status 'CREATED' doesn't change to status 'READY'. Is there anything else that I need to do? I can't understand why this is not cloning.
If you can give me a clue would be really appreciated.
I can provide screen shots if you want.
hi Asanka ,
Seems you havent done Clone Repository yet ; once Repository is cloned it will show as READY . Also do check central note 2821718 and ensure that all the notes for your version have been applied
Thank you for your reply!
I tried cloned the repository. Yet it does not change the status to 'READY'.
We can't apply the note 2821718 yet I have followed the instructions and applied couple of other notes. How do we invoke the health check?
Above configuration is there anything that I need to do in the working directory?
Thanks for your help.
By applying the required Notes or SP pack you should be able to enable Health Check and Wizard in 1909 system as well . So if all the new Notes have been applied your app UX will have new buttons for Enable and Health check . Once you Configure Enable then you can use Health Check to validate . This Simplified UX is much easier to use .