https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Continuous-Integration-and-Delivery-blog-posts.xml SAP Community - SAP Continuous Integration and Delivery 2024-05-20T11:12:39.758103+00:00 python-feedgen SAP Continuous Integration and Delivery blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-sap/video-learning-map-sap-cloud-alm-for-implementation/ba-p/13550341 Video Learning Map - SAP Cloud ALM for Implementation 2023-03-15T14:20:19+01:00 Jagmohan_Chawla https://community.sap.com/t5/user/viewprofilepage/user-id/64810 <P class="reader-text-block__paragraph">As you begin your journey in SAP Cloud ALM, yes you can read&nbsp;<A href="https://support.sap.com/en/alm/sap-cloud-alm/implementation/sap-cloud-alm-implementation-expert-portal.html" target="_blank" rel="noopener noreferrer">Expert Portal</A>&nbsp;and loads of&nbsp;<A href="https://blogs.sap.com/2021/01/08/understanding-project-and-task-management-in-sap-cloud-alm/" target="_blank" rel="noopener noreferrer">Blog Posts</A>&nbsp;but if you are short of time why not just finish a video series.</P><BR /> <P class="reader-text-block__paragraph">If you want to quickly understand the End to End Story then just watch this&nbsp;<A href="https://www.youtube.com/watch?v=7Rf0pLlkvc0&amp;list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l&amp;index=3" target="_blank" rel="nofollow noopener noreferrer">video</A>.</P><BR /> <P class="reader-text-block__paragraph">If you want to go deep and use SAP Cloud ALM productivity then follow this sequence</P><BR /> <P class="reader-text-block__paragraph"><A href="https://www.youtube.com/watch?v=WNUx7KE4tqU&amp;list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l&amp;index=8" target="_blank" rel="nofollow noopener noreferrer">Setup a Project</A></P><BR /> <P class="reader-text-block__paragraph"><A href="https://www.youtube.com/watch?v=DJBgs0Hy7eE&amp;list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l&amp;index=9" target="_blank" rel="nofollow noopener noreferrer">Setup a Release and Deployment Plan</A></P><BR /> <P class="reader-text-block__paragraph"><A href="https://www.youtube.com/watch?v=jIEOvNz-mAo&amp;list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l&amp;index=4" target="_blank" rel="nofollow noopener noreferrer">Deep Dive Project Management</A></P><BR /> <P class="reader-text-block__paragraph"><A href="https://www.youtube.com/watch?v=Q5Q2qJEDIbU&amp;list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l&amp;index=2" target="_blank" rel="nofollow noopener noreferrer">Deep Dive Task Management</A></P><BR /> <P class="reader-text-block__paragraph"><A href="https://www.youtube.com/watch?v=eqx8ojTYWsM&amp;list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l&amp;index=1" target="_blank" rel="nofollow noopener noreferrer">Deep Dive Requirement Management</A></P><BR /> <P class="reader-text-block__paragraph"><A href="https://www.youtube.com/watch?v=Q7zmCLyyXKI&amp;list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l&amp;index=5" target="_blank" rel="nofollow noopener noreferrer">Deep Dive Features</A></P><BR /> <P class="reader-text-block__paragraph">Hope you find this useful.</P><BR /> &nbsp;<BR /> <H1 id="toc-hId-832906115">Next Steps</H1><BR /> Bookmark <A href="https://support.sap.com/en/alm/sap-cloud-alm/implementation/sap-cloud-alm-implementation-expert-portal.html" target="_blank" rel="noopener noreferrer">Expert Portal</A> and <A href="https://www.youtube.com/playlist?list=PLFrwZZeBUtfgxyvWRj9619jFwlUcYho0l" target="_blank" rel="nofollow noopener noreferrer">YouTube Playlist</A> 2023-03-15T14:20:19+01:00 https://community.sap.com/t5/technology-blogs-by-sap/we-made-our-ci-cd-pipelines-more-flexible/ba-p/13554294 We Made Our CI/CD Pipelines More Flexible 2023-03-21T21:47:21+01:00 former_member535766 https://community.sap.com/t5/user/viewprofilepage/user-id/535766 With SAP Continuous Integration and Delivery, we strive for simplicity: Our service on SAP BTP offers ready-made pipelines for various SAP-specific development scenarios. With them, we want to help you implement CI/CD quickly and without having to care about the underlying infrastructure. Simplicity, however, shouldn’t mean inflexibility. That’s why we’ve added additional configuration options to our pipelines to make sure they work for your purposes.<BR /> <BR /> In different stages of your CI/CD pipelines, you can now add additional credentials and variables. This lets you, for example, access a private repository when building your application or set a DEBUG flag when running your tests.<BR /> <BR /> Have a look at the following example to see how our new feature works:<BR /> <H1 id="toc-hId-833024476">Use Private npm Packages in Your CI/CD Job</H1><BR /> Add an access token to the <STRONG>Build</STRONG> stage of your SAP Continuous Integration and Delivery job to access private npm packages during its execution.<BR /> <H2 id="toc-hId-765593690">Procedure</H2><BR /> <OL><BR /> <LI>In your source code repository, create a custom .npmrc file with the following content:<BR /> <PRE class="language-javascript"><CODE>//registry.npmjs.org/:_authToken=${NPM_TOKEN}​</CODE></PRE><BR /> <STRONG>Note:<BR /> </STRONG>You specify a literal value of ${NPM_TOKEN}. The npm CLI will replace this value with the contents of the NPM_TOKEN environment variable. Do not put a token in this file.</LI><BR /> <LI>Check in your .npmrc file.</LI><BR /> <LI>In SAP Continuous Integration and Delivery, create a new or edit an existing SAP Cloud Application Programming Model job.</LI><BR /> <LI>In the <STRONG>Build</STRONG> stage, choose <STRONG>+</STRONG> <EM>(Add credentials variable)</EM> next to <STRONG>Additional Credentials</STRONG>.<BR /> As a result, the <STRONG>Add Credentials Variable</STRONG> pop-up window opens.</LI><BR /> <LI>For <STRONG>Name</STRONG>, enter NPM_TOKEN.</LI><BR /> <LI>Open the <STRONG>Credentials Name</STRONG> drop-down list and choose <STRONG>Create Credentials</STRONG>.<BR /> As a result, the <STRONG>Create Credentials</STRONG> pop-up window opens.</LI><BR /> <LI>For <STRONG>Credentials Name</STRONG>, enter mynpmtoken.</LI><BR /> <LI>From the <STRONG>Type</STRONG> drop-down list, choose <STRONG>Secret Text</STRONG>.</LI><BR /> <LI>In the <STRONG>Secret</STRONG> text field, enter your token.</LI><BR /> <LI>Choose <STRONG>Create</STRONG>.<BR /> As a result, your newly created credential is used for <STRONG>Credentials Name</STRONG>.</LI><BR /> <LI>Choose <STRONG>OK</STRONG>.</LI><BR /> <LI>Create and run your job.</LI><BR /> </OL><BR /> <H2 id="toc-hId-569080185">Result</H2><BR /> You can now use private npm packages with your SAP Continuous Integration and Delivery job.<BR /> <BR /> That’s cool, isn’t it? Have a look at our documentation and try it out yourself: <A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY/99c72101f7ee40d0b2deb4df72ba1ad3/c8314b6c8e564f42925e9d10453bd541.html?version=Cloud&amp;language=en-US" target="_blank" rel="noopener noreferrer">Adding Environment Variables to Stages | SAP Help Portal</A><BR /> <BR /> We’re also working on adding even more flexibility to our pipelines. Stay tuned!<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp; 2023-03-21T21:47:21+01:00 https://community.sap.com/t5/technology-blogs-by-sap/upcoming-webcast-series-the-open-space-of-application-operations-within-sap/ba-p/13549383 Upcoming webcast series “The Open Space of Application Operations within SAP BTP” 2023-04-11T17:16:40+02:00 BorisZarske https://community.sap.com/t5/user/viewprofilepage/user-id/87 I am sure we do all agree that application operations is a crucial part to provision and run any app on SAP BTP – only when we make sure that we can provide our apps with the right performance and availability, they will bring the expected value to our end users and our business.<BR /> <BR /> To reflect this, we decided to complement the currently running <A href="https://url.sap/46elii" target="_blank" rel="nofollow noopener noreferrer">The Universe of SAP BTP in a Nutshell</A> webcast series with an accompanying one, about <A href="https://url.sap/5ptvfa" target="_blank" rel="nofollow noopener noreferrer">The Open Space of Application Operations within SAP BTP</A>.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/04/The-Open-Sapce-of-Application-Operations-series-1.png" /></P><BR /> <P class="image_caption" style="text-align: center;font-style: italic">The Open Space of App Operations webcast series</P><BR /> Starting in April, you can expect to get additional information and insights on different aspects around operating your apps on SAP BTP – after an overview session, we plan to focus on a lot of examples and demos that shall allow you to make the next steps:<BR /> <UL><BR /> <LI>On April 20<SUP>th</SUP>, we start with an overview session about <STRONG>DevOps with SAP BTP</STRONG> – as more and more development teams strive for a more agile development approach, it is crucial to understand how your ops teams can cope with this demand, by offering a very low entry barrier without ignoring the more strict boundary conditions you normally face in SAP enterprise environments.<BR /> If you want to get an overview and latest news + a demo of our Pipeline-as-a-Service offering, this is the right session for you: <A href="https://youtube.com/live/qSreKl3xFqo?feature=share" target="_blank" rel="nofollow noopener noreferrer">DevOps with SAP BTP – how you can use SAP BTP to lower the entry barrier for your dev teams to benefit from agile approaches in SAP enterprise environments, while being able to stick to existing operations processes</A><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/04/DevOps.jpg" /></LI><BR /> <LI>One week later, on April 27<SUP>th</SUP>, we will continue with details on how you can <STRONG>integrate SAP Cloud Transport Management service into Application Lifecycle Management</STRONG> – so, if you plan to orchestrate your cloud changes from SAP Solution Manager or SAP Cloud ALM or just want to get a detailed demo on what to expect, join this session here: <A href="https://youtube.com/live/vIzF2GBTGqw?feature=share" target="_blank" rel="nofollow noopener noreferrer">Integration of SAP Cloud Transport Management into Application Lifecycle Management solutions</A></LI><BR /> <LI>On May 11<SUP>th</SUP>, get insights on how to implement a more reactive way of working by setting up <STRONG>automated alerts</STRONG> with SAP Alert Notification service of SAP BTP and SAP Automation Pilot service - on the example of a cloud app (developed via SAP Build Apps) using SAP HANA Cloud: <A href="https://youtube.com/live/3eac-Gtu0Tk?feature=share" target="_blank" rel="nofollow noopener noreferrer">Using alerting and technical ops automation for synthetic monitoring</A></LI><BR /> <LI>If you use <STRONG>SAP Event Mesh</STRONG>, mark May 25<SUP>th</SUP> in your calendar for this session about how to use SAP Alert Notification service and SAP Automation Pilot for monitoring, alerting and automated remediation: <A href="https://youtube.com/live/No-ppG6lB-s?feature=share" target="_blank" rel="nofollow noopener noreferrer">Monitoring, alerting and remediations on failed events in SAP Event Mesh</A></LI><BR /> <LI>And if you want to learn how you can reduce your efforts around <STRONG>operating SAP HANA Cloud</STRONG>, join us on June 1<SUP>st</SUP>: <A href="https://youtube.com/live/qGJ5NjIwJCQ?feature=share" target="_blank" rel="nofollow noopener noreferrer">SAP HANA Cloud: recurrent monitoring and an automated status report generation</A></LI><BR /> </UL><BR /> &nbsp;<BR /> <BR /> I hope to welcome many of you in our sessions! <STRONG>Register here free-of-charge: <A href="https://url.sap/5ptvfa" target="_blank" rel="nofollow noopener noreferrer">The Open Space of Application Operations within SAP BTP</A>.</STRONG><BR /> <BR /> &nbsp;<BR /> <BR /> If you should be unsure which session to join, we will offer a quick teaser of the complete webcast series on April 18<SUP>th</SUP>&nbsp;here: <A href="https://url.sap/46elii" target="_blank" rel="nofollow noopener noreferrer">The Universe of SAP Business Technology Platform in a Nutshell series – Application Operations Overview</A><BR /> <BR /> &nbsp;<BR /> <BR /> And if you should have ideas for other operations topics around SAP BTP, please leave a comment! 2023-04-11T17:16:40+02:00 https://community.sap.com/t5/technology-blogs-by-sap/extensible-pipelines-for-sap-continuous-integration-and-delivery/ba-p/13564893 Extensible Pipelines for SAP Continuous Integration and Delivery 2023-05-30T09:16:38+02:00 holger_partsch https://community.sap.com/t5/user/viewprofilepage/user-id/788609 <P dir="auto">The SAP Continuous Integration and Delivery service just reached a new stage of its evolution: Up until now, the available pipelines were made of a fixed set of building blocks, such as: build, test, scan your code and deploy. You could choose which of those blocks you wanted for your pipeline, but you couldn't create your own.</P><BR /> <P dir="auto">That's about to change. Pipelines now have extension points that allow you to implement your own logic in the form of scripts.</P><BR /> <P dir="auto">In the next paragraph, I'll give some background on the why and the how. If you're only interested in how to use the new feature, feel free to skip it.</P><BR /> <BR /> <H2 dir="auto" id="toc-hId-963036481">A Bit of History</H2><BR /> <P dir="auto">When we productized the SAP Continuous Integration and Delivery service around 2020, the main quality we aimed for was simplicity, which has two main aspects for the service:</P><BR /> <BR /> <UL dir="auto"><BR /> <LI>enabling you to implement CI/CD (continuous integration and delivery) without owning any infrastructure, for example, build servers</LI><BR /> <LI>focusing on SAP development scenarios (for example, CAP, Fiori) to provide ready-made pipelines that you can use without any additional scripting</LI><BR /> </UL><BR /> <P dir="auto">That made sense, because our target audience were customers at the beginning of their CI/CD journey. On the other end of spectrum were customers who had already invested in CI/CD. They were not our main target because we knew that CI/CD requirements are highly specific within each organization, and our service wouldn't have the flexibility to accommodate that.</P><BR /> <P dir="auto">Fast forward to the present. The service is well received by its target audience: Customers who only had manual processes before now use automated pipelines.</P><BR /> <P dir="auto">But we also received feedback that surprised us:</P><BR /> <BR /> <BLOCKQUOTE><BR /> <P dir="auto">We like the Continuous Integration and Delivery service a lot, so we're going to migrate our complete development landscape (hundreds of projects) to the service. But could you please implement support for our Radar Scans?</P><BR /> </BLOCKQUOTE><BR /> <P dir="auto">As far as this story goes, Radar Scans are clearly a fictional example. However the point stands: for static code checking, we only support Sonar Scans. It's not likely that we'll support other code scanning tools in the near future, because to keep our configuration UIs simple, we decided to support only one mainstream tool for each area of functionality.</P><BR /> <P dir="auto">Now you can see the dilemma we are facing: How can we meet diverse customer requirements and keep the service simple at the same time?</P><BR /> <BR /> <H2 dir="auto" id="toc-hId-766522976">Making Pipelines Extensible</H2><BR /> <P dir="auto">The only scalable solution is to enable you to help yourself. To do so, we added extension points to the pipelines that allow you to run arbitrary commands and scripts. So it's scripts after all, you say? Yes, true. But the important thing is that you can get started without scripting and continue so as long as you stick to the mainstream stuff we support. Later, when you need that extra bit of functionality, scripts are the way to go.</P><BR /> <BR /> <H3 dir="auto" id="toc-hId-699092190"><A id="user-content-freestyle-configuration-and-freestyle-steps" class="anchor" href="https://github.wdf.sap.corp/cloud-ci/schreibstube/blob/master/2023-05-pipeline-flexibility-big-picture/blog.md#freestyle-configuration-and-freestyle-steps" aria-hidden="true" target="_blank" rel="nofollow noopener noreferrer"></A>Freestyle Configuration and Freestyle Steps</H3><BR /> <P dir="auto">Now let's have a look at those extension points. Before adding freestyle steps, we introduced freestyle configuration. With this&nbsp;<A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY/99c72101f7ee40d0b2deb4df72ba1ad3/c8314b6c8e564f42925e9d10453bd541.html?version=Cloud&amp;locale=en-US" rel="noopener noreferrer" target="_blank">feature</A>&nbsp;you can add arbitrary environment variables to all processes executed within a stage, and even inject secrets.</P><BR /> <P dir="auto">You can use freestyle configuration when configuring those stages which are scriptable by nature. The <EM>build</EM>&nbsp;stage is a typical example, because no matter which build tool you use (be it maven or npm), it's easy to integrate custom scripts into the build process. Freestyle configuration now unlocks lots of options. For an example on how powerful it is, see the blog post&nbsp;<A href="https://blogs.sap.com/2023/03/21/we-made-our-ci-cd-pipelines-more-flexible/" rel="noopener noreferrer" target="_blank">Accessing Private Registries</A>.</P><BR /> <P dir="auto">But what about those stages that are not scriptable by nature? Recall the question: How can I do Radar if the service only provides Sonar?</P><BR /> <P dir="auto">To cover this, we added two extension points per stage, called&nbsp;<CODE>runFirst</CODE>&nbsp;and&nbsp;<CODE>runLast</CODE>.</P><BR /> <P dir="auto" style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/05/UI_extendedStage.png" height="456" width="416" /></P><BR /> <P dir="auto">The semantics are as expected:</P><BR /> <BR /> <UL dir="auto"><BR /> <LI>the&nbsp;<CODE>runFirst</CODE>&nbsp;command is executed before everything else in that stage</LI><BR /> <LI>the&nbsp;<CODE>runLast</CODE>&nbsp;command is executed after everything else in that stage</LI><BR /> </UL><BR /> <P dir="auto">If you decide to enable the preconfigured steps in the stage (for example, Sonar scan), the&nbsp;<CODE>runFirst</CODE>&nbsp;and&nbsp;<CODE>runLast</CODE>&nbsp;commands can be used for preparation and post-processing.</P><BR /> <P dir="auto">If you decide to do something else instead, use one of the extension points to execute it.</P><BR /> <P dir="auto">Sure, a single command is often not enough, but you can just add a more complex script to your source repository and use the command to start it.</P><BR /> <P dir="auto">If this makes you curious, check out the&nbsp;<A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY/99c72101f7ee40d0b2deb4df72ba1ad3/c05a2522c90a40069ead07bd81df37ab.html?version=Cloud" target="_blank" rel="noopener noreferrer">official documentation</A>.</P><BR /> <BR /> <H3 dir="auto" id="toc-hId-502578685"><A id="user-content-container-images" class="anchor" href="https://github.wdf.sap.corp/cloud-ci/schreibstube/blob/master/2023-05-pipeline-flexibility-big-picture/blog.md#container-images" aria-hidden="true" target="_blank" rel="nofollow noopener noreferrer"></A>Container Images</H3><BR /> <P dir="auto">Being able to execute a script sounds great, but you might want to know in which environment it runs and which tools you can use. Like everything else in the Continuous Integration and Delivery service, custom commands are executed in a Linux container.</P><BR /> <P dir="auto">As the base image for that container, we decided for an image containing the standard Linux shell tooling plus a recent&nbsp;<CODE>node</CODE>&nbsp;runtime and&nbsp;<CODE>npm</CODE>.</P><BR /> <P dir="auto">Because JavaScript is the most popular implementation language on SAP Business Technology Platform, we decided to go for&nbsp;<CODE>node</CODE>&nbsp;as a scripting language. Using&nbsp;<CODE>npm</CODE>, you can easily bootstrap additional dependencies.</P><BR /> <P dir="auto">Chances are you're not happy with the choice we've made. Because, obviously,&nbsp;<CODE>lua</CODE>&nbsp;is the only acceptable scripting language. But don't despair. Just get in contact with us and tell us about your requirements, because the plan is to make the container image configurable. At first, it might be a fixed list of images maintained by us. But eventually, we want to enable you to "bring-your-own-image", despite some challenging compliance aspects that it might bring along.</P><BR /> <BR /> <H2 dir="auto" id="toc-hId-176982461"><A id="user-content-conclusion" class="anchor" href="https://github.wdf.sap.corp/cloud-ci/schreibstube/blob/master/2023-05-pipeline-flexibility-big-picture/blog.md#conclusion" aria-hidden="true" target="_blank" rel="nofollow noopener noreferrer"></A>Conclusion</H2><BR /> <P dir="auto">Now you know how we make pipelines in SAP Continuous Integration and Delivery more flexible and our motivation behind it. If you have remarks or suggestions, please comment or contact me directly.</P> 2023-05-30T09:16:38+02:00 https://community.sap.com/t5/technology-blogs-by-sap/next-level-of-flexibility-additional-commands-in-ci-cd-pipelines/ba-p/13567178 Next Level of Flexibility: Additional Commands in CI/CD Pipelines 2023-06-22T15:12:15+02:00 former_member535766 https://community.sap.com/t5/user/viewprofilepage/user-id/535766 <P dir="auto">With SAP Continuous Integration and Delivery, we like to keep things simple and easy to use. That’s why we’ve created preconfigured CI/CD pipelines for SAP-specific development scenarios. These pipelines consist of several building blocks, so-called&nbsp;<EM>stages</EM>. Each stage describes a task such as&nbsp;<EM>build this app</EM>,&nbsp;<EM>run these tests</EM>, and&nbsp;<EM>deploy this to pre-production</EM>. When running a pipeline job, each stage performs various smaller tasks - that is,&nbsp;<EM>steps</EM>&nbsp;- one after the other to meet its purpose.</P><BR /> <P dir="auto">Our goal was to cover standard scenarios to onboard you as quickly as possible. But sometimes, standard scenarios aren't sufficient. We’ve therefore already implemented the option to add additional credentials and variables to most stages within our CI/CD pipelines (see&nbsp;<A href="https://blogs.sap.com/2023/03/21/we-made-our-ci-cd-pipelines-more-flexible/" rel="noopener noreferrer" target="_blank">We Made Our CI/CD Pipelines More Flexible</A>). As a second step in our journey to more flexibility, we’ve now added extension points that let you add your own commands before or after any other step within a stage.</P><BR /> <P dir="auto">You can extend our pipelines with any kind of additional JavaScript tasks, which will then be executed within a Node.js Docker image. Of course, you also can combine additional commands with additional credentials and variables.</P><BR /> <P dir="auto">For more information on why and how we want to make our CI/CD pipelines more flexible, see&nbsp;<A href="https://blogs.sap.com/2023/05/30/extensible-pipelines-for-sap-continuous-integration-and-delivery/" rel="noopener noreferrer" target="_blank">Extensible Pipelines for SAP Continuous Integration and Delivery</A>.</P><BR /> <P dir="auto">When does it make sense to enhance our standard pipeline functionality? Let’s have a look at an example:</P><BR /> <BR /> <H2 dir="auto" id="toc-hId-963119070"><A id="user-content-creating-a-github-release-with-an-additional-build-artifact" class="anchor" href="https://github.wdf.sap.corp/cloud-ci/schreibstube/blob/marcusholl/pr/pipelineFlexibilityBlogPost/2023-05-pipeline-flexibility/README.md#creating-a-github-release-with-an-additional-build-artifact" aria-hidden="true" target="_blank" rel="nofollow noopener noreferrer"></A>Creating a GitHub Release with an Additional Build Artifact</H2><BR /> <P dir="auto">Add a command for a GitHub release with an attached&nbsp;<CODE>.mtar</CODE>&nbsp;file to the Release stage of your job.</P><BR /> <BR /> <H3 dir="auto" id="toc-hId-895688284"><A id="user-content-context" class="anchor" href="https://github.wdf.sap.corp/cloud-ci/schreibstube/blob/marcusholl/pr/pipelineFlexibilityBlogPost/2023-05-pipeline-flexibility/README.md#context" aria-hidden="true" target="_blank" rel="nofollow noopener noreferrer"></A>Context</H3><BR /> <P dir="auto">In this example, you will add a GitHub release as last step to the Release stage of your SAP Continuous Integration and Delivery job. This GitHub release contains the&nbsp;<CODE>.mtar</CODE>&nbsp;file that results from the Build stage. To reuse files in later stages of a job, they must be placed into the so-called&nbsp;<CODE>cloudcitransfer</CODE>&nbsp;folder in your project sources. This folder is created automatically at the start of a pipeline run.</P><BR /> <BR /> <H3 dir="auto" id="toc-hId-699174779"><A id="user-content-procedure" class="anchor" href="https://github.wdf.sap.corp/cloud-ci/schreibstube/blob/marcusholl/pr/pipelineFlexibilityBlogPost/2023-05-pipeline-flexibility/README.md#procedure" aria-hidden="true" target="_blank" rel="nofollow noopener noreferrer"></A>Procedure</H3><BR /> <OL><BR /> <LI><BR /> <P dir="auto">In your project in your source code repository, create a file called&nbsp;<CODE>create-release/create-release.js</CODE>&nbsp;and paste the following content into it:</P><BR /> <BR /> <PRE class="language-javascript"><CODE>const { Octokit } = require("@octokit/core");<BR /> const fs = require("fs");<BR /> const dateFormat = require('date-and-time')<BR /> <BR /> //<BR /> // 1.) Retrieve all parameters from the environment.<BR /> // The corresponding environment variables are defined<BR /> // in the job.<BR /> <BR /> // If the GITHUB_TOKEN is a basic auth credential, the<BR /> // user and password are exposed with a trailing<BR /> // '_user' and '_password'.<BR /> var githubToken = process.env.GITHUB_TOKEN<BR /> var releaseNamePrefix = process.env.RELEASE_NAME_PREFIX;<BR /> var releaseTagPrefix = process.env.RELEASE_TAG_PREFIX;<BR /> var additionalAssetLabel = process.env.ADDITIONAL_ASSET_LABEL<BR /> <BR /> // CLOUDCI_GIT_COMMIT is not defined as additional environment variable<BR /> // for the stage. CLOUDCI_GIT_COMMIT is always injected into the environment<BR /> // for run-first and run-last commands.<BR /> var targetCommitish = process.env.CLOUDCI_GIT_COMMIT;<BR /> <BR /> // We expect the additional asset in the transfer folder one folder level above,<BR /> // since the script is launched from a subfolder.<BR /> var additionalAssetName = `../${process.env.ADDITIONAL_ASSET_PATH}`;<BR /> <BR /> //<BR /> // 2.) Use a suitable stategy for release suffixes<BR /> // to ensure that the same release does not already exist. A simple and<BR /> // straight-forward approach is to use a time stamp.<BR /> var releaseSuffix = dateFormat.format(new Date(), 'YYYY-MM-DD-HH-mm-ss')<BR /> <BR /> // 1: protocol<BR /> // 2: host<BR /> // 3: owner<BR /> // 4: repo<BR /> var gitRepoUrlParts = process.env.GIT_URL.match(/(.*):\/\/(.*)\/(.*)\/(.*).git/)<BR /> <BR /> var githubApiUrl=`${gitRepoUrlParts[1]}://${gitRepoUrlParts[2]}/api/v3/`<BR /> var owner=gitRepoUrlParts[3]<BR /> var repo=gitRepoUrlParts[4]<BR /> <BR /> //<BR /> // 3.) Define the client for communicating with the GitHub-API.<BR /> const octokit = new Octokit({<BR /> auth: githubToken,<BR /> baseUrl: githubApiUrl,<BR /> });<BR /> <BR /> <BR /> //<BR /> // 4.) Create the GitHub release.<BR /> octokit<BR /> .request("POST repos/{owner}/{repo}/releases", {<BR /> owner: owner,<BR /> repo: repo,<BR /> target_commitish: targetCommitish,<BR /> tag_name: `${releaseTagPrefix}-${releaseSuffix}`,<BR /> name: `${releaseNamePrefix}-${releaseSuffix}`,<BR /> draft: false,<BR /> prerelease: false,<BR /> generate_release_notes: false,<BR /> })<BR /> .then((res) =&gt; {<BR /> // response status code check not required. In case of an issue octokit throws an error<BR /> console.log(`Release created: status: '${res.status}', url: '${res.data.html_url}'`)<BR /> <BR /> //<BR /> // 5.) ... and we attach the additional asset<BR /> octokit.request(`POST ${res.data.upload_url}`, {<BR /> name: additionalAssetName,<BR /> label: additionalAssetLabel,<BR /> data: fs.readFileSync(additionalAssetName),<BR /> });<BR /> <BR /> console.log(`additional asset "${additionalAssetName}" uploaded`)<BR /> })</CODE></PRE><BR /> </LI><BR /> <LI>Create another file called&nbsp;<CODE>create-release/package.json</CODE>&nbsp;with the following content:<BR /> <PRE class="language-javascript"><CODE>{<BR /> "dependencies": {<BR /> "@octokit/core": "^4.2.0",<BR /> "date-and-time": "^3.0.0",<BR /> "fs": "^0.0.1-security"<BR /> }<BR /> }​</CODE></PRE><BR /> As a result, a GitHub release with an additional asset, namely an&nbsp;<CODE>.mtar</CODE>&nbsp;file that results from the build, is created.</LI><BR /> <LI><BR /> <P dir="auto">In SAP Continuous Integration and Delivery, create a new or edit an existing SAP Cloud Application Programming Model job.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">In the&nbsp;<STRONG>Build</STRONG>&nbsp;stage, choose&nbsp;<STRONG>+</STRONG>&nbsp;<EM>(Add command step)</EM>&nbsp;next to&nbsp;<STRONG>Additional Commands</STRONG>&nbsp;and then&nbsp;<STRONG>Run Last in Stage</STRONG>.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">As&nbsp;<STRONG>Command</STRONG>, enter:&nbsp;<CODE>cp &lt;PATH_TO_MTAR_FILE&gt; cloudcitransfer</CODE></P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">In the&nbsp;<STRONG>Release</STRONG>&nbsp;stage, choose&nbsp;<STRONG>+</STRONG>&nbsp;<EM>(Add command step)</EM>&nbsp;next to&nbsp;<STRONG>Additional Commands</STRONG>&nbsp;and then&nbsp;<STRONG>Run Last in Stage</STRONG>.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">As&nbsp;<STRONG>Command</STRONG>, enter:&nbsp;<CODE>cd create-release &amp;&amp; npm install &amp;&amp; node create-release.js</CODE></P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">Choose&nbsp;<STRONG>+</STRONG>&nbsp;<EM>(Add credentials variable)</EM>&nbsp;next to&nbsp;<STRONG>Additional Credentials</STRONG>.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">Enter a name for your credentials variable.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">From the&nbsp;<STRONG>Credentials Name</STRONG>&nbsp;drop-down list, choose&nbsp;<STRONG>Create Credentials</STRONG>.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">Enter the necessary information for your GitHub token and choose&nbsp;<STRONG>Create</STRONG>.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">Choose&nbsp;<STRONG>OK</STRONG>.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">Choose&nbsp;<STRONG>+</STRONG>&nbsp;<EM>(Add variable)</EM>&nbsp;next to&nbsp;<STRONG>Additional Variables</STRONG>.</P><BR /> </LI><BR /> <LI><BR /> <P dir="auto">Add the following variables:</P><BR /> </LI><BR /> </OL><BR /> <TABLE><BR /> <THEAD><BR /> <TR><BR /> <TD><STRONG>Name</STRONG></TD><BR /> <TD><STRONG>Value</STRONG></TD><BR /> </TR><BR /> </THEAD><BR /> <TBODY><BR /> <TR><BR /> <TD>RELEASE_NAME_PREFIX</TD><BR /> <TD>A prefix for the name of the release. A timestamp will be appended.</TD><BR /> </TR><BR /> <TR><BR /> <TD>RELEASE_TAG_PREFIX</TD><BR /> <TD>A prefix for the tag used for the release. A timestamp will be appended.</TD><BR /> </TR><BR /> <TR><BR /> <TD>ADDITIONAL_ASSET_LABEL</TD><BR /> <TD>The label for the additional asset</TD><BR /> </TR><BR /> <TR><BR /> <TD>ADDITIONAL_ASSET_PATH</TD><BR /> <TD>The path to the file, in which the additional asset is located. Provide the file which was copied into the cloudcitransfer folder in run-last of the build stage.</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> <OL dir="auto" start="15"><BR /> <LI>Create and run your job.</LI><BR /> </OL><BR /> &nbsp;<BR /> <H3 dir="auto" id="toc-hId-502661274">Configuration as Code</H3><BR /> <P dir="auto">The configuration for this example looks as follows:</P><BR /> <BR /> <PRE class="language-javascript"><CODE>---<BR /> general:<BR /> buildTool: "mta"<BR /> service:<BR /> buildToolVersion: "MBTJ11N16"<BR /> stages:<BR /> Build:<BR /> runLast:<BR /> command: "cp BAS_Sample_App.mtar cloudcitransfer"<BR /> Release:<BR /> credentialVariables:<BR /> - name: "GITHUB_TOKEN"<BR /> credentialId: "&lt;YOUR_GITHUB_TOKEN&gt;"<BR /> stringVariables:<BR /> - name: "RELEASE_NAME_PREFIX"<BR /> value: "experimental"<BR /> - name: "RELEASE_TAG_PREFIX"<BR /> value: "v0.0.1"<BR /> - name: "ADDITIONAL_ASSET_PATH"<BR /> value: "cloudcitransfer/BAS_Sample_App.mtar"<BR /> - name: "ADDITIONAL_ASSET_LABEL"<BR /> value: "BAS_Sample_App.mtar"<BR /> runLast:<BR /> command: "cd create-release &amp;&amp; npm install &amp;&amp; node create-release.js"<BR /> stages:<BR /> Build:<BR /> npmExecuteLint: false<BR /> Additional Unit Tests:<BR /> npmExecuteScripts: false<BR /> Malware Scan:<BR /> malwareExecuteScan: true<BR /> Acceptance:<BR /> cloudFoundryDeploy: false<BR /> npmExecuteEndToEndTests: fals<BR /> Compliance:<BR /> sonarExecuteScan: false<BR /> Release:<BR /> cloudFoundryDeploy: true<BR /> cfApiEndpoint: "&lt;YOUR_CF_ENDPOINT&gt;"<BR /> cfOrg: "&lt;YOUR_CF_ORG&gt;"<BR /> cfSpace: "&lt;YOUR_CF_SPACE&gt;"<BR /> cfCredentialsId: "&lt;YOUR_CF_CREDENTIAL_ID&gt;"<BR /> deployType: "standard"<BR /> tmsUpload: false<BR /> steps:<BR /> artifactPrepareVersion:<BR /> versioningType: "cloud_noTag"<BR /> cloudFoundryDeploy:<BR /> mtaDeployParameters: "-f --version-rule ALL"</CODE></PRE><BR /> <H3 dir="auto" id="toc-hId-306147769"></H3><BR /> <H3 dir="auto" id="toc-hId-109634264">Result</H3><BR /> <P dir="auto">You have now extended our preconfigured pipeline for SAP Cloud Application Programming Model projects by a GitHub release with an additional asset.</P><BR /> <P dir="auto">How do you extend your SAP Continuous Integration and Delivery jobs?&nbsp;<A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY/99c72101f7ee40d0b2deb4df72ba1ad3/c05a2522c90a40069ead07bd81df37ab.html?version=Cloud&amp;language=en-US" rel="noopener noreferrer" target="_blank">Try it out</A>&nbsp;and let us know!</P> 2023-06-22T15:12:15+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-innobytes-july-2023/ba-p/13565946 SAP BTP Innobytes – July 2023 2023-07-27T08:09:28+02:00 cecihuergo https://community.sap.com/t5/user/viewprofilepage/user-id/386 <EM>SAP Business Technology Platform brings together application development, automation, data and analytics, integration, and AI capabilities into one unified environment optimized for SAP applications. Learn more:&nbsp;</EM><A href="https://www.sap.com/products/business-technology-platform.html" target="_blank" rel="noopener noreferrer">sap.com/btp</A><BR /> <BR /> It’s hard to believe that we are more than half-way through the year. Seasons change, temperatures rise (or decline, depending on where you are located), plans change, vacations end; but something you can always count on, is the SAP BTP Innobytes monthly video! <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span> This month, we are diving into the world of flexibility, automation, and data semantics. Our experts, share the recent innovations for the SAP Continuous Integration and Delivery service, the new Graph capability in SAP Integration Suite and how you can automate the setup of your SAP BTP account. Curious? Check out the video to learn more!<BR /> <BR /> <IFRAME width="560" height="315" src="https://www.youtube.com/embed/cicpTd94ses&amp;list=PLWV533hWWvDkLRKiY-2aVnlXu5CpERDf9&amp;index=1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></IFRAME><BR /> <H2 id="toc-hId-963067081"><STRONG><SPAN style="color: #800080">Application Development Innovations on SAP BTP</SPAN></STRONG></H2><BR /> <H3 id="toc-hId-895636295"><STRONG><SPAN style="color: #0000ff">SAP Continuous Integration and Delivery – Pipeline Flexibility</SPAN></STRONG></H3><BR /> The <STRONG>SAP Continuous Integration and Delivery</STRONG> service on SAP Business Technology platform was already easy to use, but in some cases, customers mentioned it was not a perfect fit for their use case. And, to be fairly honest, we can’t match 100% of all use cases for all our customers. That’s just not realistic. But what’s even better than trying to provide standard solutions to fit every and any situation? You guessed it… <STRONG>FLEXIBILITY</STRONG>!<BR /> <BR /> We've integrated even more flexibility to our pipelines especially for you. It's now possible to add your own commands and scripts to the pre-defined <STRONG>pipelines</STRONG>. We don’t want you to miss out on SAP's CI/CD tool because <EM>it's</EM> missing one of your business requirements.<BR /> <BR /> With this new feature you could have the release stage create a git release for you, use a different tool to check code quality, or even print your name as ascii art to the build log, like Linda did <span class="lia-unicode-emoji" title=":winking_face:">😉</span>. No judgement here!<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/07/ascii-art.png" /></P><BR /> What are you waiting for? It's available on SAP BTP and you can try it out today. Check out the links below to learn more:<BR /> <UL><BR /> <LI><A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY/99c72101f7ee40d0b2deb4df72ba1ad3/c05a2522c90a40069ead07bd81df37ab.html?locale=en-US" target="_blank" rel="noopener noreferrer">Related Documentation: Additional Commands</A></LI><BR /> <LI><A href="https://blogs.sap.com/2023/05/30/extensible-pipelines-for-sap-continuous-integration-and-delivery/" target="_blank" rel="noopener noreferrer">Related Blog Post: Extensible Pipelines for SAP Continuous Integration and Delivery</A></LI><BR /> <LI><A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY" target="_blank" rel="noopener noreferrer">SAP Help Portal</A></LI><BR /> <LI><A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Discovery Center</A></LI><BR /> </UL><BR /> <H3 id="toc-hId-699122790"><SPAN style="color: #0000ff"><STRONG>Terraform Provider for SAP BTP</STRONG></SPAN></H3><BR /> If you’ve used SAP Business Technology Platform, or any platform to be honest, you know that before you can even start developing, you need to have the right setup in place. This means the right project structure (subaccount and spaces, for example), the needed service entitlements, your runtime, etc. All these steps, when done manually, can be time-consuming. And I know, we’d all love to be doing something more productive with our time.<BR /> <BR /> Based on Terraform, the de-facto <STRONG>industry standard</STRONG> for infrastructure-as-code, we’ve released the <STRONG>Terraform provider for SAP BTP</STRONG> <STRONG>for non-productive</STRONG>. It’s available in the central Terraform registry and we will be delivering new releases every month!<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/07/terraform-provider_website.png" /></P><BR /> To learn more, check out this <A href="https://blogs.sap.com/2023/06/26/terraform-provider-for-sap-btp-now-available-for-non-productive-use/" target="_blank" rel="noopener noreferrer"><STRONG>blog post</STRONG></A> and the <A href="https://github.com/SAP-samples/btp-terraform-samples" target="_blank" rel="nofollow noopener noreferrer"><STRONG>sample code</STRONG></A> provided on GitHub so you can get started today!<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/07/terraform-provider_GitHub.png" /></P><BR /> And as Rui said in the video: happy Terraforming on SAP Business Technology Platform!<BR /> <H2 id="toc-hId-373526566"><STRONG><SPAN style="color: #800080">Integration Innovations on SAP BTP</SPAN></STRONG></H2><BR /> <H3 id="toc-hId-306095780"><SPAN style="color: #0000ff"><STRONG>Graph in SAP Integration Suite</STRONG></SPAN></H3><BR /> Building applications that extend SAP business systems requires developers to know many complex details about the underlying system landscape. The new <STRONG>Graph capability</STRONG><STRONG> in SAP Integration Suite</STRONG>, part of SAP Business Technology Platform, addresses this complexity.<BR /> <BR /> <STRONG>How?</STRONG> Graph extends traditional <STRONG>API Management</STRONG> by providing the ability to create a business data graph of <STRONG>semantically connected business data</STRONG> across multiple systems, accessible by <STRONG>one single unified API</STRONG>.<BR /> <BR /> Integration experts decide which data they want to expose developers when they create the business data graph. Out-of-the-box, the data graph automatically contains:<BR /> <UL><BR /> <LI><STRONG>all the data objects</STRONG> (or entities) in the underlying business systems.</LI><BR /> <LI><STRONG>unified entities</STRONG> – which are simplified and abstracted entities connecting similar data across multiple systems.</LI><BR /> </UL><BR /> You can also create <STRONG>custom entities</STRONG>. Custom entities include attributes from multiple source entities and can hide the complexity of those source entities from developers.<BR /> <BR /> Once the business data graph has been created, developers can explore it using the <STRONG>Graph Navigator</STRONG> tool in <STRONG>SAP API Business Hub Enterprise</STRONG>. They can see which entities are included in the business data graph, how those entities are connected, which CRUD operations are available for each entity, and they can also try out <STRONG>OData v4</STRONG> queries or <STRONG>GraphQL</STRONG> queries using a GraphQL client.<BR /> <BR /> Want to learn more? Check out these links:<BR /> <UL><BR /> <LI><A href="https://community.sap.com/topics/graph" target="_blank">SAP Community topic page</A></LI><BR /> <LI><A href="https://blogs.sap.com/2023/07/12/graph-new-in-sap-integration-suite/" target="_blank" rel="noopener noreferrer">Graph New in SAP Integration Suite - Blog Post</A></LI><BR /> <LI><A href="https://help.sap.com/docs/graph/graph/what-is-graph" target="_blank" rel="noopener noreferrer">SAP Help Portal</A></LI><BR /> <LI><A href="https://discovery-center.cloud.sap/serviceCatalog/integration-suite?tab=service_plan" target="_blank" rel="nofollow noopener noreferrer">SAP Discovery Center</A></LI><BR /> </UL><BR /> <H2 id="toc-hId--19500444"><SPAN style="color: #ffcc00"><STRONG>Share your thoughts</STRONG>&nbsp;</SPAN></H2><BR /> These videos are for YOU. We would love to hear your impressions. How do you like the video? How can we improve the upcoming videos? Please share your feedback by liking this post or leaving a comment below.<BR /> <BR /> Thank you for your support and happy viewing, sharing, and enjoying!<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp; 2023-07-27T08:09:28+02:00 https://community.sap.com/t5/technology-blogs-by-sap/new-free-devops-with-sap-btp-learning-journey/ba-p/13575033 New free DevOps with SAP BTP Learning Journey 2023-08-04T15:53:18+02:00 BorisZarske https://community.sap.com/t5/user/viewprofilepage/user-id/87 DevOps enables your development teams to achieve high-level agility and quality - also for SAP cloud projects. Here, SAP does provide a recommended approach that makes it easy for you to apply it efficiently for your development projects on SAP BTP.<BR /> <BR /> Learn all about this topic for free with our new learning journey <A href="https://learning.sap.com/learning-journey/discovering-devops-with-sap-btp?url_id=text-blogs-LSCPLCoE-BTP-DevOps" target="_blank" rel="noopener noreferrer">Discovering DevOps with SAP BTP</A> and optionally earn your record of achievement.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/08/Screenshot_LearningJourney_DevOpsWithSAPBTP.png" /></P><BR /> With this offering from SAP Learning, you first get everyone on the same page and make your teams understand basic principles of DevOps and of Continuous Integration and Continuous Delivery (CI/CD).<BR /> <BR /> Then, get an introduction to the basic approach of DevOps especially with SAP BTP, as recommended by SAP - explaining key differentiators of the SAP-specific procedure, as being provided by the portfolio of DevOps cloud services from SAP BTP.<BR /> <BR /> As baseline for applying this SAP-specific approach for own development projects, learn about required activities to set up a corresponding DevOps toolchain (such as your CI/CD pipeline) with a very low entry barrier – and with the right integration into existing operation processes, if required.<BR /> <BR /> In addition, get insights on how to then use this setup for your agile development processes and for running your developed applications on SAP BTP reliably and in an agile way.<BR /> <BR /> <EM>Fill the gap through upskilling and enjoy SAP’s learning offerings on the SAP Learning site. This article is created and brought to you by SAP Product Learning CoE experts!</EM> 2023-08-04T15:53:18+02:00 https://community.sap.com/t5/technology-blogs-by-members/cicd-for-sap-on-premise-and-ui5-applications/ba-p/13577304 CICD for SAP On-Premise and UI5 applications 2023-09-07T22:41:23+02:00 Joseph_BERTHE https://community.sap.com/t5/user/viewprofilepage/user-id/2203 <H1 id="toc-hId-834961573">Introduction</H1><BR /> As a Fiori developer, I have encountered the following issue on several occasions: "Where is the source code of the application located?" Previously, when using SAP WebIDE, it was possible to retrieve the complete code of an application already deployed in SAP Gateway. However, with the latest innovations in Fiori development, this technique no longer works as effectively, and the reference source code is now located in Git. SAP Fiori Tools or UI5 Tooling are NodeJS-based tools that add files to our Fiori application, and these files are not stored in the backend. On the other hand, the Git server will store all this data for us.<BR /> <BR /> For developers coming from the pure SAP/ABAP world, using Git can indeed be unclear or even seem like a daunting task to grasp. I will write a blog post on how to use Git in an SAP On-Premise context.<BR /> <H2 id="toc-hId-767530787">How to secure the source code?</H2><BR /> I've had an experience in my career where, during the development of a Fiori application, a developer would occasionally push without realizing the importance of this action. The application went into production, and a few months later, we were asked to make a modification. Following this change, a regression appeared. My colleague had relied on the incorrect code because I had forgotten to do the push!<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/09/CICD.png" /></P><BR /> When starting to develop Fiori applications with Git, it's common to primarily use the "<STRONG>master/main</STRONG>" branch and misuse commit and push practices. In such cases, the developer deploys the application directly from their own workstation.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/09/Capture-decran-2023-09-07-171543.png" /></P><BR /> Then comes the fundamental question:<BR /> <BR /> <STRONG>How can you ensure that the Git source code matches the version deployed on the SAP system?</STRONG><BR /> <BR /> The answer lies in the organization of development. Whether you are a single developer or part of a team, it's essential to establish a "software factory" to secure the source code and apply the following rule:<BR /> <BLOCKQUOTE>No developer is allowed to deploy into the SAP system! Only the software factory has that privilege.</BLOCKQUOTE><BR /> This rule emphasizes a strict separation of concerns between development and deployment, ensuring that only authorized processes or individuals (in this case, the software factory) have the authority to deploy code to the SAP system. This practice helps maintain control, security, and consistency in the deployment process.<BR /> <BR /> The software factory I mentioned is what we commonly refer to as CI/CD (Continuous Integration Continuous Deployment). I won't go into the details of this tool, as there are websites that can explain it better than I can. However, please keep in mind that this tool automates deployment as soon as an action (such as a Pull Request) is performed on the main branch of the Git repository.<BR /> <BR /> CI/CD is an essential part of modern development workflows, enabling automatic testing and deployment processes, ensuring code quality and consistency, and reducing the risk of deployment issues. If you'd like to discuss CI/CD in more detail or explore any specific aspects of it for your blog post, feel free to provide further information or questions, and I'll be happy to assist.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/09/Capture-decran-2023-09-07-205324.png" /></P><BR /> CI/CD listens to the activities on the "main" branch of the Git repository and initiates a development pipeline as soon as a Pull Request is triggered. The pipeline comprises several steps, but in our scenario, only one step is required, which is the deployment to an SAP On-Premise system.<BR /> <H2 id="toc-hId-571017282">Which tool choose?</H2><BR /> There are indeed many tools available for CI/CD, and SAP offers its tool based on SAP BTP <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/continuous-integration-and-delivery-ci-cd" target="_blank" rel="noopener noreferrer">SAP Continuous Integration and Delivery (CI/CD)</A>.When I began my research on CI/CD, this service did not initially offer the capability to deploy to an On-Premise server. However, this has since been addressed. Nevertheless, due to the limited documentation on how to configure it, I explored other tools.<BR /> <BR /> I conducted various tests with Azure DevOps, GitLab, GitHub, and CircleCI. One of the reasons I chose these platforms is that, typically, the expertise already exists within the company. Setting up these environments often requires just a single configuration file in the project, making it extremely simple!<BR /> <H2 id="toc-hId-374503777">Architecture</H2><BR /> Once you've mastered the concept, it's essential to focus on the architecture to implement, as security is the key consideration in this type of software factory. There are two possible scenarios: either the CI/CD tool is entirely cloud-based, or it resides within the company's network.<BR /> <H3 id="toc-hId-307072991">On-Premise setup</H3><BR /> This configuration is the simplest to implement. In the diagram below, I could have placed the Git servers On-Premise as well, but the critical point of concern is the CI/CD server, which must have visibility of the SAP DEV server. Typically, this requires firewall rules or network configuration.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/09/Capture-decran-2023-09-07-213947.png" /></P><BR /> <BR /> <H3 id="toc-hId-110559486">Cloud setup</H3><BR /> Configurations with cloud-based tools require particular attention to who has access to deploy on the server and thus visibility of the SAP server. While it's possible to create firewall rules to allow requests from various cloud services (e.g., CircleCI or GitHub), this introduces a security vulnerability that can be challenging to manage.<BR /> <BR /> The solution to address this concern is to use a Self-Hosted runner, a server that periodically connects to the cloud CI/CD service to check if there are tasks to perform. If affirmative, it retrieves the commands to execute and the Git clone URL, and it's this server alone that initiates the deployment. As you can see, this server is located on the On-Premise network and can communicate with the SAP server.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/09/Capture-decran-2023-09-07-214627.png" /></P><BR /> This setup enhances security by limiting access to the deployment server and maintaining control over the deployment process.<BR /> <BR /> Indeed, CI/CD providers typically offer a Docker image for the Self-Hosted runner, which simplifies the installation process.<BR /> <H2 id="toc-hId--215036738">How to deploy?</H2><BR /> Now that we have a good understanding of the concepts and architecture, let's discuss how to deploy automatically. With UI5 Tooling, the <CODE>npm run deploy</CODE> command requires specific information, such as:<BR /> <UL><BR /> <LI>User and password.</LI><BR /> <LI>Transport order.</LI><BR /> <LI>Server URL.</LI><BR /> <LI>Application-specific details.</LI><BR /> </UL><BR /> All this information is typically stored in the <CODE>ui5-deploy.yaml</CODE> file at the root of the UI5 project. However, for CI/CD usage, we'll need to create a new file and use environment variables to replace some parameters.<BR /> <BR /> The advantage of using environment variables is that CI/CD tools can configure them. As a result, the authentication part will be stored in the CI/CD configuration, while the transport order (TR) will be handled for the application in the <CODE>.env</CODE> file.<BR /> <BR /> Here's an example of a deployment file (ui5-deploy-cicd.yaml):<BR /> <PRE class="language-python"><CODE># yaml-language-server: $schema=https://sap.github.io/ui5-tooling/schema/ui5.yaml.json<BR /> <BR /> specVersion: "2.5"<BR /> metadata:<BR /> name: &lt;namespace&gt;.&lt;appname&gt;<BR /> type: application<BR /> builder:<BR /> resources:<BR /> excludes:<BR /> - /test/**<BR /> - /localService/**<BR /> customTasks:<BR /> - name: deploy-to-abap<BR /> afterTask: generateCachebusterInfo<BR /> configuration:<BR /> ignoreCertError: true<BR /> target:<BR /> url: <A href="https://&lt;server_uri&gt;:&lt;port&gt;" target="test_blank" rel="nofollow noopener noreferrer">https://&lt;server_uri&gt;:&lt;port&gt;</A>;<BR /> client: "500"<BR /> credentials:<BR /> username: env:DEPLOY_USER<BR /> password: env:DEPLOY_PASSWORD<BR /> app:<BR /> name: &lt;application_name&gt;<BR /> description: &lt;application_description&gt;<BR /> package: &lt;package&gt;<BR /> transport: env:TRANSPORT_NO<BR /> </CODE></PRE><BR /> It's evident that we're utilizing three environment variables:<BR /> <TABLE style="border-collapse: collapse;width: 100%" border="1"><BR /> <TBODY><BR /> <TR style="height: 14px"><BR /> <TD style="width: 50%;height: 14px"><BR /> <DIV><BR /> <DIV>env:DEPLOY_USER</DIV><BR /> </DIV></TD><BR /> <TD style="width: 50%;height: 14px" rowspan="2">Stored into CICD server</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="width: 50%;height: 14px"><BR /> <DIV><BR /> <DIV>env:DEPLOY_PASSWORD</DIV><BR /> </DIV></TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="width: 50%;height: 14px"><BR /> <DIV><BR /> <DIV>env:TRANSPORT_NO</DIV><BR /> </DIV></TD><BR /> <TD style="width: 50%;height: 14px">Stored into .<EM>env</EM> file at the root project</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> Example of an environment file:<BR /> <PRE class="language-python"><CODE>TRANSPORT_NO = DEVK######</CODE></PRE><BR /> Next, you need to add a script for CI/CD in the `package.json` file:<BR /> <PRE class="language-javascript"><CODE>"scripts": {<BR /> ...<BR /> "deploy:cicd": "npm run build &amp;&amp; fiori deploy -f -- -y --config ui5-deploy-cicd.yaml &amp;&amp; rimraf archive.zip",<BR /> ...<BR /> },</CODE></PRE><BR /> Compared to the configuration of a standard deployment, the following parameters have been added:<BR /> <UL><BR /> <LI>-- -y: Disable user interaction</LI><BR /> <LI>--failfast, -f: - Throw an error if something goes wrong and exit with a return code != 0.</LI><BR /> </UL><BR /> <H2 id="toc-hId--411550243">Conclusion</H2><BR /> Through this blog post, I wanted to share my experience in securing SAP Fiori developments. I have often witnessed code losses due to a lack of knowledge about the tools. The real-world scenario shows us that ABAP developers transitioning into web development often apply improper practices, and the software industry is not immune to these mistakes. The CI/CD software factory is the solution to this problem, marking the entrance into the era of continuous development.<BR /> <BR /> I intentionally left out discussing automated testing, a topic closely related to CI/CD, as my primary focus was on promoting a good development practice.<BR /> <BR /> I would be delighted to hear your feedback on your projects related to the implementation of such a system or any other options you have explored to secure your source code.<BR /> <BR /> Enjoy <span class="lia-unicode-emoji" title=":winking_face:">😉</span> 2023-09-07T22:41:23+02:00 https://community.sap.com/t5/technology-blogs-by-sap/wishes-come-true-cloud-native-buildpack-support-in-sap-continuous/ba-p/13578382 Wishes come true - Cloud Native Buildpack Support in SAP Continuous Integration and Delivery! 2023-11-07T14:07:31+01:00 martinfrick https://community.sap.com/t5/user/viewprofilepage/user-id/15118 Hello, <STRONG>SAP community</STRONG>! <span class="lia-unicode-emoji" title=":waving_hand:">👋</span><BR /> <BR /> We're always on a mission to keep our <A href="https://github.com/SAP-samples/btp-cap-multitenant-saas" target="_blank" rel="nofollow noopener noreferrer"><STRONG>Sustainable SaaS</STRONG></A> Sample Application scenario up-to-the-minute. Therefore, we're eager to share <span class="lia-unicode-emoji" title=":party_popper:">🎉</span> the latest enhancement to our sample use-case related to our exceptional <STRONG>Kyma Runtime</STRONG> (<A href="https://kyma-project.io/" target="_blank" rel="nofollow noopener noreferrer">kyma-project.io</A>) - the <STRONG>Kyma Runtime Pipeline</STRONG> (<A href="https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/kyma-runtime" target="_blank" rel="noopener noreferrer">click here</A>) in <STRONG>SAP Continuous Integration and Delivery </STRONG>(<A href="https://help.sap.com/docs/continuous-integration-and-delivery?locale=en-US" target="_blank" rel="noopener noreferrer">click here</A>). Feels like early <STRONG>Christmas</STRONG> <span class="lia-unicode-emoji" title=":christmas_tree:">🎄</span><span class="lia-unicode-emoji" title=":wrapped_gift:">🎁</span><BR /> <H3 style="text-align: center" id="toc-hId-1093157048">CAP + Kyma + CI/CD = <span class="lia-unicode-emoji" title=":smiling_face_with_heart_eyes:">😍</span> 🥰 <span class="lia-unicode-emoji" title=":red_heart:">❤️</span></H3><BR /> Our <STRONG>fantastic engineering teams</STRONG> (you guys rock <span class="lia-unicode-emoji" title=":guitar:">🎸</span><span class="lia-unicode-emoji" title=":sign_of_the_horns:">🤘</span>) have worked hard to provide another crucial component to improve your <STRONG>SAP BTP end-to-end developer experience</STRONG>! Check out <STRONG>Discovery Center</STRONG> (<A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery" target="_blank" rel="nofollow noopener noreferrer">click here</A>) to learn more about the service offering in general and the availability in your preferred <STRONG>SAP BTP region</STRONG>.<BR /> <TABLE style="width: 100%;border-collapse: collapse;border-style: solid;border-color: #ffffff" border="0"><BR /> <TBODY><BR /> <TR><BR /> <TD style="width: 50%"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_11-54-08.png" height="215" width="355" /></TD><BR /> <TD style="width: 50%"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_11-52-35.png" height="215" width="330" /></TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> This new feature of our beloved <STRONG>SAP CI/CD service offering</STRONG>, supports SAP's recommended <STRONG>Cloud Native Buildpack</STRONG> (<A href="https://buildpacks.io/" target="_blank" rel="nofollow noopener noreferrer">https://buildpacks.io/</A>) approach to craft your <STRONG>Container Images</STRONG> when deploying <STRONG>CAP applications</STRONG> to the <STRONG>SAP BTP, Kyma Runtime</STRONG>! Pretty impressive, right? <span class="lia-unicode-emoji" title=":rocket:">🚀</span> Let's break it down from the top so you're fully up to speed with this remarkable pipeline - available for<STRONG> free validation</STRONG> using our <STRONG>SAP BTP, Free Tier</STRONG> or <STRONG>Trial plans</STRONG>!<BR /> <P style="overflow: hidden;margin-bottom: 0px;text-align: center"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_11-57-48-1.png" height="150" width="530" /><BR /> <EM>Kyma + CAP + CI/CD</EM></P><BR /> &nbsp;<BR /> <BR /> The <STRONG>SAP Cloud Application Programming Model (CAP)&nbsp;</STRONG>(<A href="https://cap.cloud.sap/" target="_blank" rel="nofollow noopener noreferrer">cap.cloud.sap</A>) sets the <STRONG>gold standard</STRONG> <span class="lia-unicode-emoji" title=":trophy:">🏆</span> for future SAP BTP developer generations, offering a clear set of recommendations, guardrails and best-practices for creating solutions on the <STRONG>SAP Business Technology Platform</STRONG>. When you're using <STRONG>SAP's managed Kubernetes offering Kyma</STRONG>, SAP's guidance includes the use of <STRONG>Cloud Native Buildpacks</STRONG> (<A href="https://cap.cloud.sap/docs/guides/deployment/deploy-to-kyma#build-images" target="_blank" rel="nofollow noopener noreferrer">click here</A>) to build the necessary Container Images. Paired with <STRONG>paketo </STRONG>(<A href="https://paketo.io/" target="_blank" rel="nofollow noopener noreferrer">paketo.io</A>), developers can create <STRONG>standardized</STRONG> and <STRONG>reliable Container Images</STRONG> without the hassle of writing and maintaining separate <STRONG>Dockerfiles</STRONG>.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_12-06-10.png" height="221" width="561" /></P><BR /> <STRONG>SAP's Project Piper</STRONG> (<A href="https://www.project-piper.io/" target="_blank" rel="nofollow noopener noreferrer">project-piper.io</A>) - the <STRONG>advanced</STRONG> <STRONG>CI/CD stuff</STRONG> <span class="lia-unicode-emoji" title=":grinning_face:">😀</span> - has been supporting the required <STRONG>cnbBuild</STRONG> step (<A href="https://www.project-piper.io/steps/cnbBuild/" target="_blank" rel="nofollow noopener noreferrer">click here</A>) for a while now, and the <STRONG>SAP Continuous Integration and Delivery Service</STRONG> has just launched a new pipeline <span class="lia-unicode-emoji" title=":wrapped_gift:">🎁</span>, custom-made for application developers in the SAP BTP, Kyma Runtime context. This new <STRONG>Kyma Runtime Pipeline</STRONG> (<A href="https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/kyma-runtime" target="_blank" rel="noopener noreferrer">click here</A>) supports the complete process of <STRONG>building Container Images</STRONG> using <STRONG>Cloud Native Buildpacks</STRONG>, pushing them to your chosen <STRONG>Container Registry</STRONG> like DockerHub, Google Artifact Registry or even your <STRONG>own Container Registry</STRONG>, and an industry-standard <STRONG>Helm-based</STRONG> (<A href="http://helm.sh" target="_blank" rel="nofollow noopener noreferrer">helm.sh</A>) deployment to your <STRONG>Kyma Cluster</STRONG>. This will greatly simplify your life as a <STRONG>DevOps engineer</STRONG>, as you can now concentrate on tackling the more intricate DevOps scenarios. <span class="lia-unicode-emoji" title=":rocket:">🚀</span> Meanwhile, <STRONG>SAP's managed CI/CD offering</STRONG> running on SAP BTP, will take care of handling the majority of your SAP BTP developments or extensions. <span class="lia-unicode-emoji" title=":party_popper:">🎉</span> No more complex <STRONG>Jenkins setups</STRONG> required for each and every new development project.<BR /> <P style="overflow: hidden;margin-bottom: 0px;text-align: center"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_12-09-32-1.png" /><EM>From SAP Business Application Studio to GitHub to SAP CI/CD to SAP Kyma</EM></P><BR /> &nbsp;<BR /> <BR /> As always, you can choose a <STRONG>code-based </STRONG>configuration (<A href="https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/configure-kyma-runtime-job-in-your-repository" target="_blank" rel="noopener noreferrer">click here</A>) of your pipeline or use the <STRONG>Job Editor</STRONG> (<A href="https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/configure-kyma-runtime-job-in-job-editor" target="_blank" rel="noopener noreferrer">click here</A>) to set up your job. You'll find a wealth of configuration options related to the Cloud Native Buildpack approach, and you can continue using the <STRONG>familiar stages</STRONG> that encompass steps like <STRONG>Unit Tests, Acceptance</STRONG>, or <STRONG>Compliance</STRONG> requirements. Be sure to explore the<STRONG> latest documentation</STRONG> <span class="lia-unicode-emoji" title=":books:">📚</span> (<A href="https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/kyma-runtime" target="_blank" rel="noopener noreferrer">click here</A>) to learn all about this new pipeline before giving it a go in your <STRONG>own SAP BTP landscape</STRONG>. For the <STRONG>Free Tier</STRONG> and <STRONG>Trial plan</STRONG> users amongst you - please be aware that your Jobs are deactivated after remaining unchanged for one week, but you can easily switch them on again.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/CICD_Basics04.png" /></P><BR /> For a <STRONG>practical example</STRONG>, we've included a <STRONG>simple end-to-end pipeline configuration</STRONG> (<A href="https://github.com/SAP-samples/btp-cap-multitenant-saas/blob/main/docu/4-expert/-Kyma-/setup-cicd-for-project/files/config.yml" target="_blank" rel="nofollow noopener noreferrer">click here</A>) in our popular <A href="https://github.com/SAP-samples/btp-cap-multitenant-saas/" target="_blank" rel="nofollow noopener noreferrer"><STRONG>Sustainable SaaS GitHub repository</STRONG></A>. As the new pipeline and its features might seem overwhelming initially, we've also prepared a <STRONG>step-by-step guide</STRONG> (<A href="https://github.com/SAP-samples/btp-cap-multitenant-saas/blob/main/docu/4-expert/-Kyma-/setup-cicd-for-project/README.md" target="_blank" rel="nofollow noopener noreferrer">click here</A>) <span class="lia-unicode-emoji" title=":world_map:">🗺</span>️ to ensure a smooth setup experience. The <STRONG>sample pipeline</STRONG> (<A href="https://github.com/SAP-samples/btp-cap-multitenant-saas/blob/main/docu/4-expert/-Kyma-/setup-cicd-for-project/files/config.yml" target="_blank" rel="nofollow noopener noreferrer">click here</A>) might not cover all available steps (e.g., Unit Tests or wdi5 Tests), but it's a <STRONG>great starting point</STRONG> for setting up all relevant credentials, like the <STRONG>kubeconfig</STRONG> <STRONG>details</STRONG> of a required <STRONG>service account </STRONG>(<A href="https://github.com/SAP-samples/btp-cap-multitenant-saas/blob/main/docu/4-expert/-Kyma-/setup-cicd-for-project/files/service-account.sample.yaml" target="_blank" rel="nofollow noopener noreferrer">click here</A>) or your <STRONG>container registry authentication</STRONG> (<A href="https://github.com/SAP-samples/btp-cap-multitenant-saas/blob/main/docu/4-expert/-Kyma-/setup-cicd-for-project/files/registry-config.sample.json" target="_blank" rel="nofollow noopener noreferrer">click here</A>) details. Once you've got the sample scenario up and running, adding <STRONG>additional testing </STRONG>or<STRONG> deployment </STRONG>steps should be a breeze! <span class="lia-unicode-emoji" title=":wind_face:">🌬</span>️<BR /> <TABLE style="height: 125px;width: 100%;border-collapse: collapse;border-style: solid;border-color: #ffffff" border="1"><BR /> <TBODY><BR /> <TR style="height: 125px"><BR /> <TD style="width: 33.3333%;height: 125px;text-align: center;vertical-align: middle"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_13-14-55.png" height="89" width="234" /><BR /> <EM>Build Process</EM></TD><BR /> <TD style="width: 33.3333%;text-align: center;height: 125px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_13-19-40-1.png" height="97" width="205" /><EM><BR /> Build Results</EM></TD><BR /> <TD style="width: 33.3333%;text-align: center;height: 125px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/2023-11-07_13-27-46.png" /><BR /> <EM>Kyma Deployment</EM></TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> For the <STRONG>K8s</STRONG> (Kubernetes) <STRONG>enthusiasts</STRONG> in our community who've been following the recent SAP Blog Posts in the <STRONG>DevOps context</STRONG>, you've likely caught the great update on <STRONG>GitOps</STRONG> with <STRONG>Argo CD &amp; Kyma </STRONG>(<A href="https://blogs.sap.com/2023/11/02/gitops-with-argo-cd-kyma/" target="_blank" rel="noopener noreferrer">click here</A>). Using <STRONG>Argo CD</STRONG> (<A href="http://argo-cd.readthedocs.io" target="_blank" rel="nofollow noopener noreferrer">argo-cd.readthedocs.io</A>) to <STRONG>manage Helm installations</STRONG> in one or more Kyma clusters can be a game-changer. The best part? Consider <STRONG>combining Argo CD</STRONG> with the <STRONG>SAP Continuous Integration and Delivery Service</STRONG>, using the new <STRONG>Kyma Runtime Pipeline</STRONG> to build, test, and finally distribute your Container Images to your Kyma Cluster(s)!<BR /> <BR /> That's all for now, folks! Please give it a try in your <STRONG>own landscape</STRONG>, and <STRONG>reach out for any question</STRONG> or in case you <STRONG>face any issue</STRONG>!<BR /> <BR /> <STRONG>Happy DevOps</STRONG> deep diving! 🏊‍<span class="lia-unicode-emoji" title=":male_sign:">♂️</span><span class="lia-unicode-emoji" title=":woman_technologist:">👩‍💻</span><span class="lia-unicode-emoji" title=":man_technologist:">👨‍💻</span><BR /> <BR /> Martin 2023-11-07T14:07:31+01:00 https://community.sap.com/t5/technology-blogs-by-members/don-t-implement-a-ci-cd-continuous-integration-and-continuous-deployment/ba-p/13579772 Don’t implement a CI/CD (Continuous Integration and Continuous Deployment) process unless you...read this 2023-12-16T22:01:24+01:00 MichalKrawczyk https://community.sap.com/t5/user/viewprofilepage/user-id/45785 <H1 id="toc-hId-835025214"><STRONG>Introduction </STRONG></H1><BR /> Implementing a CI/CD (Continuous Integration and Continuous Deployment) process for SAP developments is a significant undertaking that requires careful planning and consideration. Think how many companies using SAP you know that have successfully implemented it before your organization and try to understand why they managed to do it before you embark on the journey. Below you will find a few questions one might try to answer before saying out loud: "We’re planning to introduce an CI/CD process to our SAP developments".<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/12/ci_cd.jpg" /></P><BR /> <BR /> <BLOCKQUOTE><BR /> <H2 id="toc-hId-767594428">"When I stop asking questions, something's wrong - Rene Marie"</H2><BR /> </BLOCKQUOTE><BR /> <H2 id="toc-hId-571080923"><STRONG>What are the business goals and objectives?</STRONG></H2><BR /> Start by understanding the overarching business goals and objectives that the CI/CD process should support. What are you trying to achieve with this initiative, and how will it benefit your organization? Something that will always keep you moving forward even if you are faced with a big blocker (no understanding of some parts of your organization, lack of processes, etc.). This will also help you get executive support (more on this later).<BR /> <H2 id="toc-hId-374567418"><STRONG>What SAP systems and landscapes are involved?</STRONG></H2><BR /> Identify the specific SAP systems (SAP S/4HANA or maybe some parts of SAP BTP only) &nbsp;and landscapes (e.g., development, quality assurance, production) that will be part of the CI/CD process. Are there any third-party integrations or dependencies (if yes – <A href="https://open.sap.com/courses/iftt1-2-pc" target="_blank" rel="noopener noreferrer">openSAP)</A>.<BR /> <H2 id="toc-hId-178053913"><STRONG>What are the current development and deployment processes?</STRONG></H2><BR /> Validate the existing development and deployment processes for SAP. Do they exist? This will help you identify pain points and areas for improvement. What SAP development technologies and tools are in use? Will they support all CI/CD processes in all parts of SAP development or only in certain? Maybe you plan to use a general-purpose CI/CD solutions (which can work with SAP and non SAP technologies).<BR /> <H2 id="toc-hId--18459592"><STRONG>What is the size and skillset of your development team?</STRONG></H2><BR /> Assess the size and skillset of your development team. How much do you use Service Integrators or freelancers? Are they familiar with CI/CD practices (my best guess would be no) so they will additional training be required. How much of this training will be required?<BR /> <H2 id="toc-hId--214973097"><STRONG>Are there compliance and regulatory requirements?</STRONG></H2><BR /> Do you work in a regulated industry where some special practice needs to be validated (GxP for pharmaceutical industries)? Are there any other requirements that need to be considered in your CI/CD process, such as GDPR, SOX, or industry-specific standards.<BR /> <H2 id="toc-hId--411486602"><STRONG>What is the current testing and quality assurance process?</STRONG></H2><BR /> Here we start with a simple one: how mature are you with automated testing of your SAP developments? Are you aware that continuous deployment and continuous delivery includes continuous testing being run first on all of the parts of the process which you want to include in the CI/CD pipeline? Develop a comprehensive testing and validation plan to ensure that changes introduced through CI/CD do not negatively impact SAP functionality and data integrity.<BR /> <H2 id="toc-hId--608000107"><STRONG>What are the risks and challenges associated with </STRONG><STRONG>a CI/CD</STRONG><STRONG> process for SAP?</STRONG></H2><BR /> Identify potential risks and challenges that may arise during the implementation of CI/CD for SAP developments. This could include system refreshes, system downtime, or data migration issues.<BR /> <H2 id="toc-hId--804513612"><STRONG>What CI/CD tools and technologies will you use?</STRONG></H2><BR /> Select the CI/CD tools and technologies that are best suited for SAP development. Consider tools for version control, automated testing (like Int4 Suite for SAP BTP Integration Suite), and deployment automation.<BR /> <H2 id="toc-hId--653772760"><STRONG>What is the deployment strategy?</STRONG></H2><BR /> Define your deployment strategy, including how and when new SAP developments will be deployed to different environments (e.g., dev, test, production).<BR /> <H2 id="toc-hId--850286265"><STRONG>What is the timeline and budget for implementation?</STRONG></H2><BR /> Develop a timeline and budget for implementing CI/CD for SAP developments. Consider both the initial setup costs and ongoing maintenance expenses.<BR /> <H2 id="toc-hId--1046799770"><STRONG>What is the rollback and disaster recovery plan?</STRONG></H2><BR /> Have a plan in place for rolling back changes in case of issues and a disaster recovery plan to mitigate risks associated with CI/CD.<BR /> <H2 id="toc-hId--1243313275"><STRONG>Do you have executive support and sponsorship?</STRONG></H2><BR /> Ensure that there is executive support and sponsorship for the CI/CD initiative, as it may require changes in processes and investments in technology and someone needs to have your back when others will ask "do we really need it, old process was working just fine".<BR /> <BR /> &nbsp;<BR /> <H2 id="toc-hId--1439826780"><STRONG>&nbsp;Final thoughts</STRONG></H2><BR /> If you don’t know any SAP companies using a full blown CI/CD process don’t worry – you don’t need to change the whole world, there’s plenty you can still do:<BR /> <UL><BR /> <LI>You can find out companies who at least try – SAP User Groups, SAP Events (like SAP Teched)</LI><BR /> <LI>You don’t need to implemented this for the whole SAP landscape at one, maybe start with something small (SAP BTP might be good frontrunner)</LI><BR /> <LI>Don’t give up – CI/CD process is a very well-known practice outside so it’s nothing new</LI><BR /> </UL><BR /> Good luck! 2023-12-16T22:01:24+01:00 https://community.sap.com/t5/technology-blogs-by-sap/instant-alerting-for-failed-builds-on-sap-continuous-integration-and/ba-p/13574812 Instant alerting for failed builds on SAP Continuous Integration and Delivery via SAP Alert Notification service 2024-01-09T15:22:17+01:00 BiserSimeonov https://community.sap.com/t5/user/viewprofilepage/user-id/3334 Hello SAP community! I would like to share with you insights on how easy is to configure <A href="https://discovery-center.cloud.sap/serviceCatalog/alert-notification?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Alert Notification service on SAP BTP</A> in a way so that you can get instant notifications for potential disruptions in your system and more specifically – failed builds on &nbsp;<A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Continuous Integration and Delivery</A>.<BR /> <BR /> This blog-post is also an extension to <A href="https://blogs.sap.com/2022/07/22/whats-going-on-in-your-ci-cd-pipeline/" target="_blank" rel="noopener noreferrer">What’s going on in your CI/CD pipeline?</A>&nbsp; created by <SPAN class="mention-scrubbed">christoph.szymanski</SPAN> so also credits to Christoph for the initial setup.<BR /> <H2 id="toc-hId-963959753">Context</H2><BR /> To be frank, I was inspired to write also this blog-post as the integration between <A href="https://discovery-center.cloud.sap/serviceCatalog/alert-notification?region=all" target="_blank" rel="nofollow noopener noreferrer">Alert Notification service</A> and <A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Continuous Integration and Delivery</A> indeed is quite intuitive. All you need to do is to create the needed credentials, enable a toggle button available in <A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Continuous Integration and D </A>and configure the needed alerts! If you are interested&nbsp; to learn more about it - all details are provided underneath.<BR /> <H2 id="toc-hId-767446248">Alerting for failed builds on <A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Continuous Integration and Delivery</A> via SAP Alert Notification service</H2><BR /> <H3 id="toc-hId-700015462">Solution diagram</H3><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ANS-CID-solution-diagram.png" /></P><BR /> The main concept for this use case is setting up a reliable and instant alerting in SAP Business Technology Platform (SAP BTP) for sending instant notifications in case a build in <A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Continuous Integration and Delivery</A>&nbsp; has been failed. To meet these expectations I have implemented SAP Alert Notification service in a way so that in case there is a failed job - an instant notification is sent out to the responsible DevOps / SRE team.<BR /> <H3 id="toc-hId-503501957">Implementation</H3><BR /> <H4 id="toc-hId-436071171">Create a Service Key credentials in Alert Notification service</H4><BR /> As a first step you need to authenticate your&nbsp; SAP Continuous Integration and Delivery pipeline to the SAP Alert Notification service. To do so, you need to create a Service Key credentials for the<BR /> <BR /> Alert Notification service as shown below:<BR /> <BR /> 1. Go Alert Notification service instance in your SAP BTP account, navigate the to the "Service Keys" section and click on the "Create" button.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-credentials.png" /></P><BR /> &nbsp;<BR /> <BR /> 2. Specify the "Service Key Name" (free text) and click on the "Create" button.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-credentials-2.png" height="270" width="251" /></P><BR /> 3. You will see that the service key creation has been started.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-credentials-3.png" /></P><BR /> 4. Once the service key has been created, please view and copied it over as a JSON format:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-credentials-4.png" /></P><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-credentials-5.png" /></P><BR /> <BR /> <H4 id="toc-hId-239557666">Create credentials in SAP Continuous Integration and Delivery</H4><BR /> 1. Navigate to SAP Continuous Integration and Delivery and access the "Credentials" section. Once that's done, please click on the "+" button to provided the needed credentials details:<BR /> <UL><BR /> <LI>specify the name and the description (free text);</LI><BR /> <LI>specify the credential type - pick up "Service Key" from the drop-down;</LI><BR /> <LI>paste the JSON service key from the Alert Notification service you had already created in the previous step;</LI><BR /> <LI>click on the "Create" button to save the credentials</LI><BR /> </UL><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/cid-credentials-1.png" /></P><BR /> <BR /> <H4 id="toc-hId-43044161">Enablement of Build Notifications for SAP Continuous Integration and Delivery</H4><BR /> Now, after you have created all the needed credentials, you need to enable the notifications so that&nbsp; SAP Continuous Integration and Delivery can start ingesting notifications to SAP Alert Notification service for the relevant pipeline events . To do so, please follow these steps:<BR /> <BR /> 1. A<SPAN style="font-size: 1rem">ccess to the pipeline you want to start monitoring and click on the “Edit” button.</SPAN><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/cid-edit-job-1.png" /></P><BR /> 2. Click on the Build Notifications to access the relevant section and enable the notifications for the given pipeline:<BR /> <UL><BR /> <LI>click on the toggle button to turn it into ON.</LI><BR /> </UL><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/cid-edit-job-2.png" height="227" width="400" /></P><BR /> <BR /> <UL><BR /> <LI>click on the "Service Key" and pick up the credentials for the Alert Notification service you already have created in the previous step:</LI><BR /> </UL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/cid-edit-job-3-1.png" height="189" width="217" /><BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <H4 id="toc-hId--153469344"></H4><BR /> <H4 id="toc-hId--349982849"></H4><BR /> <H4 id="toc-hId--546496354"></H4><BR /> <UL><BR /> <LI>Click on the "Save" button to save the changes made:</LI><BR /> </UL><BR /> <H4 id="toc-hId--1240726954"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/cid-edit-job-4.png" height="210" width="215" /></H4><BR /> <H4 id="toc-hId--1437240459"></H4><BR /> <H4 id="toc-hId--1633753964"></H4><BR /> <H4 id="toc-hId--1830267469"></H4><BR /> <H4 id="toc-hId--2026780974"></H4><BR /> <H4 id="toc-hId-2071672817"></H4><BR /> <H4 id="toc-hId-1875159312"></H4><BR /> <H4 id="toc-hId-1678645807"></H4><BR /> Your pipeline is configured to send notifications to the Alert Notification service.<BR /> <H4 id="toc-hId-1482132302">Configuring the Alert Notification service</H4><BR /> Now it is time to configure the Alert Notification service itself and see it in actions.<BR /> <BR /> In order to be able filter and act on the events ingested into the Alert Notification service it is needed to create:<BR /> <UL><BR /> <LI><A href="https://help.sap.com/docs/alert-notification/sap-alert-notification-for-sap-btp/managing-conditions" target="_blank" rel="noopener noreferrer">Conditions</A>: needed to filter out the events which are important for you;</LI><BR /> <LI><A href="https://help.sap.com/docs/alert-notification/sap-alert-notification-for-sap-btp/managing-actions" target="_blank" rel="noopener noreferrer">Actions</A>: specify actions to be triggered by the Alert Notification service, e.g. send email, send instant notifications (via Microsoft Teams Slack, etc), trigger HTTPS webhooks, trigger automation flow, etc;</LI><BR /> <LI><A href="https://help.sap.com/docs/alert-notification/sap-alert-notification-for-sap-btp/managing-subscriptions" target="_blank" rel="noopener noreferrer">Subscription</A> – that is the entity that binds one or more conditions to one or more actions that have been already set. Note that without an active subscription no action will be triggered by Alert Notification service.</LI><BR /> </UL><BR /> <H4 id="toc-hId-1285618797">Setting "Conditions" in Alert Notification service</H4><BR /> The configuration of Alert Notification service in this use case is to notify our DevOps team in case of failed CID jobs. There are various of available parameters to be considered when the condition within the Alert Notification service is to be set – you can check out the available event properties <A href="https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/enable-build-notifications" target="_blank" rel="noopener noreferrer">here</A>.<BR /> <BR /> Nevertheless, I have decided to go with two conditions:<BR /> <UL><BR /> <LI><BR /> <PRE><CODE>eventType = end<BR /> </CODE></PRE><BR /> </LI><BR /> <LI><BR /> <PRE><CODE>body CONTAINS Build has finished with 'FAILURE'</CODE></PRE><BR /> </LI><BR /> </UL><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-condition-2.png" height="197" width="420" /></P><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-condition-1.png" height="201" width="429" /></P><BR /> NOTE: Mandatory conditions are those that must always be met within the subscriptions where they are used. For the second condition I have enabled the mandatory condition so that I will receive notification only the ended builds that have been failed.<BR /> <H4 id="toc-hId-1257288983">Setting "Actions" in Alert Notification service</H4><BR /> As an action I have created two actions that will be triggered in parallel:<BR /> <UL><BR /> <LI><A href="https://help.sap.com/docs/alert-notification/sap-alert-notification-for-sap-btp/email-action-type" target="_blank" rel="noopener noreferrer">send an email</A></LI><BR /> <LI><A href="https://help.sap.com/docs/alert-notification/sap-alert-notification-for-sap-btp/microsoft-teams-action-type" target="_blank" rel="noopener noreferrer">send an instant message over Microsoft Teams</A></LI><BR /> </UL><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-actions.png" height="239" width="410" /></P><BR /> <BR /> <H4 id="toc-hId-1060775478">Setting "Subscription" in Alert Notification service</H4><BR /> Of course, as already mentioned, it is needed to setup the relevant subscription where I have picked up both conditions and both actions already configured.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-subscription.png" height="534" width="482" /></P><BR /> <BR /> <H3 id="toc-hId-1157664980">End-to-end test and output</H3><BR /> As an end result, as expected, in case my pipeline fails, I get an instant notification delivered by the Alert Notification service over email and also in the relevant Microsoft Teams channel. The details included in these notifications are ingested directly from SAP Continuous Integration and Delivery (see below).<BR /> <H4 id="toc-hId-667748468">Email received</H4><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/ans-email-1.png" height="504" width="479" /></P><BR /> <BR /> <H4 id="toc-hId-471234963">Instant message over Microsoft Teams</H4><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/teams-1.png" height="176" width="440" /></P><BR /> <BR /> <H3 id="toc-hId-568124465">Other considerations</H3><BR /> <H4 id="toc-hId-78207953">SAP Automation Pilot</H4><BR /> In addition the described use case (as also shown in the solution diagram) it is also possible Alert Notification service to trigger automatically a remediation action executed by SAP Automation Pilot. This is not covered in the current blog-post but in case you are interested in, please feel free to check out these resources:<BR /> <UL><BR /> <LI><A href="https://help.sap.com/docs/alert-notification/sap-alert-notification-for-sap-btp/integrating-with-sap-automation-pilot" target="_blank" rel="noopener noreferrer">[help documentation] Integrating with SAP Automation Pilot</A></LI><BR /> <LI><SPAN style="font-size: 1rem">a webinar from 05/2023: "The Open Space of Application Operations within SAP BTP - SAP Alert Notification service &amp; SAP Automation Pilot" (see the video below)</SPAN></LI><BR /> </UL><BR /> <IFRAME width="560" height="315" src="https://www.youtube.com/embed/3eac-Gtu0Tk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></IFRAME><BR /> <H4 id="toc-hId--118305552">SAP Cloud ALM for Operations</H4><BR /> Another aspect of this use case is that the Alert Notification service can be integrated further into the <A href="https://support.sap.com/en/alm/sap-cloud-alm/operations.html" target="_blank" rel="noopener noreferrer">SAP Cloud ALM for Operations</A> that provides a central entry point to operate your complete SAP landscape running on different technologies (including SAP BTP).<BR /> <H4 id="toc-hId--314819057">Feedback / Questions</H4><BR /> I hope this blog-post is useful and in case of any questions / comments, please do not hesitate add a comment and / or reach out to me. 2024-01-09T15:22:17+01:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-kyma-deployments-easy-with-argocd-multiple-sources-apps/ba-p/13571940 SAP Kyma deployments easy with ArgoCD multiple-sources apps 2024-01-10T22:06:58+01:00 quovadis https://community.sap.com/t5/user/viewprofilepage/user-id/743 <TABLE style="width: 100%;border-collapse: collapse;background-color: #f5f5f5" border="1"><BR /> <TBODY><BR /> <TR style="height: 193px"><BR /> <TD style="width: 71.6%;height: 193px"><BR /> <DIV><BR /> <H1 id="toc-hId-834788713"><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/kyma-environment?q=kyma" target="_blank" rel="noopener noreferrer"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/argocd6.png" /></A></H1><BR /> </DIV><BR /> <DIV><BR /> <BR /> <A href="https://www.sap.com/uk/products/business-technology-platform/trial.html" target="_blank" rel="noopener noreferrer"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SAP_Business_Technology_Platform_R.png" /></A><BR /> <BR /> </DIV></TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> <TABLE style="border-collapse: collapse;width: 100%" border="1"><BR /> <TBODY><BR /> <TR><BR /> <TD style="width: 28.4%"><BR /> <BR /> <A href="https://medium.com/@nanditasahu031/getting-started-with-argocd-b5a02353e144" target="_blank" rel="nofollow noopener noreferrer"><IMG src="https://miro.medium.com/v2/resize:fit:1400/0*8W3t7eUT5WKvnHpG" width="187" height="119" /></A><BR /> <BR /> &nbsp;</TD><BR /> <TD style="width: 71.6%"><BR /> <BR /> Continuous integration and delivery is at the heart of any cloud native environment.<BR /> <BR /> <A href="https://discovery-center.cloud.sap/serviceCatalog/continuous-integration--delivery?region=all" target="_blank" rel="nofollow noopener noreferrer">SAP Continuous Integration and Delivery service</A> provides a way of configuring your development pipelines including access to your in-house corporate git repositories: <A href="https://developers.sap.com/tutorials/cicd-corporate-git.html" target="_blank" rel="noopener noreferrer">Connect SAP Continuous Integration and Delivery with Your Corporate Git</A><BR /> <BR /> <HR /><BR /> <BR /> However, when it comes to Kubernetes-based environments, including Kyma, <A href="https://argo-cd.readthedocs.io/en/stable/#overview" target="_blank" rel="nofollow noopener noreferrer">Argo CD</A> - a declarative, GitOps continuous delivery tool for Kubernetes - is a likely frontrunner.</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> Why <A href="https://medium.com/@nanditasahu031/getting-started-with-argocd-b5a02353e144" target="_blank" rel="nofollow noopener noreferrer">ArgoCD</A> is that popular with the Kubernetes environments ?<BR /> <BR /> Simply because it enforces their declarative and contractual nature, as described here: <A href="https://argo-cd.readthedocs.io/en/stable/#why-argo-cd" target="_blank" rel="nofollow noopener noreferrer">https://argo-cd.readthedocs.io/en/stable/#why-argo-cd</A><BR /> <BR /> <HR /><BR /> <BR /> Long story short. For this brief, I wanted to <STRONG>repurpose my custom helm pipelines</STRONG> into <A href="https://medium.com/@nanditasahu031/getting-started-with-argocd-b5a02353e144" target="_blank" rel="nofollow noopener noreferrer">ArgoCD</A>.<BR /> <BR /> The main hurdle I had to overcome was the fact that my original helm chart based pipeline is composed of several independent helm charts (sources).<BR /> <BR /> Luckily, ArgoCD supports both <STRONG><EM>single</EM></STRONG> and <STRONG><EM><A href="https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#multiple-sources-for-an-application" target="_blank" rel="nofollow noopener noreferrer">multiple</A></EM></STRONG> source deployments. (Please note, the <A href="https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#multiple-sources-for-an-application" target="_blank" rel="nofollow noopener noreferrer">multi-source deployments</A> are still a beta feature, thus subject to change.)<BR /> <BR /> That saved my day. Let me share how it went.<BR /> <H1 id="toc-hId-638275208">Putting it all together</H1><BR /> Here goes a high level architecture of a SAP solution deployed to a kyma cluster.<BR /> <BR /> As of such, it is a pretty standard SAP business solution that leverages the SAP BTP multi-tenancy model with the <A href="https://hub.docker.com/r/sapse/approuter" target="_blank" rel="nofollow noopener noreferrer">approuter</A>, frontend and backend services deployed to a kyma cluster (as described in way more details here: <A href="https://blogs.sap.com/2023/04/25/developing-multi-tenant-saas-applications-easy-with-sap-btp-kyma-runtime./" target="_blank" rel="noopener noreferrer">Developing multi-tenant SaaS applications easy with SAP BTP, Kyma runtime</A>.)<BR /> <BR /> The fronted is a React-Native build-app developed with <A href="https://help.sap.com/docs/build-apps/service-guide/what-is-sap-build-apps" target="_blank" rel="noopener noreferrer">SAP Build Apps</A> as described here: <A href="https://blogs.sap.com/2023/11/10/deploy-sap-build-apps-web-applications-easy-to-sap-btp-kyma-runtime./" target="_blank" rel="noopener noreferrer">Deploy SAP Build Apps web applications easy to SAP BTP, Kyma runtime.</A><BR /> <TABLE style="border-collapse: collapse;width: 100%" border="1"><BR /> <TBODY><BR /> <TR><BR /> <TD style="width: 100%"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/d-com-multi-tenant-saas.png" /></TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> Here goes the helm charts tree of the above solution:<BR /> <PRE id="tree-panel"><SPAN class="t-icon"><span class="lia-unicode-emoji" title=":package:">📦</span></SPAN>helm<BR /> ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":open_file_folder:">📂</span></SPAN>faas-app<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":open_file_folder:">📂</span></SPAN>templates<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>NOTES.txt<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>_helpers.tpl<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>apirule.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>binding-ias.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>configmap.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>deployment.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>destination-rule.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>resources.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>service-ias.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>service.yaml<BR /> ┃ ┃ ┗ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>xs-app.yaml<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>.helmignore<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>Chart.yaml<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>SAP_Best_scrn_R_gry_neg.png<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>kyma-logo.png<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>spark.jpeg<BR /> ┃ ┗ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>values.yaml<BR /> ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":open_file_folder:">📂</span></SPAN>faas-saas<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":open_file_folder:">📂</span></SPAN>templates<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>NOTES.txt<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>_helpers.tpl<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>binding-registry.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>binding-role.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>configmap.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>function.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>role.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>sa-secret.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>sa.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>saas-apirule.yaml<BR /> ┃ ┃ ┗ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>service-registry.yaml<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>Chart.yaml<BR /> ┃ ┗ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>values.yaml<BR /> ┗ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":open_file_folder:">📂</span></SPAN>faas-srv<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":open_file_folder:">📂</span></SPAN>templates<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>NOTES.txt<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>_helpers.tpl<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>binding-dest-x509.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>binding-dest.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>binding-quovadis-sap.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>binding-uaa.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>function.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>service-dest.yaml<BR /> ┃ ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>service-quovadis-sap.yaml<BR /> ┃ ┃ ┗ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>service-uaa.yaml<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>.helmignore<BR /> ┃ ┣ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>Chart.yaml<BR /> ┃ ┗ <SPAN class="t-icon"><span class="lia-unicode-emoji" title=":scroll:">📜</span></SPAN>values.yaml</PRE><BR /> &nbsp;<BR /> <BR /> That translates into the following <A href="https://argo-cd.readthedocs.io/en/stable/user-guide/projects/" target="_blank" rel="nofollow noopener noreferrer">argocd project</A> <STRONG>manifest</STRONG>:<BR /> <PRE class="language-abap"><CODE>project: default<BR /> source:<BR /> repoURL: 'https://github.com/quovadis.git'<BR /> path: kyma-btp/kyma/helm/<BR /> targetRevision: HEAD<BR /> destination:<BR /> namespace: anywhere<BR /> name: shoot--kyma-stage--*****<BR /> syncPolicy:<BR /> syncOptions:<BR /> - ServerSideApply=true<BR /> - RespectIgnoreDifferences=true<BR /> ignoreDifferences:<BR /> - group: apps<BR /> kind: Deployment<BR /> jsonPointers:<BR /> - /spec/replicas<BR /> - group: services.cloud.sap.com<BR /> kind: ServiceBinding<BR /> jsonPointers:<BR /> - /spec/parametersFrom<BR /> - group: serverless.kyma-project.io<BR /> kind: Function<BR /> jsonPointers:<BR /> - /spec/labels<BR /> - /spec/runtimeImageOverride<BR /> - group: batch<BR /> kind: Job<BR /> jsonPointers:<BR /> - /*<BR /> <BR /> sources:<BR /> - repoURL: 'https://github.com/quovadis.git'<BR /> path: kyma-btp/kyma/helm/faas-srv/<BR /> targetRevision: HEAD<BR /> helm:<BR /> valueFiles:<BR /> - values.yaml<BR /> parameters:<BR /> - name: services.app.service.port<BR /> value: &lt;port&gt;<BR /> - name: clusterDomain<BR /> value: &lt;custom domain&gt;<BR /> - name: gateway<BR /> value: &lt;istio gateway&gt;<BR /> - repoURL: 'https://github.com/quovadis.git'<BR /> path: kyma-btp/kyma/helm/faas-saas/<BR /> targetRevision: HEAD<BR /> helm:<BR /> valueFiles:<BR /> - values.yaml<BR /> parameters:<BR /> - name: services.app.service.port<BR /> value: &lt;port&gt;<BR /> - name: clusterDomain<BR /> value: &lt;custom domain&gt;<BR /> - name: gateway<BR /> value: &lt;istio gateway&gt;<BR /> - repoURL: 'https://github.com/quovadis.git'<BR /> path: kyma-btp/kyma/helm/faas-app/<BR /> targetRevision: HEAD<BR /> helm:<BR /> valueFiles:<BR /> - values.yaml<BR /> parameters:<BR /> - name: services.app.service.port<BR /> value: &lt;port&gt;<BR /> - name: clusterDomain<BR /> value: &lt;custom domain&gt;<BR /> - name: gateway<BR /> value: &lt;istio gateway&gt;</CODE></PRE><BR /> Good to know:<BR /> <UL><BR /> <LI>There is at least one <A href="https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#the-default-project" target="_blank" rel="nofollow noopener noreferrer"><STRONG>default</STRONG></A> argoCD project and a number of argoCD <STRONG>applications</STRONG> as well.</LI><BR /> <LI>ArgoCD <A href="https://argo-cd.readthedocs.io/en/stable/operator-manual/app-any-namespace/" target="_blank" rel="nofollow noopener noreferrer">applications</A> may be pointing to different target kyma clusters and/or namespaces.</LI><BR /> </UL><BR /> For instance, here goes a top level application view of resources deployed to a kyma cluster<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/argocd4-1.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> After the deployment to a kyma cluster the business users (aka consumers) gain access to the kyma app by subscribing to it from the Service Marketplace in their respective BTP tenants (sub-accounts).<BR /> <BR /> Eventually, in order to acquire permissions to access the app, business users must be assigned suitable role collections available to them in their respective BTP sub-accounts.<BR /> <TABLE style="border-collapse: collapse;width: 100%" border="1"><BR /> <TBODY><BR /> <TR><BR /> <TD style="width: 100%"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/argocd4.png" /></TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> <H2 id="toc-hId-570844422">ArgoCD APIs</H2><BR /> Last but not least, another great feature of ArgoCD is the REST APIs package and its <A href="https://argo-cd.readthedocs.io/en/stable/developer-guide/api-docs/" target="_blank" rel="nofollow noopener noreferrer">swagger definition</A>.<BR /> <BR /> Eventually, I used SAP API Management to implement the whole <A href="https://gist.github.com/ptesny/03510fcf1b7897ddaf32b7ac7bb5e5b0" target="_blank" rel="nofollow noopener noreferrer">ArgCD API package</A> as an API proxy.<BR /> <BR /> For instance, one can manage argoCD applications programmatically:<BR /> <TABLE style="border-collapse: collapse;width: 100%" border="1"><BR /> <TBODY><BR /> <TR><BR /> <TD style="width: 100%"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2024/01/argocd7.png" /></TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> <HR /><BR /> <BR /> <H1 id="toc-hId-245248198">Appendix</H1><BR /> <H2 id="toc-hId-177817412"><A href="https://gist.github.com/ptesny/03510fcf1b7897ddaf32b7ac7bb5e5b0#prepare-your-kyma-cluster-for-argocd-operations" target="_blank" rel="nofollow noopener noreferrer">Prepare your kyma cluster for ArgoCD operations</A></H2><BR /> Assuming you have a<A href="https://blogs.sap.com/2023/06/01/service-accounts-easy-with-sap-btp-kyma-runtime/" target="_blank" rel="noopener noreferrer"> service account token-based</A> <A href="https://gist.github.com/ptesny/03510fcf1b7897ddaf32b7ac7bb5e5b0#service-account-token-based-kubeconfig-to-access-your-cluster" target="_blank" rel="nofollow noopener noreferrer">kubeconfig</A> to access your kyma cluster.<BR /> <BR /> The below <A href="https://gist.github.com/ptesny/03510fcf1b7897ddaf32b7ac7bb5e5b0#file-makefile-md" target="_blank" rel="nofollow noopener noreferrer">Makefile</A> summerizes the steps required to add a shoot kyma cluster to an ArgoCD instance:<BR /> <UL><BR /> <LI>create a dedicated namespace for argocd related configurations</LI><BR /> <LI>Create a service account to be used by argocd</LI><BR /> <LI>create a cluster rolebinding for argocd service account</LI><BR /> <LI>create a target namespace in your cluster to deploy argocd applications to</LI><BR /> <LI>log into your argocd service</LI><BR /> <LI>add your cluster by its shoot name to your argocd service</LI><BR /> </UL><BR /> <PRE class="language-abap"><CODE>.DEFAULT_GOAL := help<BR /> <BR /> LOCAL_DIR = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))<BR /> <BR /> <BR /> ARGOCD_NAMESPACE=argocd<BR /> ARGOCD_SERVICEACCOUNT=demo-argocd-manager<BR /> KUBECONFIG=~/.kube/kubeconfig--c-***.yaml<BR /> NAMESPACE=quovadis<BR /> ARGOCD=&lt;argocd server&gt;<BR /> <BR /> CUSTOM_DOMAIN= $(shell kubectl get cm -n kube-system shoot-info --kubeconfig $(KUBECONFIG) -ojsonpath='{.data.domain}' )<BR /> SHOOT_NAME= $(shell kubectl config current-context --kubeconfig $(KUBECONFIG) )<BR /> <BR /> help: ## Display this help.<BR /> @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m&lt;target&gt;\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)<BR /> echo $(KUBECONFIG) $(NAMESPACE) $(SHOOT_NAME)<BR /> <BR /> <BR /> .PHONY: argocd-bootstrap-cluster<BR /> argocd-bootstrap-cluster: ## bootstrap argocd on your kyma cluster<BR /> # create a dedicated namespace for argocd related configurations<BR /> kubectl create ns $(ARGOCD_NAMESPACE) --kubeconfig $(KUBECONFIG) --dry-run=client -o yaml | kubectl apply --kubeconfig $(KUBECONFIG) -f -<BR /> # Create a service account to be used by argocd<BR /> kubectl -n $(ARGOCD_NAMESPACE) create serviceaccount $(ARGOCD_SERVICEACCOUNT) --kubeconfig $(KUBECONFIG) --dry-run=client -o yaml | kubectl apply --kubeconfig $(KUBECONFIG) -f -<BR /> # create a cluster rolebinding for argocd service account<BR /> kubectl create clusterrolebinding $(ARGOCD_SERVICEACCOUNT) --serviceaccount $(ARGOCD_NAMESPACE):$(ARGOCD_SERVICEACCOUNT) --clusterrole cluster-admin --kubeconfig $(KUBECONFIG) --dry-run=client -o yaml | kubectl apply --kubeconfig $(KUBECONFIG) -f -<BR /> <BR /> kubectl create ns $(NAMESPACE) --kubeconfig $(KUBECONFIG) --dry-run=client -o yaml | kubectl apply --kubeconfig $(KUBECONFIG) -f -<BR /> kubectl label namespace $(NAMESPACE) istio-injection=enabled --kubeconfig $(KUBECONFIG)<BR /> <BR /> argocd login $(ARGOCD) --sso<BR /> argocd cluster add $(SHOOT_NAME) --service-account $(ARGOCD_SERVICEACCOUNT) --system-namespace $(ARGOCD_NAMESPACE) --namespace $(NAMESPACE) --kubeconfig $(KUBECONFIG)</CODE></PRE><BR /> <H2 id="toc-hId--18696093"></H2><BR /> <H2 id="toc-hId--215209598"><A href="https://gist.github.com/ptesny/03510fcf1b7897ddaf32b7ac7bb5e5b0#argocd-applications" target="_blank" rel="nofollow noopener noreferrer">ArgoCD application(s)</A></H2><BR /> As aforementioned, any argoCD application must be part of a project. And anyone can use the default argoCD project to start with...<BR /> <PRE class="language-javascript"><CODE>apiVersion: argoproj.io/v1alpha1<BR /> kind: Application<BR /> metadata:<BR /> name: quovadis-rwx<BR /> spec:<BR /> destination:<BR /> name: ''<BR /> namespace: quovadis<BR /> server: 'https://api.*****.stage.kyma.ondemand.com'<BR /> source:<BR /> path: kyma-btp/kyma/helm<BR /> repoURL: 'https://github.tools.sap/&lt;repo&gt;/quovadis.git'<BR /> targetRevision: HEAD<BR /> sources: []<BR /> project: default<BR /> syncPolicy:<BR /> syncOptions:<BR /> - ServerSideApply=true<BR /> - RespectIgnoreDifferences=true<BR /> </CODE></PRE><BR /> <H2 id="toc-hId--411723103"></H2><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/11/argocd5-1.png" /></P><BR /> &nbsp;<BR /> <H1 id="toc-hId--737319327">Additional reading</H1><BR /> ArgoCD blogposts:<BR /> <UL><BR /> <LI><A href="https://medium.com/@nanditasahu031/getting-started-with-argocd-b5a02353e144" target="_blank" rel="nofollow noopener noreferrer">Getting Started with ArgoCD</A></LI><BR /> <LI><A href="https://blogs.sap.com/2023/11/05/gitops-with-argo-cd-kyma-multi-cluster-management/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/11/05/gitops-with-argo-cd-kyma-multi-cluster-management/</A></LI><BR /> </UL><BR /> <UL><BR /> <LI><A href="https://amralaayassen.medium.com/how-to-create-argocd-applications-automatically-using-applicationset-automation-of-the-gitops-59455eaf4f72" target="_blank" rel="nofollow noopener noreferrer">How to create ArgoCD Applications Automatically using ApplicationSet? “Automation of GitOps”</A></LI><BR /> <LI><A href="https://medium.com/@outlier.developer/getting-started-with-argocd-for-gitops-kubernetes-deployments-fafc2ad2af0" target="_blank" rel="nofollow noopener noreferrer">Getting Started with ArgoCD for GitOps Kubernetes Deployments</A></LI><BR /> </UL><BR /> &nbsp; 2024-01-10T22:06:58+01:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/test-automation-tool-for-sap-s-4hana-cloud-public-edition-2402-release/ba-p/13585998 Test Automation Tool for SAP S/4HANA Cloud Public Edition 2402 Release Overview 2024-01-30T10:12:22.850000+01:00 Anurag_Nayak https://community.sap.com/t5/user/viewprofilepage/user-id/19436 <P>Embedding intelligence into our products has been the main focus topic for this release. The 2402 Cloud Release introduces new features around AI/ML for advanced error analysis and functions which build on the tool being an integrated part of the SAP S/4HANA Cloud solution.</P><P style=" text-align: center; "><FONT size="5"><STRONG>Intelligent Test Scoper(i-TS)</STRONG></FONT></P><P>The new Intelligent Test Scoper(i-TS) app leverages the embedded nature of the test automation tool to provide an optimized scope based on the code changes done as part of a major release or <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Continuous+Integration+and+Delivery/pd-p/73554900100800001771" class="lia-product-mention" data-product="1173-1">SAP Continuous Integration and Delivery</a>&nbsp;. The app currently suggests Post Upgrade Tests(PUT) Standard Scripts which cover the changes done in the particular software update. The consolidated list of automates provide a more efficient and optimized scope for running PUT.<BR /><BR /><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Intelligent Test Scoper(i-TS) Application" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55537i6174F5A3D47B847A/image-size/large?v=v2&amp;px=999" role="button" title="iTS.jpg" alt="Intelligent Test Scoper(i-TS) Application" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Intelligent Test Scoper(i-TS) Application</span></span></P><P>&nbsp;</P><P>The i-TS app is integrated with the Manage Upgrade Tests(MUT) solution and provides a one click option of moving the optimized scope to a new execution variant. The execution variant created is marked as “optimized” scope and will be then available for PUT in the Test Your Process(TYP) application.</P><P>You can read more about the evolution of the <A title="Evolution of Intelligent Test Scoper(i-TS)" href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/i-ts-intelligent-test-scoper-journey-of-an-in-house-test-engineering/ba-p/13578938" target="_blank">i-TS tool here</A>.</P><P style=" text-align: center; "><FONT size="5"><STRONG>ABAP Units as part of Post Upgrade Tests(PUT)</STRONG></FONT></P><P><A title="Embedded Steampunk – Some more details for ABAP developers" href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/embedded-steampunk-some-more-details-for-abap-developers/ba-p/13532714" target="_blank">Embedded Steampunk</A> <SPAN>allows customers and partners to create cloud-ready and upgrade-stable ABAP extensions</SPAN>. There is a need to ensure these <A title="Automated testing of applications developed with ABAP Cloud" href="https://community.sap.com/t5/technology-blogs-by-sap/automated-testing-of-applications-developed-with-abap-cloud/ba-p/13583979" target="_blank">extensions work well release on release</A>. With the feature of <A title="ABAP Units in PUT" href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/9f3351bbe2f04b42bb29f690886a6f54/fbef3b02fc394d45b2018630c8ee7ab1.html?locale=en-US&amp;version=latest" target="_blank" rel="noopener noreferrer">ABAP Units as part of the PUT process</A> we enable customers to test their custom ABAP Units as part of the release regression suite. MUT application has been enhanced with an additional tab “ABAP Units” where users can add ABAP Units to an execution variant and utilize it in the PUT run. Results will be shown on the PUT track results page, the information can be downloaded as an excel file and further actions can be taken up in ABAP Development Tool(ADT).<BR /><BR /><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ABAP Units in Post Upgrade Tests(PUT)" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55539i729611CFFF5CA0B1/image-size/large?v=v2&amp;px=999" role="button" title="ABAP Units.jpg" alt="ABAP Units in Post Upgrade Tests(PUT)" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ABAP Units in Post Upgrade Tests(PUT)</span></span></P><P style=" text-align: center; "><FONT size="5"><STRONG>Automation Failure Classification(AFC)</STRONG></FONT></P><P>While the feature of AFC has been available in the Analyse Automated Test Results(AATR) application for some time, from this release you would be able to see if the classification has happened via “ML Text Classification” or “Regular Expressions”. AFC is now able to categorize close to 70% of the automate failures. This features also provides Recommendations to solve the automate error based on the error message and classification.<BR /><BR /><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Error Classification" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55540i7D78A2F2A87342E5/image-size/large?v=v2&amp;px=999" role="button" title="Classification.jpg" alt="Error Classification" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Error Classification</span></span></P><P style=" text-align: center; ">&nbsp;<STRONG>Additional Innovations</STRONG></P><P>Some additional features which increase the overall user experience are as follows:</P><UL><LI>The ”Execution Variant” tab is now deprecated and all relevant PUT scope grouped into an execution variant called Default PUT Scope</LI><LI>Restriction on deleting execution variants that has been executed before or the one currently being executed</LI></UL><P style=" text-align: center; "><STRONG>SAP Delivered Standard Automates</STRONG></P><P>The total list of SAP delivered automated test scripts are 414 for 2402 and can be accessed via link – <A href="https://support.sap.com/content/dam/SAAP/SAP_Activate/S4H_640%20Automated%20Test%20Scripts%20Index.xlsx" target="_blank" rel="noopener noreferrer">Automated Test Scripts Index</A>”. This includes 8 new scope items which were added this release.</P><P>Further detailed change information about the standard automate is available in the “<A href="https://support.sap.com/content/dam/SAAP/SAP_Activate/S4H_667%20Automated%20Test%20Scripts%20Change%20History.xlsx" target="_blank" rel="noopener noreferrer">Automated Test Script Change History</A>” and “<A href="https://support.sap.com/content/dam/SAAP/SAP_Activate/S4H_606%20Test%20Script%20Release%20Change%20Information.xlsx" target="_blank" rel="noopener noreferrer">Test Script Release Change Information</A>”.</P><P style=" text-align: center; "><STRONG>Important Links and Updates</STRONG></P><P>You can also access the replay from the&nbsp;<A href="https://saplearninghub.plateau.com/learning/user/catalog/launchOnlineContentFromCatalog.do?origin=catalog&amp;componentTypeID=EXPERT%5fLED&amp;componentID=LS%5f00004526&amp;revisionDateMilliseconds=1702368296000&amp;revisionDate=1702368296000&amp;actionName=launchContent&amp;classification=#/FBA99B003B8498C318005D42C60A1A34" target="_blank" rel="noopener nofollow noreferrer">SAP S/4HANA Cloud 2402 Early Release Series</A>&nbsp;which highlights the key new features. Details on how to login and access the content is available&nbsp;<A href="https://blogs.sap.com/2020/11/11/sap-s-4hana-cloud-early-release-series-watch-replays-on-demand/?preview_id=1218772" target="_blank" rel="noopener noreferrer">here</A>.</P><P>As part of our PUT 2.0 Enablement also we have created a set of short videos which cover the most important aspects of the process. The video playlist can be accessed <A href="https://video.sap.com/playlist/dedicated/1_hq6vc3yd/" target="_blank" rel="noopener noreferrer">here</A>.</P><P>Also continuing our trend of highlighting important blogs written on test automation topic below are some blogs we definitely recommend:</P><UL><LI><A title="SAP Cloud ALM and a Test Automation Tool" href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-connect-sap-cloud-alm-and-a-test-automation-tool/ba-p/13575967" target="_blank">How to connect SAP Cloud ALM and a Test Automation Tool</A> by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/164863" target="_blank">Xavier06</A></LI><LI><A title="Tooling for ERP as a Service Test Automation in SAP S/4HANA Cloud, Public Edition" href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/cloud-erp-close-up-tooling-for-erp-as-a-service-test-automation-in-sap-s/ba-p/13576681" target="_blank">Cloud ERP Close-Up: Tooling for ERP as a Service Test Automation in SAP S/4HANA Cloud, Public Edition</A> by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/8440" target="_blank">Bert Schulze</A></LI><LI><A title="Manage Test Data in SAP S/4HANA Cloud Test Automation Tool" href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/manage-test-data-in-sap-s-4hana-cloud-test-automation-tool/ba-p/13577147" target="_blank">Manage Test Data in SAP S/4HANA Cloud Test Automation Tool</A> by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/167162" target="_blank">Hrishikesh Wagle</A></LI><LI><A title="Deprecation of Outdated Automates" href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/deprecation-of-outdated-automates/ba-p/13575651" target="_blank">Deprecation of Outdated Automates</A> by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/12997" target="_blank">Apoorva</A></LI></UL><P>Please bookmark the&nbsp;<A href="https://community.sap.com/topics/s4hana-cloud/automation-testing" target="_blank">test automation community page</A>&nbsp;to keep up with the latest updates happening in the test automation space.</P><P>For more details on the functionality please refer the links below:</P><P style=" text-align: center; "><A title="Intelligent Test Scoper" href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/d72d7bb74cf043a58474f0c2d76e857d/5d5d6bfa02c24adf8e12d272d93acaef.html?locale=en-US&amp;version=2402.500" target="_self" rel="noopener noreferrer">Intelligent Test Scoper (i-TS)</A>&nbsp;<BR /><A href="https://help.sap.com/viewer/9f3351bbe2f04b42bb29f690886a6f54/latest/en-US/dd1dc59e34364a26b1c6183a1369612b.html" target="_blank" rel="noopener noreferrer">Manage Upgrade Tests&nbsp;</A><BR /><A href="https://help.sap.com/viewer/1e9ba004e0504506a135afda960e9495/latest/en-US/b076dd00e70b4b30b1c250be655d45d2.html" target="_blank" rel="noopener noreferrer">Manage Your Test Processes</A><BR /><A href="https://help.sap.com/viewer/2ab07d21f68c41109a2eef21b8fd8466/latest/en-US/ddd0a0cf45964225bff64c10e8de8e38.html" target="_blank" rel="noopener noreferrer">Test Your Processes</A><BR /><A href="https://help.sap.com/viewer/1c73afbf7d154fcf9b5ec127d1793ffa/latest/en-US/70e4bb5e3875480ea15a033d943e4ecf.html" target="_blank" rel="noopener noreferrer">Test Data Container</A><BR /><A href="https://help.sap.com/viewer/7ce8f79186e1445ab82e37439eba795c/latest/en-US/a4a4c6e62b894d5a88d0d8300620e278.html" target="_blank" rel="noopener noreferrer">Analyze Automated Test Results</A><BR /><A href="https://help.sap.com/viewer/2ab07d21f68c41109a2eef21b8fd8466/latest/en-US/5d867592753c465aadb81115de672f91.html#loiod3af90f0c9ec4e819bdd945f54ed9b72" target="_blank" rel="noopener noreferrer">Configure Conditional Authentication</A><BR />Also refer&nbsp;<A href="https://help.sap.com/viewer/2ab07d21f68c41109a2eef21b8fd8466/latest/en-US/acaf51440ec84e409895cd8cde9486cb.html?q=FAQ" target="_blank" rel="noopener noreferrer">FAQs</A></P><P style=" text-align: center; ">--------------------------------------------------------------------------------------------------------------------------------------------------</P><P>Don’t hesitate to leave a comment and check out our <SPAN><A href="https://pages.community.sap.com/topics/s4hana-cloud" target="_blank" rel="noopener noreferrer">new community page</A></SPAN> to ask your questions and engage with the experts. Follow the <SPAN><A href="https://community.sap.com/t5/tag/PSCC_Enablement/tg-p/board-id/erp-blog-sap" target="_blank">PSCC_Enablement</A></SPAN> tag to stay up to date with our latest blog posts.</P><P>Follow us on <SPAN><A href="https://twitter.com/sap" target="_blank" rel="noopener nofollow noreferrer">@SAP</A></SPAN> and #S4HANA, and myself via <A href="https://www.linkedin.com/in/annayak/" target="_blank" rel="noopener nofollow noreferrer">LinkedIn</A>.</P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":film_projector:">📽</span>️ Watch Our Live Sessions</P><P>In January 2024, we hosted a series of <STRONG>19 compelling live sessions</STRONG> to highlight the exciting innovations shipped with the <STRONG>SAP S/4HANA Cloud Public Edition 2402 release</STRONG>. Missed the live sessions? No problem! Take advantage of the entire series or pick and choose the sessions most relevant to you <SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/watch-the-replays-of-our-exclusive-sap-s-4hana-cloud-public-edition-2402/ba-p/13587019" target="_blank"><STRONG>on demand</STRONG></A></SPAN>.</P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":studio_microphone:">🎙</span>️ Inside SAP S/4HANA Cloud</P><P>There is no customer success without project success and product success! Leverage the unique knowledge and expertise of SAP S/4HANA Cloud experts, partners, and customers, sharing their SAP S/4HANA Cloud implementation project best practices and lessons learned – anywhere, anytime. In this podcast, we give you all ingredients to get to the next level and make your SAP S/4HANA Cloud project a success. <SPAN><A href="https://podcast.opensap.info/inside-sap/" target="_blank" rel="noopener nofollow noreferrer">Subscribe now</A></SPAN> and benefit from the shared knowledge!</P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":laptop_computer:">💻</span>openSAP Microlearnings for SAP S/4HANA Cloud</P><P>Our openSAP microlearnings for SAP S/4HANA Cloud offer an exciting new learning opportunity. What began with a small batch of 20 videos, has now become a channel with more than 50 microlearnings that have generated over 20,000 views. Today, we cover multiple lines of business such as finance, manufacturing, and supply chain management, and key technology topics like Master Data Management, extensibility, SAP User Experience, and upgrade management. We are continuously adding new microlearnings to <SPAN><A href="https://blogs.sap.com/2020/05/07/boost-your-knowledge-with-sap-s-4hana-microlearnings/" target="_blank" rel="noopener noreferrer">our channel</A></SPAN>, so make sure you check them out.</P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":speaking_head:">🗣</span>️ Your Voice Matters</P><P>You want to learn more and actively engage with SAP subject matter experts on SAP S/4HANA Cloud topics? We have just the right place for you! Join our <SPAN><A href="https://community.sap.com" target="_blank">interactive community</A></SPAN> where we bring together customers, partners, and SAP experts with a clear mission: To engage with one another about best practices and product solutions. We invite you to explore the ‘one-stop shop’ as the central place for all resources, tools, content questions, answers and to connect with experts who will guide you through your journey to the intelligent, sustainable enterprise.</P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":magnifying_glass_tilted_right:">🔎</span>Find All of Our Assets</P><P>SAP S/4HANA Cloud is the foundation of the intelligent, sustainable enterprise and is an innovative, robust, and scalable ERP. We at Cloud ERP Product Success and Cloud Co-Innovation offer a service as versatile as our product itself. Check out the numerous offerings our team has created for you below:</P><P style=" text-align: center; "><A href="https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Anurag_Nayak_0-1710157527044.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/78441i39676B2A8CFFE5E0/image-size/medium?v=v2&amp;px=400" role="button" title="Anurag_Nayak_0-1710157527044.png" alt="Anurag_Nayak_0-1710157527044.png" /></span></A></P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":direct_hit:">🎯</span>Where to Find More Information:</P><UL><LI>Read up on the highlights of the SAP S/4HANA Cloud Public Edition 2402 release here: <SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/highlights-of-the-sap-s-4hana-cloud-public-edition-2402-release/ba-p/13587480" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/highlights-of-the-sap-s-4hana-cloud-public-edition-2402-release/ba-p/13587480</A></SPAN></LI><LI>Interested in an SAP S/4HANA Cloud Public Edition 2402 update on the intelligent ERP? Read all about it here: <SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-s-4hana-cloud-public-edition-2402-intelligent-erp-update/ba-p/13584760" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-s-4hana-cloud-public-edition-2402-intelligent-erp-update/ba-p/13584760</A></SPAN>&nbsp;</LI><LI>Watch the replays of our exclusive SAP S/4HANA Cloud Public Edition 2402 Early Release Series here: <SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/watch-the-replays-of-our-exclusive-sap-s-4hana-cloud-public-edition-2402/ba-p/13587019" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/watch-the-replays-of-our-exclusive-sap-s-4hana-cloud-public-edition-2402/ba-p/13587019</A></SPAN></LI><LI>Explore the ready-to-run cloud ERP here: <SPAN><A href="https://www.sap.com/products/erp/s4hana.html" target="_blank" rel="noopener noreferrer">https://www.sap.com/products/erp/s4hana.html</A></SPAN></LI><LI>Watch our SAP S/4HANA Cloud product update videos on YouTube: <SPAN><A href="https://www.youtube.com/playlist?list=PLWV533hWWvDnnyN2j-CcUheNN-GaNCb3H" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/playlist?list=PLWV533hWWvDnnyN2j-CcUheNN-GaNCb3H</A></SPAN></LI><LI>Check out our digital enablement wheel here: <SPAN><A href="https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset" target="_blank" rel="noopener nofollow noreferrer">https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset</A></SPAN></LI><LI>Find out how to switch from groups to spaces and pages here: <SPAN><A href="https://blogs.sap.com/2023/11/06/deactivation-of-groups-in-the-sap-fiori-launchpad-in-sap-s-4hana-cloud-public-edition-2402-switching-to-spaces-and-pages-mandatory/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/11/06/deactivation-of-groups-in-the-sap-fiori-launchpad-in-sap-s-4hana-cloud-public-edition-2402-switching-to-spaces-and-pages-mandatory/</A></SPAN></LI><LI>Become an early adopter for Joule in SAP S/4HANA Cloud Public Edition here: <SPAN><A href="https://influence.sap.com/sap/ino/#campaign/3612" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#campaign/3612</A></SPAN></LI><LI>Check out the SAP Activate Roadmap for early adopters here: <SPAN><A href="https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapOverviewPage/0894b61141a74a65b8da92db32685da5" target="_blank" rel="noopener noreferrer">https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapOverviewPage/0894b61141a74a65b8da92db32685da5</A></SPAN></LI><LI>Review the PPL content here: <SPAN><A href="https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapContentPage/0894b61141a74a65b8da92db32685da5:t8" target="_blank" rel="noopener noreferrer">https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapContentPage/0894b61141a74a65b8da92db32685da5:t8</A></SPAN></LI><LI>Listen to our podcast here: <SPAN><A href="https://podcast.opensap.info/inside-sap/" target="_blank" rel="noopener nofollow noreferrer">https://podcast.opensap.info/inside-sap/</A></SPAN></LI><LI>Watch our openSAP microlearnings to learn about SAP S/4HANA Cloud topics at your own pace here: <SPAN><A href="https://microlearning.opensap.com/" target="_blank" rel="noopener noreferrer">https://microlearning.opensap.com/</A></SPAN></LI><LI>Find best practices on SAP S/4HANA Cloud Public Edition here: <SPAN><A href="https://me.sap.com/processnavigator/SolS/EARL_SolS-013/latest?region=DE" target="_blank" rel="noopener noreferrer">https://me.sap.com/processnavigator/SolS/EARL_SolS-013/latest?region=DE</A></SPAN></LI><LI>Check out what’s new here: <SPAN><A href="https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226</A></SPAN> <SPAN>&nbsp;</SPAN></LI><LI>Find help here: <SPAN><A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_S4HANA_CLOUD</A></SPAN></LI><LI>Read the feature scope description here: <SPAN><A href="https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3</A></SPAN></LI></UL> 2024-01-30T10:12:22.850000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/using-integration-suite-piper-commands-in-github-actions-ci-cd-platform/ba-p/13601846 Using Integration Suite Piper commands in GitHub Actions (CI/CD) platform 2024-02-12T04:00:36.795000+01:00 mayurbelur_mohan https://community.sap.com/t5/user/viewprofilepage/user-id/260631 <P><SPAN>Github Actions provides a way to Automate, customize, and execute your software development workflows right in your Github repository.&nbsp;</SPAN></P><P><SPAN>Github Actions is a continuous integration and continuous delivery (CI/CD) platform that automates build, test, and deployment pipelines. It also allows you to execute code in the repository when certain events occur, making it easy to extend and customize.</SPAN></P><P><SPAN>&nbsp;In this Blog we will showcase how to build GitHub Actions Workflow for deploying the integration flow using Integration&nbsp;Suite Piper Commands.</SPAN></P><P><SPAN>A workflow is a series of actions initiated once a triggering event occurs. For example, the triggering event can be some commit pushed to a GitHub repository, the creation of a pull request etc.</SPAN></P><P>The set of instructions for a workflow is kept in a workflow file and written in YAML. The workflow file specifies what commands or scripts to run, the default settings, the environment for the commands, etc.&nbsp;</P><P>The workflow is divided into jobs, and each job performs a set of steps. Each step runs one or more commands and can also call self-contained units of commands called actions. Each step runs on computational resources called runners, and the default settings can specify it to be Windows or Linux.</P><P><SPAN>Lets build a workflow which deploy the integration flow in to the SAP Cloud integration Tenant</SPAN></P><P><FONT size="5"><STRONG>Create a Workflow</STRONG></FONT></P><P><SPAN>1.&nbsp;Create a repository and name it .github/workflows inside the GitHub repository GithubActionsDemo.&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mayurbelur_mohan_0-1707703786309.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63803i689149ADC5CA02A7/image-size/large?v=v2&amp;px=999" role="button" title="mayurbelur_mohan_0-1707703786309.png" alt="mayurbelur_mohan_0-1707703786309.png" /></span></P><P>2.&nbsp;Create a yml file and name it iflowDeploy.yml.<span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="mayurbelur_mohan_1-1707703955894.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63805i83C427659948D96B/image-size/large?v=v2&amp;px=999" role="button" title="mayurbelur_mohan_1-1707703955894.png" alt="mayurbelur_mohan_1-1707703955894.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>3.&nbsp;Paste the following code inside the iflowDeploy.yml file.</P><P>&nbsp;</P><pre class="lia-code-sample language-yaml"><code>name: SAP Cloud Integration deploy IFlow Test on: push: jobs: build: runs-on: ubuntu-latest steps: - name: integrationArtifactDeploy uses: SAP/project-piper-action@main with: step-name: integrationArtifactDeploy flags: --apiServiceKey ${{ secrets.CPIAPISERVICEKEYCREDENTIALSID }} --integrationFlowId PurchaseOrderHandlerDemo</code></pre><P>&nbsp;</P><P>4. Copy the SAP Cloud Integration Service Key for API Plan from SAP BTP Cockpit<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mayurbelur_mohan_2-1707704627717.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63807i5777DCDD244B39D8/image-size/large?v=v2&amp;px=999" role="button" title="mayurbelur_mohan_2-1707704627717.png" alt="mayurbelur_mohan_2-1707704627717.png" /></span></P><P>5. Copy the JSON Content to the Text Editor and remove line breaks and spaces. make complete JSON appear in single line without any such line breaks or spaces.</P><P>For example:&nbsp;{"oauth":{"createdate":"2022-11-02T09:48:13.398Z","clientid":"sb-47bbf5d2-d764-45d7-ba46-d6bd540cc4c6!b17976|it!b2455","url":"<A href="https://XXX.it-cpi999.cfapps.us10.hana.ondemand.com" target="_blank" rel="noopener nofollow noreferrer">https://XXX.it-cpi999.cfapps.us10.hana.ondemand.com</A>","clientsecret":"c52bbcff-ca23-4f90-b01f-73b0f552ebb6$fXqdreVaI13WTn8cdgXNW5Tt83RfvFg9pyVYBAVz8WI=","tokenurl":"<A href="https://XXX.authentication.usXX.hana.ondemand.com/oauth/token" target="_blank" rel="noopener nofollow noreferrer">https://XXX.authentication.usXX.hana.ondemand.com/oauth/token</A>"}}</P><P>6. Create repository secret and save above content by name&nbsp;CPIAPISERVICEKEYCREDENTIALSID&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mayurbelur_mohan_3-1707705186409.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63809iFB4C7429D15ECBDC/image-size/large?v=v2&amp;px=999" role="button" title="mayurbelur_mohan_3-1707705186409.png" alt="mayurbelur_mohan_3-1707705186409.png" /></span></P><H3 id="toc-hId-1115117700">Test Workflow</H3><P><STRONG>To test the workflow in the committed workflow file:</STRONG></P><OL><LI>Since our workflow’s trigger is a push event, push a commit on this repository branch via directly editing report content or from Git tool.</LI><LI>Go to the repository’s page on GitHub and click the<SPAN>&nbsp;</SPAN><STRONG>Actions<SPAN>&nbsp;</SPAN></STRONG>tab under the repository’s name.</LI><LI>At the top, the commit message for the push that triggered the workflow will be visible.<BR /><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mayurbelur_mohan_5-1707705541189.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63811i2F96F355A22435D4/image-size/large?v=v2&amp;px=999" role="button" title="mayurbelur_mohan_5-1707705541189.png" alt="mayurbelur_mohan_5-1707705541189.png" /></span><P>&nbsp;</P></LI><LI>Once the workflow is complete, click on the tab with the commit message. In this case, click on<SPAN>&nbsp;"<STRONG>Update Readme.txt"</STRONG></SPAN>.&nbsp;</LI><LI>The job name and status will appear on right side&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mayurbelur_mohan_6-1707705735096.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63812iAC523A1979EC1264/image-size/large?v=v2&amp;px=999" role="button" title="mayurbelur_mohan_6-1707705735096.png" alt="mayurbelur_mohan_6-1707705735096.png" /></span><P>&nbsp;</P>&nbsp;</LI><LI>Clicking on the job will show the output from each step in the workflow.</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mayurbelur_mohan_7-1707705946064.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63813iA6F776B02455592D/image-size/large?v=v2&amp;px=999" role="button" title="mayurbelur_mohan_7-1707705946064.png" alt="mayurbelur_mohan_7-1707705946064.png" /></span></P><P>From the results you can see that&nbsp;integrationArtifactDeploy piper command successfully executed.&nbsp;</P><P>7. Verify the integration flow deployment in to SAP Cloud integration Tenant&nbsp;</P><P>&nbsp; As you see below&nbsp; integration flow PurchaseOrderHandlerDemo deployed in to SAP Cloud integration tenant runtime.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mayurbelur_mohan_8-1707706208706.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/63814iBFA57B53A532B678/image-size/medium?v=v2&amp;px=400" role="button" title="mayurbelur_mohan_8-1707706208706.png" alt="mayurbelur_mohan_8-1707706208706.png" /></span></P><P>In this way you can use any of the Integration Suite piper commands referred in my earlier <A href="https://community.sap.com/t5/technology-blogs-by-sap/working-with-integration-suite-piper-commands/ba-p/13543392" target="_self">blog</A> in the GitHub Actions project and implement you own CI/CD pipelines.&nbsp;</P><P>&nbsp;</P> 2024-02-12T04:00:36.795000+01:00 https://community.sap.com/t5/technology-blogs-by-members/integrate-ci-cd-with-ctms-as-part-of-sap-cloud-alm/ba-p/13653010 Integrate CI/CD with cTMS as part of SAP Cloud ALM 2024-03-29T07:59:53.217000+01:00 WouterLemaire https://community.sap.com/t5/user/viewprofilepage/user-id/9863 <H1 id="toc-hId-861621662">Introduction</H1><P>As Tom Cenens already explained very well, we have not only Cloud Transport Management Service (cTMS) in BTP but also cTMS a part of SAP Cloud ALM: <A href="https://community.sap.com/t5/technology-blogs-by-members/integration-of-ctms-as-part-of-sap-cloud-alm-and-charm/ba-p/13651994" target="_blank">https://community.sap.com/t5/technology-blogs-by-members/integration-of-ctms-as-part-of-sap-cloud-alm-and-charm/ba-p/13651994</A></P><P>They are both identical, the only difference is the pricing. The one in ALM comes with free GB’s of bandwidth.</P><P>Now, if you haver BTP applications (Fiori apps, CAP apps, … ) developed in Business Application Studio (BAS) that needs to be transported from DEV to ACC and PRD later on, cTMS can be used. The cTMS used for this should be the same that’s being connected to CHARM so you can combine ABAP transports with BTP transports in the same change document. When Tom connects cTMS of ALM to CHARM, we need to connect CI/CD to that same cTMS of ALM. Unfortunately, just like the integration with CHARM, this is not document and most of the blog posts about this topic refer to cTMS on BTP.</P><P>(Transporting could also be done using CI/CD only using the GitFlow strategy but this does not connect BTP transports with ABAP transports like CHARM allows us to do. In the SAP world, we want to keep CHARM for transporting and integrate BTP transports into it.)</P><H1 id="toc-hId-665108157">Cloud ALM API Instance</H1><P>If not already done, create an ALM API instance in the ALM Sub Account as described here with the additional points of Tom:</P><P><A href="https://help.sap.com/docs/cloud-alm/setup-administration/enabling-sap-cloud-alm-api" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/cloud-alm/setup-administration/enabling-sap-cloud-alm-api</A></P><P>Once you have created the instance, also create service keys and copy them. You’ll need them in a later step.</P><H1 id="toc-hId-468594652">Connect SAP CI/CD to ALM cTMS:</H1><UL><LI>Copy the service keys from ALM API instance you have created in the previous step</LI><LI>Open the BTP CI/CD service</LI><LI>Go to the job of an app that you want to transport using cTMS of ALM</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_11-1711665168738.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88253i345B3D921F8755BF/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_11-1711665168738.png" alt="WouterLemaire_11-1711665168738.png" /></span></P><UL><LI>Switch to edit in the job and scroll down to the step “Cloud Transport Management”:</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_12-1711665191176.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88254i8381034C009AECBA/image-size/large?v=v2&amp;px=999" role="button" title="WouterLemaire_12-1711665191176.png" alt="WouterLemaire_12-1711665191176.png" /></span></P><UL><LI>Open the valuehelp for the field “Service Key” and click on “Create Credentials”<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_13-1711665212078.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88255i0077170B45730894/image-size/small?v=v2&amp;px=200" role="button" title="WouterLemaire_13-1711665212078.png" alt="WouterLemaire_13-1711665212078.png" /></span></LI><LI>Paste the service keys of the ALM API instance</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_14-1711665234044.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88256i580C6EB4C5CE947A/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_14-1711665234044.png" alt="WouterLemaire_14-1711665234044.png" /></span></P><UL><LI>Remove the part of “endpoints”</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_15-1711665241536.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88257i37C4B29064E38AF8/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_15-1711665241536.png" alt="WouterLemaire_15-1711665241536.png" /></span></P><UL><LI>Add the property “uri” and provide it the value: “<SPAN>https://&lt;region&gt;.alm.cloud.sap/api/imp-cdm-transport-management-api/v1</SPAN><SPAN>” &nbsp;</SPAN>eg.: <A href="https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1" target="_blank" rel="noopener nofollow noreferrer">https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1</A> <SPAN>or </SPAN><A href="https://eu10.alm.cloud.sap/api/imp-cdm-transport-management-api/v1" target="_blank" rel="noopener nofollow noreferrer">https://eu10.alm.cloud.sap/api/imp-cdm-transport-management-api/v1</A></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_16-1711665250853.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88258i98CB97ED835A279B/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_16-1711665250853.png" alt="WouterLemaire_16-1711665250853.png" /></span></P><UL><LI>As transport operation I use “Export from” and name of the DEV node. The export from will add it to the queue of ACC and not deploy it to DEV. The deployment to DEV will be done by the CI/CD service in my example.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_17-1711665256786.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88259i864A1EF6AC5D5DDB/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_17-1711665256786.png" alt="WouterLemaire_17-1711665256786.png" /></span></P><UL><LI>Save and run your Job, the release step will be green and you’ll find the MTA in the queue of your ACC node in cTMS of ALM:</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_18-1711665262602.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88260iDAF352A390E88665/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_18-1711665262602.png" alt="WouterLemaire_18-1711665262602.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_19-1711665273419.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88261iC6124F132FA2139B/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_19-1711665273419.png" alt="WouterLemaire_19-1711665273419.png" /></span></P><H1 id="toc-hId-272081147"><SPAN>Connect any other CI/CD tool to ALM cTMS</SPAN></H1><P>Besides the SAP CI/CD service, some companies prefer to use the same CI/CD tooling they already have and use for other frameworks. There are already some examples on how to integrate your own CI/CD setup with cTMS but none of them cover cTMS on ALM. As a starting point I will use the setup described in this blog post:</P><P><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/integrate-a-ci-cd-pipeline-on-azure-devops-with-devops-related-services/ba-p/13528858" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/integrate-a-ci-cd-pipeline-on-azure-devops-with-devops-related-services/ba-p/13528858</A></SPAN></P><P>The only thing we need to change for cTMS in ALM is the upload to cTMS step, line 70, 71 and 72:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_20-1711665292725.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88262iF6ABB890A7410523/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_20-1711665292725.png" alt="WouterLemaire_20-1711665292725.png" /></span></P><P>I’ve changed it to the following:<SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>TOKEN=$(curl -s -X POST -u "&lt;ALM Service Key uaa.clientid&gt;:&lt;ALM Service Key uaa.clientsecret&gt;" -d "grant_type=client_credentials&amp;response_type=token" &lt;ALM Service Key uaa.url&gt;/oauth/token | sed -n '/ *"access_token": *"/ {s///; s/{//g ;s/".*//; p; }') BODY=$(curl -s --location --request POST '&lt;ALM TMS Service Key uri&gt;/v2/files/upload' --header "Authorization: Bearer $TOKEN" --form 'file=@"$(Pipeline.Workspace)/MySampleApp.mtar"' | awk -F ":" '{print $2}' | grep -Po "\\d+") curl --location --request POST '&lt;ALM TMS Service Key uri&gt;/v2/nodes/export' --header 'Content-Type: application/json' --header "Authorization: Bearer $TOKEN" --data-raw '{ "nodeName": "&lt;Name of your ALM TMS DEV node&gt;", "contentType": "MTA", "storageType": "FILE", "entries": [ { "uri": '"$BODY"' } ], "description": "&lt;Description optional&gt;", "namedUser": "&lt;User name optional&gt;" }'</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>ALM Service Key uaa.clientid: clientid property in the ALM service keys (eg.: sb-calm-api-inst-2!b..... )</SPAN></P><P><SPAN>ALM Service Key uaa.clientsecret: clientsecret property in the ALM service keys</SPAN></P><P><SPAN>ALM Service Key uaa.url: authentication url for ALM (eg.: https://&lt;alm-instance-name&gt;authentication.&lt;region&gt;.hana.ondemand.com/oauth/token )</SPAN></P><P><SPAN>ALM TMS Service Key uri: will become the url of ALM followed by the path to cTMS, something like this: <A href="https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1" target="_blank" rel="noopener nofollow noreferrer">https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1</A> . In the end it will have a full uri that looks like this <A href="https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1/v2/files/upload" target="_blank" rel="noopener nofollow noreferrer">https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1/v2/files/upload</A> , strange to have /v1/v2 but it works!</SPAN></P><P><SPAN>Name of your ALM TMS DEV node: Name of ALM cTMS DEV node. You might have noticed that I’m using /export instead of upload. This is the same as the Transport Operation in the BTP CI/CD service “Export from”, it will upload it to the next node after DEV. Same reason as before, the deployment to DEV will be done by the CI/CD tool.</SPAN><SPAN>&nbsp;</SPAN></P><H1 id="toc-hId-75567642"><SPAN>Integrate other services with cTMS of ALM</SPAN></H1><P><SPAN>Any other service that requires you to create a destination can be configured the same way. Take for example BTP BUILD WorkZone, std edition , transporting the content (catalogs, groups, roles, ... ) requires a destination “ctms_destination”. In this destination you need to provide the credentials to cTMS. Now in case of cTMS in ALM, you have to use clientid, client secret and uaa url from the ALM API service keys. The url of the destination should be the following: </SPAN>“<SPAN>https://&lt;region&gt;.alm.cloud.sap/api/imp-cdm-transport-management-api/v1</SPAN><SPAN>” &nbsp;</SPAN>eg.: <A href="https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1" target="_blank" rel="noopener nofollow noreferrer">https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1</A> <SPAN>or </SPAN><A href="https://eu10.alm.cloud.sap/api/imp-cdm-transport-management-api/v1" target="_blank" rel="noopener nofollow noreferrer">https://eu10.alm.cloud.sap/api/imp-cdm-transport-management-api/v1</A></P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_22-1711665366884.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88264i023D1CB4560E658B/image-size/large?v=v2&amp;px=999" role="button" title="WouterLemaire_22-1711665366884.png" alt="WouterLemaire_22-1711665366884.png" /></span></P><H1 id="toc-hId--120945863"><SPAN>Conclusion</SPAN></H1><P><SPAN>In short, when switching to ALM, you need to use the service keys from the ALM API &nbsp;service and the uri “<A href="https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1”" target="_blank" rel="noopener nofollow noreferrer">https://eu20.alm.cloud.sap/api/imp-cdm-transport-management-api/v1”</A> instead of this one from cTMS (standalone) “<A href="https://transport-service-app-backend.ts.cfapps.eu10.hana.ondemand.com”" target="_blank" rel="noopener nofollow noreferrer">https://transport-service-app-backend.ts.cfapps.eu10.hana.ondemand.com”</A></SPAN></P><P>Special thanks for investigating this with me to&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/12338">@TomCenens</a>&nbsp;,&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/76588">@matthiaskiekens</a>&nbsp;and&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/136203">@FrederikJ</a>&nbsp;!</P> 2024-03-29T07:59:53.217000+01:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/how-to-create-outbound-delivery-with-order-reference-in-sap-vl01n/ba-p/13659080 How to Create Outbound Delivery With order reference in SAP VL01N 2024-04-05T16:27:49.370000+02:00 MOHD_ANAS https://community.sap.com/t5/user/viewprofilepage/user-id/1429699 <P><STRONG>&nbsp; Outbound Delivery Replication in SAP - TCODE- VL01N&nbsp;</STRONG></P><P><STRONG>1. Introduction</STRONG></P><P>Outbound Delivery in SAP (Systems, Applications, and Products in Data Processing) refers to the process of fulfilling customer orders by shipping goods or products from a company's warehouse or production facility to the customer's specified location. This documentation provides a comprehensive guide to understanding and executing Outbound Delivery processes within SAP.</P><P><STRONG>2. Purpose</STRONG></P><P>The purpose of Outbound Delivery in SAP is to streamline the logistics and shipping operations of a company, ensuring accurate and timely delivery of products to customers. By efficiently managing outbound deliveries, businesses can enhance customer satisfaction, optimize inventory management, and improve overall operational efficiency.</P><P><STRONG>3. Key Features</STRONG></P><UL><LI>Creation of Outbound Delivery Orders (ODOs) based on sales orders or stock transport orders.</LI><LI>Packing of goods into delivery packages or handling units.</LI><LI>Generation of delivery documents such as delivery notes and shipping labels.</LI><LI>Integration with transportation management systems for route optimization and carrier selection.</LI><LI>Confirmation of goods issue to update inventory levels.</LI><LI>Monitoring and tracking of delivery status in real-time.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_13-1712147007990.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90490i017B881B1059C162/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_13-1712147007990.png" alt="MOHD_ANAS_13-1712147007990.png" /></span></P><P>&nbsp;</P><P><STRONG>4. Process Flow</STRONG></P><P>The typical process flow for Outbound Delivery in SAP involves the following steps:</P><OL><LI><STRONG>Sales Order Creation</STRONG>: Customer orders are received and entered into the SAP system as sales orders.</LI><LI><STRONG>Outbound Delivery Order Creation</STRONG>: Based on the sales orders, Outbound Delivery Orders (ODOs) are created in SAP. These ODOs contain information such as the items to be shipped, quantities, delivery dates, and customer shipping details.</LI><LI><STRONG>Packing</STRONG>: Goods are picked from the warehouse shelves or production lines and packed into delivery packages or handling units. The packing process involves assigning materials to specific delivery units and determining packaging materials.</LI><LI><STRONG>Goods Issue</STRONG>: Once the goods are packed and ready for shipment, a goods issue is posted in SAP to signify the removal of goods from inventory. This updates inventory levels and triggers the billing process.</LI><LI><STRONG>Delivery Document Printing</STRONG>: Delivery documents such as delivery notes and shipping labels are generated in SAP and printed for inclusion with the shipment.</LI><LI><STRONG>Shipment Execution</STRONG>: The goods are physically transported to the customer's location using selected carriers or transportation methods.</LI><LI><STRONG>Delivery Confirmation</STRONG>: Upon successful delivery, the delivery is confirmed in SAP to update the delivery status and trigger subsequent processes such as billing and customer invoicing.</LI></OL><P>T.code:-</P><UL><LI><STRONG>VL01N </STRONG><STRONG>– </STRONG>With / Without Reference to Sales Order.</LI><LI><STRONG>VL02N </STRONG><STRONG>– </STRONG>Single Document Change.</LI><LI><STRONG>Vl03N </STRONG><STRONG>– </STRONG>Display Delivery Document.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_14-1712147008004.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90489i07F7EF557F2B6FEF/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_14-1712147008004.png" alt="MOHD_ANAS_14-1712147008004.png" /></span></P><P>&nbsp;</P><UL><LI>In the initial Screen of Create Outbound Delivery Need to provide below information.</LI><LI>Shipping Point: Get the shipping point from the shipping tab of sales order line item.</LI><LI>Selection Date : It should be either the material availability date or the system copies the item into the delivery.</LI><LI>Sales Order Number: The sales order number against which the delivery document needs to be created.</LI><LI>From and to Item Number: Line item number of sales order against which needs to be created delivery, if a user does not specify any line item then the system will consider all line items of sales order for delivery creation.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_15-1712147008008.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90488iAA8ED0686BA6A89E/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_15-1712147008008.png" alt="MOHD_ANAS_15-1712147008008.png" /></span></P><P>&nbsp;</P><P>Create outbound delivery without order reference</P><P>&nbsp;</P><P>Then the system will land to the user on Create Delivery Overview screen like the below screenshot.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_16-1712147008024.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90493i7D4CB6771A475578/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_16-1712147008024.png" alt="MOHD_ANAS_16-1712147008024.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_17-1712147008057.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90492i0EA847DC5714720F/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_17-1712147008057.png" alt="MOHD_ANAS_17-1712147008057.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Picking Tab display</P><UL><LI>Plant code: Delivery plant</LI><LI>Storage location</LI><LI>Delivery Quantity</LI><LI>UoM</LI><LI>Picked Quantity</LI></UL><P>The picked quantity is grey out mode that means we have to transfer the order to pick the material.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_18-1712147008076.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90491i380A3FF70E2C79E8/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_18-1712147008076.png" alt="MOHD_ANAS_18-1712147008076.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_19-1712147008097.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90495iC809607D884F7C84/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_19-1712147008097.png" alt="MOHD_ANAS_19-1712147008097.png" /></span></P><P>&nbsp;</P><P>Transport tab provide information</P><UL><LI>Transportation Planning date</LI><LI>Transportation Planning status.</LI><LI>Route</LI><LI>Gross weight</LI><LI>Volume</LI></UL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_20-1712147008117.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90496iC59F66BA0610DD12/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_20-1712147008117.png" alt="MOHD_ANAS_20-1712147008117.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_21-1712147008128.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90494iEE74634F5EB8D2B0/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_21-1712147008128.png" alt="MOHD_ANAS_21-1712147008128.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>The goods movement tab provides information that which movement type is used for this delivery document.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_22-1712147008136.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90499iDA22BA0A3E286027/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_22-1712147008136.png" alt="MOHD_ANAS_22-1712147008136.png" /></span></P><P>&nbsp;</P><P>Select any one line item of the delivery document and click on the item Details button. It will display item data of that line item.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_23-1712147008146.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90497i9FEE494DBB226AB6/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_23-1712147008146.png" alt="MOHD_ANAS_23-1712147008146.png" /></span></P><P>&nbsp;</P><P>The predecessor data tab provides information about</P><UL><LI>Reference Document number e.g. Sales order number.</LI><LI>Reference Item: line item number of Sales order number.</LI><LI>Reference Type: Document category.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_24-1712147008160.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90498i09EC0A28D2B147D4/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_24-1712147008160.png" alt="MOHD_ANAS_24-1712147008160.png" /></span></P><P>&nbsp;</P><P>Click on SAVE button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_25-1712147008175.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90500i0530B8C81B54E409/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_25-1712147008175.png" alt="MOHD_ANAS_25-1712147008175.png" /></span></P><P>&nbsp;</P><P><STRONG>Now, the delivery document has been saved with the delivery number.</STRONG></P><P><STRONG>5. Benefits</STRONG></P><UL><LI>Improved order fulfilment accuracy and speed.</LI><LI>Enhanced visibility and traceability of outbound shipments.</LI><LI>Reduction in shipping errors and delays.</LI><LI>Optimal utilization of warehouse resources.</LI><LI>Better customer service and satisfaction.</LI></UL><P><STRONG>6. Conclusion</STRONG></P><P>Outbound Delivery in SAP plays a critical role in ensuring the smooth and efficient execution of logistics and shipping operations. By leveraging SAP's robust functionality and integration capabilities, businesses can effectively manage outbound deliveries, meet customer expectations, and drive operational excellence.</P><P>&nbsp;</P> 2024-04-05T16:27:49.370000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/new-webcast-series-on-sap-btp-devops-and-observability-in-action/ba-p/13665227 New webcast series on “SAP BTP DevOps and Observability in Action” 2024-04-10T08:13:46.597000+02:00 BorisZarske https://community.sap.com/t5/user/viewprofilepage/user-id/87 <P>If you run applications on SAP Business Technology Platform (SAP BTP), <A title="Link to Webcast series" href="https://events.sap.com/eur/2024-0424-sap-btp-devops-observability-webinar-global/en/home" target="_blank" rel="noopener noreferrer">join our huge webcast series</A> on DevOps and observability - featuring over ten absolute content experts from different SAP teams and areas! The new series is a continuation of <A title="Webcast Series The Open Space of Application Operations within SAP BTP" href="https://community.sap.com/t5/technology-blogs-by-sap/upcoming-webcast-series-the-open-space-of-application-operations-within-sap/ba-p/13549383" target="_blank">last year’s webcasts</A> and offers the latest news and many additional topics and insights!<BR /><BR /></P><H2 id="toc-hId-991689444">Overview</H2><P>Consisting of interactive lectures and demos, you can learn how you can enable your teams to benefit from a more agile way of developing – while preserving the right level of control when it comes to delivering their changes to your production environment. Also, we will cover how you can integrate SAP BTP operation and delivery with SAP Cloud ALM, SAP’s strategic operations platform also for SAP BTP. All&nbsp;following SAP's recommended approach depicted below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAP's recommended approach for DevOps on SAP BTP" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94419iFF6E3A52FFCD7175/image-size/large?v=v2&amp;px=999" role="button" title="DevOps_SAP_BTP.jpg" alt="SAP's recommended approach for DevOps on SAP BTP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">SAP's recommended approach for DevOps on SAP BTP</span></span></P><P><SPAN>Topics will be the interplay of DevOps with SAP Cloud ALM, the integration of Continuous Integration pipelines with transport and change management, and SAP BTP operations with SAP Cloud ALM and local expert tools. Learn more about:</SPAN></P><UL><LI>Creating CI/CD pipelines with SAP Continuous Integration and Delivery service in minutes and how to adapt them, if required</LI><LI>Transporting the latest SAP BTP content types with SAP Cloud Transport Management service, optionally orchestrated by SAP Cloud ALM</LI><LI>Managing further content types with SAP Content Agent service</LI><LI>Logging your applications on SAP BTP with SAP Cloud Logging service</LI><LI>Establishing a more reactive way of working by benefiting from our unified alerting approach with SAP Alert Notification service and SAP Cloud ALM</LI><LI>Instrumenting your own applications built on SAP BTP with the help of OpenTelemetry</LI><LI>Reducing operation efforts with SAP Cloud ALM and SAP Automation Pilot service – and how you can benefit from the upcoming GenAI capabilities to automate your technical operation tasks and easily create automated recommended actions</LI><LI>Managing your infrastructure with the Terraform provider for SAP BTP<BR /><BR /></LI></UL><H2 id="toc-hId-795175939">Sessions of the Webcast series</H2><P>As part of the series, we will start with two <FONT color="#0000FF"><STRONG>overview lectures</STRONG></FONT>, offered as live sessions on YouTube:</P><UL><LI><FONT color="#00CCFF"><EM><STRONG>April-23, 2024:</STRONG> </EM>Unlock the potential of DevOps on SAP BTP with SAP Cloud ALM</FONT></LI><LI><FONT color="#00CCFF"><EM><STRONG>April-24, 2024:</STRONG> </EM>SAP Cloud ALM for SAP BTP operations</FONT></LI></UL><P>&nbsp;</P><P>After that, you can <STRONG>deep dive</STRONG> into the three topic areas, always covered with a longer <STRONG>presentation</STRONG> (consisting of three related topics, held by three different experts in an interactive Zoom session) – followed by a holistic <STRONG>demo session</STRONG> on all the three topics covered before. This way, you can get detailed insights and can benefit from a jumpstart to establish the presented best practices also in your landscape! Both deep dive formats will grant enough time to raise your questions and to get direct guidance from the corresponding experts!</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="WebcastSeries2024.jpg" style="width: 458px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94417i79F41B1FC71A20A4/image-size/large?v=v2&amp;px=999" role="button" title="WebcastSeries2024.jpg" alt="WebcastSeries2024.jpg" /></span></P><P><SPAN>Here is what you can expect in detail for the <STRONG><FONT color="#0000FF">interactive deep dive sessions</FONT></STRONG> on Zoom:</SPAN></P><P><STRONG><SPAN>For logging and alerting:</SPAN></STRONG></P><UL><LI><FONT color="#00CCFF"><EM><STRONG>May-14, 2024:</STRONG> </EM>Logging and Alerting with SAP Cloud ALM for your apps on SAP BTP</FONT> (lecture)<UL><LI>Unified Approach Towards Alerting in SAP BTP with SAP Alert Notification Service and SAP Cloud ALM</LI><LI>OpenTelemetry-Based Instrumentation for your Custom-Built Apps on SAP BTP</LI><LI>Introduction to SAP Cloud Logging Service</LI></UL></LI><LI><FONT color="#00CCFF"><EM><STRONG>May-15, 2024:</STRONG> </EM>Get a Demo on the Unified Alerting and Logging Approach on SAP BTP</FONT> (demo session)<BR /><BR /></LI></UL><P><STRONG>For technical ops automation:</STRONG></P><UL><LI><FONT color="#00CCFF"><EM><STRONG>May-21, 2024:</STRONG> </EM>Reduce your operation efforts with SAP Cloud ALM, SAP Automation Pilot and the Terraform Provider for SAP BTP</FONT> (lecture):<UL><LI>Reduce your Operation Efforts with SAP Cloud ALM and SAP Automation Pilot Service</LI><LI>Benefit from Latest GenAI Capabilities for Automating your Technical Operation Tasks with SAP Automation Pilot Service</LI><LI>Manage your Infrastructure with the Terraform Provider for SAP BTP</LI></UL></LI><LI><FONT color="#00CCFF"><EM><STRONG>May-22, 2024:</STRONG> </EM>Get a demo on how to automate technical operation tasks for running your application on SAP BTP</FONT> (demo session)<BR /><BR /></LI></UL><P><STRONG>And finally on delivery:</STRONG></P><UL><LI><FONT color="#00CCFF"><EM><STRONG>May-28, 2024:</STRONG></EM> Deliver content on SAP BTP</FONT> (lecture):<UL><LI>Enhanced Flexibility for your Pipelines in SAP Continuous Integration and Delivery service</LI><LI>Transport of Further Content Types with SAP Cloud Transport Management Service</LI><LI>Enablement of new Content Management Use Cases with SAP Content Agent Service</LI></UL></LI><LI><FONT color="#00CCFF"><EM><STRONG>May-29, 2024:</STRONG> </EM>Get a Demo on How to Combine CI/CD with Transports for Speedy and Controlled Delivery</FONT> (demo session)<BR /><BR /></LI></UL><H2 id="toc-hId-598662434">Sign up today!</H2><P>Benefit from this offering and the guidance provided by our over ten topic experts, from different areas and teams at SAP! Share the event with your colleagues, to get everyone up to speed and on the same page! And feel free to bring your questions around these topics!</P><P>Learn more and <A title="SAP BTP DevOps and Observability in Action - Webcast series" href="https://events.sap.com/eur/2024-0424-sap-btp-devops-observability-webinar-global/en/home" target="_blank" rel="noopener noreferrer">sign up here</A> free-of-charge.</P><P>And as always: if you should have ideas for other operations topics around SAP BTP, please leave a comment!</P> 2024-04-10T08:13:46.597000+02:00 https://community.sap.com/t5/technology-blogs-by-members/configure-ctms-in-combination-with-charm-and-ci-cd/ba-p/13677363 Configure cTMS in combination with CHARM and CI/CD 2024-04-28T22:47:32.487000+02:00 WouterLemaire https://community.sap.com/t5/user/viewprofilepage/user-id/9863 <H1 id="toc-hId-863590909"><SPAN>Introduction</SPAN></H1><P><SPAN>The BTP Cloud Transport Management Service (cTMS) is mostly used in combination with the CI/CD service (or any other non-SAP CI/CD tool) when you need to transport applications from one Sub Account to another Sub Account. This combination is well documented in the SAP help documentation. CI/CD deploys to your DEV Sub Account and uploads the MTAR of your application to cTMS. From here, cTMS taks over to deploy to ACC and PRD Sub Accounts. You can find the details in the documentation here:</SPAN></P><P><SPAN><A href="https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/configure-sap-fiori-in-cloud-foundry-environment-job-in-your-repository#(optional)-integrate-sap-cloud-transport-management-into-your-pipeline" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/continuous-integration-and-delivery/sap-continuous-integration-and-delivery/configure-sap-fiori-in-cloud-foundry-environment-job-in-your-repository#(optional)-integrate-sap-cloud-transport-management-into-your-pipeline</A></SPAN></P><P><SPAN>&nbsp;</SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_0-1713733188934.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99571i23015BFF75BCBB15/image-size/large?v=v2&amp;px=999" role="button" title="WouterLemaire_0-1713733188934.png" alt="WouterLemaire_0-1713733188934.png" /></span></P><P><SPAN>Besides integration with CI/CD, you want to integrate cTMS with your existing transporting system, which is for most customers Charm. This setup allows you to transport ABAP objects and BTP applications together. You could also consider using ALM as transporting system but at the moment this has not all the functionalities that you have in Charm today.</SPAN></P><P><SPAN>Connecting cTMS nodes to Charm require enabling the configuration “Controlled By SAP Solution Manager”:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_1-1713733360131.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99572i1C1B1D0E4D58B5A6/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_1-1713733360131.png" alt="WouterLemaire_1-1713733360131.png" /></span></P><P><SPAN>When you enable this, you might face some of the problems listed below and the solution might might be helping you to have a clean cTMS landscape integrated with Charm.</SPAN></P><H1 id="toc-hId-667077404"><SPAN>Problems</SPAN></H1><UL><LI><SPAN>DEV node in cTMS without destination cannot be saved</SPAN></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_2-1713733396501.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99573iB57AA36146F6C0B0/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_2-1713733396501.png" alt="WouterLemaire_2-1713733396501.png" /></span></P><UL><LI><SPAN>Setting a destination doesn’t make sense as the CI/CD service already deploys to the DEV Sub Account but it allows you to continue with the configuration.&nbsp;</SPAN></LI><LI><SPAN>The flow described for Cloud ALM cannot be applied exactly the same way when using Charm as it does not require to enable “Controlled by SAP Solution Manager”, see documentation.&nbsp;</SPAN><UL><LI><SPAN><A href="https://help.sap.com/docs/cloud-alm/setup-administration/cloud-transport-management" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/cloud-alm/setup-administration/cloud-transport-management</A></SPAN></LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_3-1713733626855.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99574iE23B55C389797E3B/image-size/large?v=v2&amp;px=999" role="button" title="WouterLemaire_3-1713733626855.png" alt="WouterLemaire_3-1713733626855.png" /></span></P><UL><LI><SPAN>All cTMS Nodes after DEV need to be controller by SAP Solution Manager if you want to integrate it with Charm BUT import to cTMS Nodes “Controlled By SAP Solution Manager” is not possible. This will cause an</SPAN><SPAN>&nbsp;error in the logs of cTMS</SPAN>&nbsp;</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_6-1713734439855.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99578iEC1D3DD6211ECDC1/image-size/large?v=v2&amp;px=999" role="button" title="WouterLemaire_6-1713734439855.png" alt="WouterLemaire_6-1713734439855.png" /></span></P><UL><LI><SPAN>Uploading to the DEV Node in cTMS only forwards to ACC after successful import. Importing/Deploying to DEV via cTMS is not needed as this is already done by the CI/CD service</SPAN><UL><LI><SPAN>This is only causing overhead which is not needed</SPAN></LI></UL></LI></UL><UL><LI><SPAN>This means that you need to upload to cTMS Node for ACC BTP Sub Account BUT this is not possible because it is controlled by SAP Solution Manager</SPAN></LI></UL><H1 id="toc-hId-470563899"><SPAN>Solution</SPAN></H1><UL><LI><SPAN>Make the DEV nodea V</SPAN><SPAN>irtual Node</SPAN></LI><LI><SPAN>In SAP CI/CD, use export from “DEV-NODE” instead of "Upload to":</SPAN><UL><LI><SPAN>This will upload the mtar to cTMS and immediately forward it from DEV to ACC so it ends up in the queue of ACC.</SPAN></LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_7-1713734527435.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99579i93AE086F0519C068/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_7-1713734527435.png" alt="WouterLemaire_7-1713734527435.png" /></span></P><P>&nbsp;</P><UL><LI><SPAN>In any other CI/CD tool, use the export api: “/v2/nodes/export”</SPAN><UL><LI><SPAN><A href="https://api.sap.com/api/TMS_v2/path/NODE_EXPORT_BY_NAME_V2" target="_blank" rel="noopener noreferrer">https://api.sap.com/api/TMS_v2/path/NODE_EXPORT_BY_NAME_V2</A> </SPAN></LI><LI>See blog post with an example:&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-members/integrate-ci-cd-with-ctms-as-part-of-sap-cloud-alm/ba-p/13653010" target="_blank">https://community.sap.com/t5/technology-blogs-by-members/integrate-ci-cd-with-ctms-as-part-of-sap-cloud-alm/ba-p/13653010</A>&nbsp;</LI></UL></LI></UL><P>In the end, DEV is a virtual node and all others are controlled by Solution Manager</P><P>Configuration of the DEV Node:</P><UL><LI>Upload to Node is allowed</LI><LI>Node is flagged as a virtual node</LI></UL><P><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_8-1713735485282.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99584iB5713F2094944F18/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_8-1713735485282.png" alt="WouterLemaire_8-1713735485282.png" /></span></P><P>Configuration of all nodes after DEV:</P><UL><LI>“Conntrolled By SAP Solution Manager” enabled</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_9-1713735503162.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99585i4F7ED4B2CCD55BC0/image-size/medium?v=v2&amp;px=400" role="button" title="WouterLemaire_9-1713735503162.png" alt="WouterLemaire_9-1713735503162.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-274050394">Overview</H1><P>In the end, your transport landscape with CI/CD, cTMS and Charm will look like this:</P><UL><LI>Developers will push their code from BAS or VSCode to GIT</LI><LI>GIT will trigger CI/CD through a webhook</LI><LI>CI/CD will<UL><LI>deploy to the DEV Sub Account</LI><LI>export to cTMS dev node</LI></UL></LI><LI>cTMS will move the transport to the queue of ACC</LI><LI>From here it can be transported using Charm</LI></UL><P>I used a separate Sub Account for the CI/CD service but this could be as well in the DEV Sub Account.</P><P>For the integration with Charm I recommend following this blog post:&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-use-the-integration-of-sap-cloud-platform-transport-management-into/ba-p/13443259" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/how-to-use-the-integration-of-sap-cloud-platform-transport-management-into/ba-p/13443259</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WouterLemaire_10-1713735683673.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99587i42F521783F352F82/image-size/large?v=v2&amp;px=999" role="button" title="WouterLemaire_10-1713735683673.png" alt="WouterLemaire_10-1713735683673.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-28T22:47:32.487000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/devops-with-sap-btp/ba-p/13686887 DevOps with SAP BTP 2024-05-06T14:26:48.640000+02:00 BorisZarske https://community.sap.com/t5/user/viewprofilepage/user-id/87 <P>As <A title="Efficient DevOps with SAP BTP" href="https://community.sap.com/t5/technology-blogs-by-sap/efficient-devops-with-sap-btp/ba-p/13455958" target="_blank">my initial blog post series</A> around DevOps with SAP BTP is already some years old, I thought it would be about time to come up with a new article - to reflect latest changes about how you can enable your teams to benefit from it for developing and running their apps on the platform.</P><P><SPAN>DevOps is a key enabler for achieving high-level agility and quality in development projects – also in SAP enterprise environments. If you should be new to DevOps, the&nbsp;</SPAN><SPAN><A href="https://community.sap.com/topics/devops" target="_blank">DevOps | SAP Community</A></SPAN><SPAN>&nbsp;topic page does offer a lot of information.</SPAN></P><P><SPAN>Although DevOps is mainly a cultural approach, tools can help to foster agile development principles along the lifecycle of applications. In this article, I will sketch the setup recommended by SAP for agile development projects on SAP BTP, using corresponding SAP BTP cloud services and offerings. The platform does offer several different development approaches and runtime environments, so details of this setup might slightly differ per use case, but the goal is to offer a similar concept fitting for the most important ones.</SPAN></P><P><SPAN>The following figure outlines the recommended approach on the example of SAP BTP, Cloud Foundry environment:</SPAN></P><H2 id="toc-hId-993572229"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Recommended approach to apply DevOps on SAP BTP" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/104012i5AFD8F463590CC0B/image-size/large?v=v2&amp;px=999" role="button" title="RecommendedApproachDevOpsSAPBTP.png" alt="Recommended approach to apply DevOps on SAP BTP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Recommended approach to apply DevOps on SAP BTP</span></span></SPAN></H2><P>&nbsp;</P><P>As most of the depicted SAP BTP cloud services are also part of <A title="SAP Build Code" href="https://www.sap.com/products/technology-platform/developer-tools.html" target="_blank" rel="noopener noreferrer">SAP Build Code</A>, this does also reflect the recommended approach around this offering.</P><P>Let's go through those four phases in the remainder of this article.<BR /><BR /></P><H2 id="toc-hId-797058724"><SPAN>1. Set Up Continuous Integration</SPAN></H2><P><SPAN>One driver of the agility and built-in quality that DevOps brings is the automation of large parts of the deployment pipeline. For this, a Continuous Integration / Continuous Delivery (CI/CD) pipeline is involved that automatically gets executed whenever your development teams do submit changes to their source code management system, to qualify them. The pipeline automatically performs certain actions along different stages, such as to build your changes and to test them on different levels. With this, it provides feedback to the developer on the quality of his/her changes:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Using Continuous Integration and Delivery to automate large parts of the deployment process" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103685iD124D2B73D47A28F/image-size/large?v=v2&amp;px=999" role="button" title="CICDpipeline.png" alt="Using Continuous Integration and Delivery to automate large parts of the deployment process" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Using Continuous Integration and Delivery to automate large parts of the deployment process</span></span></SPAN></P><P><SPAN>So, the first challenge is to set up CI/CD for your SAP BTP development use cases. Here, SAP BTP does offer a two-fold approach:</SPAN></P><UL><LI>Option 1:<STRONG><SPAN>&nbsp;</SPAN>Pipeline as a Service</STRONG><SPAN>&nbsp;</SPAN>with<SPAN>&nbsp;</SPAN><A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY" target="_blank" rel="noopener noreferrer">SAP Continuous Integration and Delivery</A><UL><LI>Opinionated, highly integrated setup that allows to benefit from agile methods without having to bring expertise</LI><LI>Brings pipeline templates for typical SAP BTP development use cases, such as to develop a side-by-side extension using Cloud Application Programming model (CAP) or a compelling UI using SAP Fiori on Neo/Cloud Foundry/ABAP Front-End Servers; with this, it allows to come up with a running build, test and deploy pipeline for those SAP BTP specific use cases in minutes – where the pipeline can be configured completely via UI (configuration as code is optionally also possible)</LI><LI>No need to build up and especially operate an own CI/CD infrastructure – only prerequisite: bring your own Git as source code management system</LI><LI>SAP product, with direct support from SAP</LI><LI>With this, addressing also those partners and customers that do not bring experience or that are looking for a CI/CD setup recommended and provided by SAP, reducing the overhead and cognitive load of their developers</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Easy process to set up pipeline in SAP Continuous Integration and Delivery service" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103686i689D717ACDF3C6AA/image-size/large?v=v2&amp;px=999" role="button" title="CI+Dflow.png" alt="Easy process to set up pipeline in SAP Continuous Integration and Delivery service" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Easy process to set up pipeline in SAP Continuous Integration and Delivery service</span></span></P><UL><LI>Option 2:<STRONG>&nbsp;Toolbox</STRONG>&nbsp;with open source offering&nbsp;<A href="https://www.project-piper.io/" target="_blank" rel="noopener nofollow noreferrer">project ‘Piper’</A><UL><LI>Building blocks that allow you to build an own pipeline for SAP-specific use cases easier: pipeline templates (for Jenkins only), a library of pipeline steps (in Golang, which allows you to use them also for non-Jenkins CI/CD infrastructures), scenarios (end-to-end descriptions with sample code snippets), and Docker images you can easily add to your pipeline (<A href="https://blogs.sap.com/2019/10/24/how-to-use-project-piper-docker-images-for-cicd-with-azure-devops/" target="_blank" rel="noopener noreferrer">example for usage with Azure DevOps</A>)</LI><LI>As it is an open source offering, there is no direct support provided by SAP – only community support, you have to create and then own your pipeline</LI><LI>With this, the offering is addressing those partners and customers that need full flexibility and already bring expertise or infrastructure (or are willing to build it up and operate it) and now want to know how to best expand it also for SAP-specific use cases<BR /><BR /></LI></UL></LI></UL><H2 id="toc-hId-600545219">2. Develop</H2><P>This CI pipeline is then used by your development teams to qualify their changes – here, changes get pushed to a central source code repository based on Git, which then can automatically triggers a run of the corresponding pipeline via webhook. This pipeline run performs a build and executes automated test cases. The developer then gets informed about issues with the performed changes and can react on those directly. Also, compliance checks, such as for security flaws with used third-party libraries, can be tested as part of the pipeline run.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Example of agile development process" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103696i3B0E8EA376BEEC44/image-size/large?v=v2&amp;px=999" role="button" title="DevProcess.png" alt="Example of agile development process" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Example of agile development process</span></span></P><P><SPAN>Of course, there are many frameworks available for automated testing – SAP Continuous Integration and Delivery service does provide an opinionated proposal for corresponding frameworks, which then have to be set up accordingly. If you want to use alternative frameworks, SAP Continuous Integration and Delivery allows to extend the predefined pipelines with scripting (for more information, see </SPAN><A title="Extensible Pipelines for SAP Continuous Integration and Delivery" href="https://community.sap.com/t5/technology-blogs-by-sap/extensible-pipelines-for-sap-continuous-integration-and-delivery/ba-p/13564893" target="_blank">this blog post</A><SPAN>).</SPAN></P><P>For the creation of the actual test cases, a step-wise approach is recommended, where you start with first test cases and then evolve by time, by adding additional cases, also based on the issues that come up later and on the latest compliance requirements you might face.</P><P>As implied above, the actual development process will slightly differ per development environment. For example, on Cloud Foundry, you might use SAP Business Application Studio (where you would benefit from a direct integration of SAP Continuous Integration and Delivery, allowing to set up and monitor corresponding pipelines directly from the IDE), on Neo SAP Web IDE Full-Stack and on SAP BTP ABAP development tools in Eclipse. Still, the general approach for these environments could be similar, as depicted above.<BR /><BR /></P><H2 id="toc-hId-404031714">3. Deliver</H2><P>When your teams come up with a qualified release candidate, they can either perform a direct deployment out of the pipeline (when all tests are “green”, a direct deployment can be triggered) – or you benefit from a standardized central transport and change management approach, using<SPAN>&nbsp;</SPAN><A href="https://help.sap.com/docs/cloud-transport-management" target="_blank" rel="noopener noreferrer">SAP Cloud Transport Management</A>. The later is our recommended approach for most enterprise environments, where you normally want to have additional control of your production subaccounts.</P><P>The actual transport concept is quite similar to what you might be used to from development in on-premise and private cloud environments, with a centrally defined delivery landscape:</P><UL><LI>With the option to control who is allowed to handle changes where (that is, on which SAP BTP subaccount),</LI><LI>With a central log file for auditing,</LI><LI>With the option to synchronize the propagation of changes from different environments (such as from private cloud/on-premise together with related cloud changes), where change and deployment management capabilities of SAP Cloud ALM or Change Request Management (ChaRM) of SAP Solution Manager could orchestrate SAP Cloud Transport Management service, in addition to orchestrating then also private cloud/on-premise transport mechanisms.</LI></UL><P>Still, here with the option to combine it on SAP BTP with CI principles, so that your development teams can benefit from tight feedback loops enabled by an automated pipeline, to verify single developer changes - while you still have full control for the propagation of those changes towards your production environment, with the automated hand-over from the pipeline into a controlled, centrally managed and pre-defined delivery landscape. Then to verify the release candidate, potentially consisting of changes from different environments and typically done with a manual confirmation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hybrid change management" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103702iACE722EED4B2B795/image-size/large?v=v2&amp;px=999" role="button" title="HybridDelivery.png" alt="Hybrid change management" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Hybrid change management</span></span></P><P><SPAN>SAP Cloud Transport Management service can cover more and more content types, such as:</SPAN></P><UL><LI>SAP Fiori content (in Neo and Cloud Foundry)</LI><LI>CAP applications (in the form of MTA archives),</LI><LI>Objects from SAP BTP ABAP environment,</LI><LI>Content from SAP Build (SAP Build Process Automation, SAP Build Work Zone, …),</LI><LI>App-specific content types, such as iFlows from SAP Integration Suite and Network Package content from SAP Analytics Cloud</LI><LI>See the full list <A title="Overview: Supported Content" href="https://help.sap.com/docs/cloud-transport-management/sap-cloud-transport-management/supported-content-types#loio0dccbb6ee1714240b9b9bedc1a240a7e" target="_blank" rel="noopener noreferrer">here</A></LI></UL><P>With this, you can establish a standardized transport management process for more and more development use cases around SAP BTP - with the option to integrate all those content types into your central change and delivery management process, such as provided by SAP Cloud ALM.</P><P>SAP Cloud Transport Management service is out-of-the-box integrated with SAP Continuous Integration and Delivery - just switch on the corresponding option of the<SPAN>&nbsp;</SPAN><EM>Release</EM><SPAN>&nbsp;</SPAN>stage:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot from 'Release' stage of SAP Continuous Integration and Delivery" style="width: 538px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103704iF4EF8F6E13A46D04/image-size/large?v=v2&amp;px=999" role="button" title="CIDintegrationcTMS.png" alt="Screenshot from 'Release' stage of SAP Continuous Integration and Delivery" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot from 'Release' stage of SAP Continuous Integration and Delivery</span></span></P><P><SPAN>It can also be integrated into other CI stacks via a step of the library from project Piper into third-party pipelines or </SPAN><A title="SAP Business Accelerator Hub" href="https://api.sap.com/package/TmsForCloudPub/rest" target="_blank" rel="noopener noreferrer">open APIs</A><SPAN> (for example, see&nbsp;</SPAN><A title="Integrate a CI/CD Pipeline on Azure DevOps with DevOps-Related Services from SAP BTP, Cloud Foundry" href="https://community.sap.com/t5/technology-blogs-by-sap/integrate-a-ci-cd-pipeline-on-azure-devops-with-devops-related-services/ba-p/13528858" target="_blank">this blog post on using Azure DevOps with transports</A><SPAN>).</SPAN></P><P><SPAN>&nbsp;</SPAN></P><H2 id="toc-hId-207518209"><SPAN>4. Operate</SPAN></H2><P>With SAP Cloud ALM, SAP is providing a central observability platform for all SAP products, including SAP BTP (in interplay with several local SAP-BTP-specific observability capabilities). To operate your apps on SAP BTP, you can therefore use its unified monitoring, alerting and analytics offering based on telemetry data exposed by SAP BTP (and other SAP solutions), to reduce the meantime to detect any issues. SAP is using OpenTelemetry as unified and open instrumentation approach for SAP BTP use cases, allowing you for example to instrument your custom apps for central observability.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Functional overview of SAP Cloud ALM for Operations" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103725iEF0B7688D8600D2E/image-size/large?v=v2&amp;px=999" role="button" title="SAP Cloud ALM for Operations.png" alt="Functional overview of SAP Cloud ALM for Operations" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Functional overview of SAP Cloud ALM for Operations</span></span></P><P><SPAN>For more information, see </SPAN><A title="SAP Cloud ALM for Operations" href="https://support.sap.com/en/alm/sap-cloud-alm/operations.html" target="_blank" rel="noopener noreferrer">SAP Cloud ALM for Operations</A><SPAN>.</SPAN></P><P><SPAN>To resolve issues, you can then navigate from SAP Cloud ALM to the local expert tools on SAP BTP, to perform a use-case-specific root cause analysis.&nbsp;</SPAN><SPAN>For example, f</SPAN><SPAN>rom an error message in <EM>Exception Monitoring</EM> of SAP Cloud ALM, you could directly jump to <A title="SAP Cloud Logging service" href="https://help.sap.com/docs/cloud-logging" target="_blank" rel="noopener noreferrer">SAP Cloud Logging service</A> to perform a detailed analysis, for which the service stores and visualizes log files, metrics, and traces from your apps running in different SAP BTP environments.</SPAN></P><P><SPAN>For the execution of corrective actions on SAP BTP, events in SAP Cloud ALM could automatically trigger the execution of corresponding commands on SAP Automation Pilot. This service offers a low-code and no-code automation engine and brings catalogs of automated actions that you can use to compile the best-fitting command for automating your recurring DevOps-related tasks and for remediation of alerts from your individual SAP BTP applications.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Automate recurring ops tasks with SAP Automation Pilot" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103875i90ADE7D1425C86D5/image-size/large?v=v2&amp;px=999" role="button" title="AutoPi.png" alt="Automate recurring ops tasks with SAP Automation Pilot" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Automate recurring ops tasks with SAP Automation Pilot</span></span></SPAN></P><P><SPAN>This way, you can optimize your operation efforts and increase the resilience of your business scenarios.<BR /></SPAN></P><P>&nbsp;</P><H2 id="toc-hId-11004704">Summary</H2><P>SAP BTP offers a low-entry approach to verify the value a more agile development process can bring - also for your SAP applications. It does comprise highly-integrated DevOps services along the complete lifecycle - from CI/CD to development, delivery and operations, with a smooth integration option into SAP Cloud ALM, as SAP's strategic operations and central observability platform. SAP Cloud ALM allows the central operation of your holistic business scenarios spanning several environments. If<SPAN>&nbsp;you should have special needs or third-party frameworks already in use around DevOps, benefit from open APIs of the DevOps services of SAP BTP and of SAP Cloud ALM.</SPAN></P><P>If you want to learn more, check out the information from <SPAN>the&nbsp;</SPAN><SPAN><A href="https://community.sap.com/topics/devops" target="_blank">DevOps | SAP Community</A></SPAN><SPAN>&nbsp;topic page and</SPAN> consider to take the learning journey&nbsp;<A title="Discovering DevOps with SAP BTP learning journey" href="https://learning.sap.com/learning-journey/discovering-devops-with-sap-btp" target="_blank" rel="noopener noreferrer">Discovering DevOps with SAP BTP</A><SPAN>.&nbsp;If you want to try it out, all DevOps services are part of SAP BTP free tier, so the above setup can be experienced without charge. Otherwise, SAP Build Code is a good starting point as well, as it does comprise most of the DevOps-related SAP BTP services.</SPAN></P> 2024-05-06T14:26:48.640000+02:00 https://community.sap.com/t5/technology-blogs-by-members/configuring-sap-ci-cd-pipeline-for-deploying-reactjs-application-in-cloud/ba-p/13692318 Configuring SAP CI/CD pipeline for Deploying ReactJS application in Cloud Foundry 2024-05-07T09:59:07.961000+02:00 Nivedha_T https://community.sap.com/t5/user/viewprofilepage/user-id/1443428 <P><SPAN>In this blog, we will discuss how to integrate SAP CI/CD pipeline for deploying ReactJS application on SAP Cloud Foundry environment.</SPAN></P><P><STRONG>You will learn,</STRONG></P><UL><LI>How to create and build a ReactJS application.</LI><LI>How to configure and run SAP CI/CD Pipeline service.</LI><LI>How to create GitHub Webhook for automatically build, test and deploying the code changes.</LI></UL><P><STRONG>Prerequisites</STRONG></P><UL><LI>You have an SAP BTP Global or trial account.</LI><LI>Node installed in your system.</LI><LI>You have a GitHub account.</LI></UL><P><STRONG>Setting up React Application</STRONG></P><P><STRONG>step 1:&nbsp;</STRONG>Create your react application using the <STRONG>create-react-app</STRONG>. The&nbsp;create-react-app&nbsp;is an excellent tool which allows you to create and run React project very quickly by wrapping all the required dependencies.</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>npx create-react-app reactcicd</code></pre><P>&nbsp;</P><P><STRONG>step 2:&nbsp;</STRONG>To ensure that the application is running as expected, open the terminal and navigate to the application folder and type the below command. The application gets automatically hosted in the default server localhost:3000 and you’ll get the following screen.</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>npm start</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_0-1714980501769.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106102i5AB94CF66B6D0585/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_0-1714980501769.png" alt="Nivedha_T_0-1714980501769.png" /></span></P><P><STRONG>step 3:&nbsp;</STRONG><SPAN>&nbsp;</SPAN>Now&nbsp;create<SPAN>&nbsp;</SPAN><STRONG>manifest.yml</STRONG><SPAN>&nbsp;</SPAN>file for determining the Cloud Foundry app configurations and paste the below contents.</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code> --- applications: - name: your-app-name path: build/ instances: 1 buildpack: https://github.com/cloudfoundry/staticfile-buildpack.git memory: 256M</code></pre><P>&nbsp;</P><P>&nbsp;<STRONG>step 4:&nbsp;</STRONG>Build the application using the below command,&nbsp;you will see the build folder getting added to your&nbsp; project.&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>npm run build</code></pre><P>&nbsp;</P><P>&nbsp;Also create a<SPAN>&nbsp;<STRONG>Staticfile&nbsp;</STRONG>with the following content in the build folder as shown below</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_1-1714980671736.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106107i65AF153FB2EB646A/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_1-1714980671736.png" alt="Nivedha_T_1-1714980671736.png" /></span></P><P><STRONG>step 5:&nbsp;</STRONG>Now create a repository in your GitHub and push the changes. Make sure to remove build folder from the<SPAN>&nbsp;</SPAN><STRONG>gitignore</STRONG><SPAN>&nbsp;</SPAN>file since it is added default while creating the react project, we require it for deployment.&nbsp;For more details on how to deploy react application refer this link&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/deploy-your-reactjs-application-in-cloud-foundry/ba-p/13464100" target="_blank">react-CF-deploy</A></P><P>&nbsp;</P><P><STRONG>Enable SAP Continuous integration and Delivery Service</STRONG></P><P><STRONG>step 1:&nbsp;</STRONG>Login into SAP BTP Cockpit and choose the subaccount to which you want to deploy your application.</P><P><STRONG>step 2:&nbsp;</STRONG>Select Service Marketplace from the side pane and search for Continuous Integration and Delivery service. Click the create button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_2-1714980874176.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106111i9D35AD0ECC3EFCE5/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_2-1714980874176.png" alt="Nivedha_T_2-1714980874176.png" /></span></P><P><STRONG>step 3:&nbsp;</STRONG>Create popup will appear then choose the plan you want to and click create button at the bottom. Choose View Subscription and wait until the status changes to Subscribed.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_3-1714980898759.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106112i397B4F5AAEDA52F7/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_3-1714980898759.png" alt="Nivedha_T_3-1714980898759.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_4-1714980898775.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106113i30606F8B3B768430/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_4-1714980898775.png" alt="Nivedha_T_4-1714980898775.png" /></span></P><P><STRONG>step 4:&nbsp;</STRONG>Once the status is changed to subscribed navigate to<SPAN>&nbsp;</SPAN><STRONG>Security → Role Collections</STRONG><SPAN>&nbsp;</SPAN>from the left-hand pane. Choose role collection<SPAN>&nbsp;</SPAN><STRONG>CICD Service Administrator</STRONG><SPAN>&nbsp;</SPAN>and click edit.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_5-1714980933234.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106114i8BECA5B62510FD65/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_5-1714980933234.png" alt="Nivedha_T_5-1714980933234.png" /></span></P><P><STRONG>step 5:&nbsp;</STRONG>Navigate to users section click edit then Add a new row <SPAN>in the Users section table, enter your user id, Keep the identity provider as default and click save.</SPAN></P><P>&nbsp;</P><P><STRONG>Configure your credentials</STRONG></P><P><STRONG>step 1:<SPAN>&nbsp;</SPAN></STRONG>Go to<SPAN>&nbsp;</SPAN><STRONG>Services → Instances and Subscriptions</STRONG>&nbsp;from the pane. Choose the application icon located next to the Continuous Integration &amp; Delivery subscription. Now we need to add credentials for GitHub, CF and Webhook.</P><P><STRONG>step 2:&nbsp;</STRONG>Let’s first go with GitHub credentials. If your GitHub repository is private, you will need to provide with the necessary credentials to access it. You can skip this in case of public repository.</P><P><STRONG>step 3:&nbsp;</STRONG>In Create Credentials popup make sure you give unique name within the subaccount. Select the type as basic authentication and provide your git credentials. Use<SPAN>&nbsp;</SPAN><STRONG>personal access token</STRONG><SPAN>&nbsp;</SPAN>as a password. Then choose create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_8-1714981085288.png" style="width: 274px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106121i45FB7B7F5CD360CC/image-dimensions/274x335?v=v2" width="274" height="335" role="button" title="Nivedha_T_8-1714981085288.png" alt="Nivedha_T_8-1714981085288.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_9-1714981085304.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106122iACA724E2C111F465/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_9-1714981085304.png" alt="Nivedha_T_9-1714981085304.png" /></span></P><P><STRONG>step 4:&nbsp;</STRONG>Now repeat the same steps for adding CF credentials. Here you have to provide your SAP BTP cockpit username and password.</P><P><STRONG>step 5:&nbsp;</STRONG>For configuring webhook credentials change the type from Basic Authentication to<SPAN>&nbsp;</SPAN><STRONG>Webhook Secret</STRONG>. Then generate the webhook secret copy it somewhere safe and finally choose Create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_10-1714981130073.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106123i8044A5F853431BF5/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_10-1714981130073.png" alt="Nivedha_T_10-1714981130073.png" /></span></P><P>&nbsp;</P><P>&nbsp;<STRONG>Add a CI/CD job</STRONG></P><P><STRONG>step 1:&nbsp;</STRONG>Navigate to the&nbsp;Jobs&nbsp;tab and choose the icon to add a new job. Provide unique name for the job.</P><P><STRONG>step 2:&nbsp;</STRONG>Click on the icon inside the Repository input field. You will get a popup then choose add repository., Enter your git repository clone URL. You can add any name of your choice. It need not to be matched with your repo. Choose your saved credentials for git and webhook.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_11-1714981173201.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106126i2F2B4F0BC69988FE/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_11-1714981173201.png" alt="Nivedha_T_11-1714981173201.png" /></span></P><P><STRONG>step 3:&nbsp;</STRONG>For Branch, enter the GitHub branch of your repository from which you want to receive push events. In this example, master. Select&nbsp;Cloud Foundry Environment from the dropdown in the&nbsp;Pipeline&nbsp;field.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_12-1714981202052.png" style="width: 231px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106129i5C9A8B7C46CC1B2F/image-dimensions/231x333?v=v2" width="231" height="333" role="button" title="Nivedha_T_12-1714981202052.png" alt="Nivedha_T_12-1714981202052.png" /></span></P><P><STRONG>step 4:&nbsp;</STRONG>In the BUILD section choose <STRONG>npm</STRONG> as your build tool. For Build Tool Version, select the latest node version.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_13-1714981258865.png" style="width: 230px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106131iD237EABD621B572D/image-dimensions/230x276?v=v2" width="230" height="276" role="button" title="Nivedha_T_13-1714981258865.png" alt="Nivedha_T_13-1714981258865.png" /></span></P><P><STRONG>step 5:&nbsp;</STRONG>Under the Release section, switch on the execution of the Deploy to Cloud Foundry Space. Since we have already given name in the manifest file, we can skip the name field.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_14-1714981258886.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106130i8F134CBD4894D948/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_14-1714981258886.png" alt="Nivedha_T_14-1714981258886.png" /></span></P><P>Replace the placeholders<SPAN>&nbsp;</SPAN><STRONG>API</STRONG><SPAN>&nbsp;</SPAN><STRONG>Endpoint</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Org Name</STRONG><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><STRONG>Space</STRONG><SPAN>&nbsp;</SPAN>with the values in the Cloud Foundry environment to which you want to deploy. You can get the values from your subaccount overview in the SAP BTP cockpit.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_15-1714981259131.png" style="width: 448px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106133iD8DDBAE76DEC1B67/image-dimensions/448x179?v=v2" width="448" height="179" role="button" title="Nivedha_T_15-1714981259131.png" alt="Nivedha_T_15-1714981259131.png" /></span></P><P><STRONG>step 6:&nbsp;</STRONG>For Deploy Type, choose standard and select your previously created CF credentials. Leave remaining fields default then finally choose create.</P><P>&nbsp;</P><P><STRONG>Create a GitHub Webhook</STRONG></P><P>GitHub webhooks allow you to automate CI/CD builds. Whenever you push changes to your GitHub repository, a webhook push event is sent to the service to trigger a build of the connected job.</P><P><STRONG>step 1:&nbsp;</STRONG>To create a webhook in GitHub, you need payload URL. Select your repository and choose Webhook Data from the right pane. You will see a below popup:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_16-1714981344476.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106136i5972BD058A1C2C70/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_16-1714981344476.png" alt="Nivedha_T_16-1714981344476.png" /></span></P><P><STRONG>step 2:&nbsp;</STRONG>Now sign in into your GitHub account. In your project, go to the Settings tab.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_17-1714981371239.png" style="width: 414px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106137i26BBC09733BEFD59/image-dimensions/414x176?v=v2" width="414" height="176" role="button" title="Nivedha_T_17-1714981371239.png" alt="Nivedha_T_17-1714981371239.png" /></span></P><P><STRONG>step 3:&nbsp;</STRONG>From the left pane, choose Webhooks then Add webhook. Enter the Payload URL, Content type from the popup and &nbsp;the Secret that you had saved previously. For all other settings, leave the default values and add.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_18-1714981371260.png" style="width: 418px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106138iE1AFAD5DC98A2905/image-dimensions/418x203?v=v2" width="418" height="203" role="button" title="Nivedha_T_18-1714981371260.png" alt="Nivedha_T_18-1714981371260.png" /></span></P><P>&nbsp;</P><P><STRONG>Verify your Build</STRONG></P><P>You have to trigger your job manually the first time after creation.</P><P><STRONG>step 1:&nbsp;</STRONG>In Jobs tab, select your job and choose Run. Verify that a new tile appears in the Builds view. This tile should be marked as running.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_19-1714981408610.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106139i842382DFCFBFB9E4/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_19-1714981408610.png" alt="Nivedha_T_19-1714981408610.png" /></span></P><P><STRONG>step 2:&nbsp;</STRONG>Wait until the job has finished and verify that the build tile is marked as successful.</P><P><STRONG>step 3:&nbsp;</STRONG>Navigate to your space in the SAP BTP cockpit and check the list of installed applications. Now you can see your application got added.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_20-1714981431389.png" style="width: 502px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106140i26C4A503E284121C/image-dimensions/502x166?v=v2" width="502" height="166" role="button" title="Nivedha_T_20-1714981431389.png" alt="Nivedha_T_20-1714981431389.png" /></span></P><P><STRONG>step 4:&nbsp;</STRONG>Select your application and launch it with the application route. You can see the react application deployed.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_21-1714981464703.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106141i23A2E344C33B413E/image-size/medium?v=v2&amp;px=400" role="button" title="Nivedha_T_21-1714981464703.png" alt="Nivedha_T_21-1714981464703.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nivedha_T_22-1714981464718.png" style="width: 261px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106142iA7CA9286785DCDED/image-dimensions/261x286?v=v2" width="261" height="286" role="button" title="Nivedha_T_22-1714981464718.png" alt="Nivedha_T_22-1714981464718.png" /></span></P><P>You have now successfully created a CI/CD pipeline and deployed your ReactJS application to SAP BTP. From now on for every commit you can see the job getting triggered with commit id displayed under builds section.</P> 2024-05-07T09:59:07.961000+02:00