Continuous quality using plugins and Jenkins (ABAP & UI5)
The recent update of my Windows computer delivered WLS which motivated me to play around with Docker and SAP (eco)system, as my previous experiences were not good. The topic I wanted to check was CI tools for ABAP & Fiori development code quality checks.
First step was to move SAP 7.52 SP04 Trial from Virtualbox to Docker. Here I followed Nabi’s blog: https://blogs.sap.com/2018/05/30/installing-sap-nw-abap-into-docker.
I installed Cloud Connector too. From both environments – Neo and CF – I was able to connect my dockerized SAP system.
I created destinations and connected to the system from SAP Web IDE. Business Application Studio shows the backend system, but I could not get OData services (error occurs).
My first step in the dockerized ABAP system was installing abapGit and getting back all my code from the previous, Virtualbox-hosted one.
Eclipse with ADT connected to the system without problems. I have enabled Automated Unit Test run, Automatic ATC run and Automatic source code formatting options using the excellent plugin “ABAP Continuous Integration Plugin for Eclipse” by Andreas Gautsch:
Next, I wanted to leverage abapLint checks, so firstly I get abaplint SCI client and next abaplint SCI server.
For the latter there is an option to use SAP Cloud Foundry or Docker – I chose the second one. After adding the new container to my network, all was set and new linter was present in SCI checks. I set a new SCI variant with abaplint checks selected as a default one for ATC checks, so with each Ctrl + Shift + F2 all linting messages were showed.
The last step was to use Jenkins server for automated, scheduled checks. After installing it as an another container, I added ABAP CI plugin (another great one by Andreas Gautsch, I have modified it slightly, the output from screens below is not part of the original one) and set tasks for running unit & ATC checks.
Finally I wanted also run checks on frontend part – Fiori apps, stored in my Bitbucket server. Here I established integration between my dockerized Jenkins and use my NPM testing scripts from package.json, based on ESLint and ui5-migration tool. I set the Jenkins job as a scripted pipeline; agent inside Jenkins was another docker container (Node).
Conclusion: with such powerfull tools like all plugins mentioned in this post, it is much easier to keep to codebase robust, clean and aligned to the required rules. Scheduled jobs in Jenkins are a great way to gather all required checks toghether and fire them periodically. And – last but not least – using Docker helps a lot for preparing PoC and firechecks before setting final scenarios.