gCTS configuration and integration with GitHub
SAP has launched Git-enabled Change and Transport system (gCTS) back in 2019 with S/4 HANA 1909 to manage the ABAP changes which can leverage Git as an external system for Version Management.
Now let us understand what are the planned use cases of gCTS are:
Planned use case 1: You need to build N+1 landscape for new project requirement
Using gCTS we can create a Feature branch and a Maintenance branch and perform changes in the same N landscape development system in parallel.
We will understand how this can be achieved in further blogs where we will discuss how gCTS works.
Planned use case 2: Two developers need to work on the same object parallelly.
In this scenario using gCTS Team A and Team B can work on the changes parallelly and merge them into Git Repository. Once the changes are merged to the Git repository these changes can be pulled into the Master branch and deployed changes in QA. During the merging of changes into QA, gCTS will take care of version management using Solve conflict method, which will be discussed in the future blog.
Now that we saw the use cases of gCTS let us discuss how to configure these tools in your landscape.
First let’s compare what are different Transport and Deployment options provided by SAP
Now let’s deep dive in to gCTS configuration part.
To enable gCTS we require a Git platform host, an ABAP system in which code will be developed, and a CI server (which is optional) which can be used to automate development cycle.
Below are the prerequisites which are required to enable gCTS for ABAP system:
- An SAP S/4 HANA 1909 or 2020 system
- An SapMachine (with version 11 or higher) or comparable JRE
- Import relevant SAP Central note and based on SP level
- Create gCTS related working directories at OS level
Once the prerequisites are met and the ABAP system is ready, our next step is to proceed with the configuration. We will discuss the configuration part in 3 steps which are
- gCTS configuration on ABAP system
- Git enablement
- CI/CD pipeline configuration (optional)
Let us go through each of these steps to better understand the configuration.
1. gCTS Configuration:
We need to perform the below steps in the ABAP system to complete the gCTS configuration.
- Validate required SAP notes are implemented
- Validate required ports are opened
- gCTS Fiori UI enablement
- Set parameters, Initialize systems
Apart from the above mentioned, we also need to create repositories on ABAP system which we will discuss in next blog.
- The very first step is to make sure the required notes are implemented in your ABAP system.
- 2821718 – Central Note for Git-enabled Change and Transport System (gCTS)
- 2827411 – Delivery of SAP Fiori app for Git-enabled Change and Transport System (gCTS)
- In below steps we will see how to activate Fiori and required authorizations to assign to GCTSOBSERVER user which is used for running the Observer job and the parameters to enable communication between Git and ABAP system.
- As a first step please make sure to activate below oDATA and ICF Services related to gCTS.
· Component · External Technical Name
· OData Service
· ICF Service
· ICF Service
- Next create a PFCG role with Catalogue ID: SAP_BASIS_TCR_T and assign that to the user who will configure gCTS. All the required authorizations are delivered as part of role SAP_BC_GCTS_ADMIN.
- Make sure you activate services CTS_ABAPVCS and BC_CTS_GIT in your ABAP front-end server.
- Once the authorizations are maintained please make sure you open the below ports in order to establish communication between ABAP and Git.
- Port 22 is required for SSH communication between the Git client on the operating system of the ABAP server and the remote repository on the Git server.
- Port 443 is required for secure communication (HTTPS) between the ABAP runtime and the remote repository on the Git server.
- Once the ports and services are activated launch the gCTS Fiori app and perform the below steps:
- Click on Enable gCTS and provide the required parameters
- Provide gCTS directory path which is created at OS level and click on Save
- In next step provide Java Runtime variable path and click on Save
- In next step please provide path to abap2vcs.jar path which enables communication between ABAP and Git. Required variables are provided under parameter JAVA_RUNTIME. Click Save and proceed
- And now in next step we need to Schedule the observer job. This can be achieved by just clicking on Initialize system shown below:
- Now click on Step 5 and proceed with summary and Health check.
- All the parameters should be Green and OK.
- After the configuration is completed we can see the parameters provided under Configuration tab as below:With this step we can confirm that gCTS configuration is completed in ABAP system.
Next step is to Clone repositories and Create branches in gCTS. We will discuss this steps post GitHub configuration.
2. GitHub Platform:
Once gCTS configuration is completed our next step is to create repositories in Git which are used to configure gCTS. Below are the detailed steps on how we can create repositories in Git.
- Go to Github.com
- Create an account or proceed with login if you already have one
- Once logged in please create repository as below:
- Create both Workbench and Customizing repositories for the changes. Select below options and click on Create Repository:
- Now create customizing repository also in the same way
This concludes the repository creation on GitHub end.
In next blog we will discuss on CI/CD pipeline configuration, how to create repositories on ABAP system and how to work with change development and deployment process.
For further information on gCTS please go through below blogs and wiki.
This is not correct, see https://open.sap.com/courses/gcts1/question/c8ace56e-514e-4303-b079-e7dff1151538 for clarifications by SAP
You can do development "alternating maintenance and feature development".
If Team A and Team B wants to work in parallel on the same object, a doubled system landscape is required, assuming you want to use the SAP tooling for development.
Or alternate so that only Team A or Team B can work on the object in the same system.
Thank you Lars for your input.