Jenkins is the way to achieve speed & correctness

Education Management System

Submitted By Jenkins User Shreyas Subhedar
This student lands a great DevOps job by showcasing his skills with a Jenkins-based college project.
Organization: Jawaharlal Nehru Engineering College, https://jnec.org
Team Members: Kamlesh Mugdiya, Software developer, FrontDoor
Industries: Information Technology, Education
Programming Languages: PHP, Python
Version Control Systems: GitHub
Community Support: Jenkins.io websites & blogs, Spoke with colleagues and peers

Use of Jenkins for a college DevOps project inspires other students to embrace Jenkins, too.

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."
image— Shreyas Subhedar, Associate Engineer DevOps, Acquia Inc.

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