How to integrate SAP Cloud Transport Management into your CI/CD pipeline
If you wish for a standardized, enterprise-ready change management process for your applications running on SAP Business Technology Platform, SAP Cloud Transport Management* is the right service for you. It allows you to manage the transport of development artifacts and application-specific content (such as from SAP Cloud Integration) between different SAP BTP accounts and adds transparency on the audit trail of changes – get information about who performed which changes in your production accounts and when. Also, SAP Cloud Transport Management allows you to establish a separation of concerns: for example, a developer (of an application or SAP BTP content artifacts) can trigger the propagation of the latest changes, which then results in a transport handled by a central ops team.
You can use SAP Cloud Transport Management as an additional layer of control to manage your production landscape (DEV, PRE-PROD, PROD). Also, you have the option to complement a Continuous Integration (CI) approach to, firstly, apply agile principles to your DEV account and then, secondly, apply transport management to implement rules, policies and schedules to control releases to production. Thereby, you get the best out of two worlds with the right mix of agility and control.
For this combined approach, a smooth integration from the automated CI environment into the controlled transport management environment is key. To enable this scenario, the transport management service is integrated into SAP Continuous Integration and Delivery service and SAP’s library for continuous delivery with open-source and third-party CI/CD servers – Project “Piper”.
With this integration, your fully qualified Multitarget Application (MTA) archive gets automatically handed over to the SAP Cloud Platform Transport Management service, along the following typical process flow:
- First, the artefact is put into the import queue of the target node specified in the CI pipeline (e.g. Pre-PROD)
- Then, an operator can manually trigger or schedule the import, which results in a physical deployment of the MTA archive into the corresponding sub-account
- Once the import is executed, a transport is triggered along the defined transport route, so that the MTA archive reaches the import queue of the next node (e.g. PROD)
- There, again, the physical import can be triggered manually or via a job scheduler
How to enable the SAP Cloud Transport Management service in your CI/CD pipeline?
- Ensure that you have access to the SAP Cloud Transport Management service. For more information, see Provide Access to SAP Cloud Transport Management.
- Make sure you have set up the SAP Cloud Transport Management service and created a service key. For more information, see Set Up the Environment to Transport Content Archives directly in an Application.
- Configure your SAP Cloud Transport Management landscape.
- Store the SAP Cloud Platform Transport Management service key in the Jenkins secure store as “secret text” credentials.
- Enable the step “tmsUpload” in your Project “Piper” environment by choosing one of the following options:
- Configure SAP Cloud Transport Management within the Release Stage of the general purpose pipeline of Project “Piper” or
- Enable SAP Cloud Transport Management within the ProductionEnvironment stage of your general purpose pipeline or
- Reference the “tmsUpload” step in your existing pipeline.
Thanks for the great blog! Does ABAP in cloud will also use similar concept? The reason for asking is to know the role of ABAPgit if it fits somewhere in this strategy which it should ideally
Thanks a lot for your kind feedback, really appreciated! We are working on an integration of SAP Cloud Platform ABAP environment into SAP Cloud Platform Transport Management, which would allow to trigger the import of ABAP content. We are still in progress to finalize the definition of the corresponding use cases and scenarios, please expect more information on these in the upcoming time.
P.S.: In addition, for ABAP DevOps in general, please be aware of the corresponding statement of direction about CI in an ABAP environment (using gCTS).
Hi Boris Zarske
I can see lots of development in this area and that's great. Can I ask if there is a guided workaround to enable uploading artefacts (.mtar) from an Azure DevOps pipeline?
Thanks a lot for reaching out! For this, the public Upload API from SAP CP Transport Management might help, see its description in the SAP API Hub at: https://api.sap.com/api/TMS_v2/resource. As outlined in the road map of our service, we plan to provide further APIs (for import, monitoring, log retrieval) with future updates.
Thanks a lot for your informative blog.
It will be very helpful if you can help us with complete overview of how to configure CI/CD server and transport management system for individual subaccount and how to integrate BTP HANA project with SAP CI/CD server and CI/CD server with Transport management system.
Thanks for your kind feedback and your question!
If you want to configure the hand-over from a project 'Piper' pipeline into SAP Cloud Transport Management, you could check out the corresponding 'Piper' scenario here. Also, there is a great blog post and video from my colleague Murali Shanmugham that outlines the setup in detail.
Our colleague Jacek Klatt has extended that scenario then with SAP HANA Cloud, also described in a highly recommended blog post and video.
In addition, we want to come up with a new blog post that explains the technical setup of our SAP TechEd demo - I can provide the link to this new blog post hopefully in the next days here.
If it should rather be about integration into on-premise enhanced Change and Transport System (CTS+), you could take a look at project 'Piper' step transportRequestUploadCTS and the following information on how to set up CTS+ for SAP BTP:
I hope this helps!
Hi Boris Zarske
It looks like the Piper command "tmsUpload" is specific for Jenkis. if yes, what other command line tool could you recommend me to use from Azure DevOps pipeline to run tmsUpload?
I could not find it in the list of commands showed by --help.
Hi Alexander Clen Riva,
You are correct, the migration of the project 'Piper' library steps for SAP Cloud Transport Management service to Golang is still in progress, which would allow to use them also in non-Jenkins environments.
Until then, you could consider to use the REST APIs to trigger the upload, as also described here: Integrate a CI/CD Pipeline on Azure DevOps with DevOps-Related Services from SAP BTP, Cloud Foundry | SAP Blogs