Background: In my last year at Jawaharlal Nehru Engineering College, I worked with fellow student Kamlesh Mugdiya on a DevOps project. As we were designing the on-premise cloud, we focused on Nextcloud Tech and the LAMP stack web application. In doing so, we needed to make the right connections to set the flow of data.
The project size was increasing daily. Modularisation testing, in which we divided the cloud & code-editor into multiple models for development, started to become an issue. We also wanted our project to be fully documented and easy for fellow students to contribute to.
Goals: Student Briefcase (College Project 2020): We were building a system that would store coding assignments of all students of the college, analyze the code for valuation, and provide the coding platform that each student will use — all closely monitored by college staff.
"Adding Jenkins helped me land my first job in Acquia. ;-) It’s a best practice that every SRE/OPS dev/manager should follow to achieve the speed, simplicity & accuracy at every push."
Solution & Results: We needed a complete pipeline to simplify the integration process and make it manageable for developers. This is where Jenkins comes in. We used the complete CI to check the valid commit & PRs. We also used AWS S3 to store the backup of Nextcloud (on-prem cloud) by scheduling one cron job as a task in Jenkins. By adding a CI pipeline for the LAMP web app, we got a standard structure for our project, making it clear and straightforward for junior students to code and contribute to.
Here are the key capabilities we used:
Jenkins Docker plugin: For creating Jenkins slave as a docker container, I use the Docker plugin — it’s the best plugin!
CoverPHP: to get the test coverall report by PHPUnit
Crap4J: We tried this plugin to eliminate some less usable methods. As students are also contributing towards improving the application, it was essential to include code review.
GitHub using the Secure Shell Protocol (SSH): It’s a lifesaver plugin!
We got the results we were hoping for:
Simplicity in the Agile Sprint
Resolution time for merge conflicts shortened from 1 week to 2 days
As students, we got great exposure to DevOps and CI-CD
Inspired interest in junior students to learn Jenkins
Builds are categorized by the errors & debugged easily