Background: I used Jenkins to automate my final project to finish my graduate degree in Informatics. This project was a videogame using Jenkins as my automation tool to speed up the development with Unreal Engine 4. Unreal Engine 4 provides a testing suite inside its Automation Framework, but it's tedious to write a test, build the project, open the editor, run the tests and see if they succeed or fail.
Having had a little experience with Continuous Integration (CI) using Travis, I wanted a tool that automated the process of change verification and approval that would also be capable of communicating with Unreal Engine 4. That's when I found Jenkins, a robust automation program that suited the job.
Goals: Creating a CI environment to help video game development
Solution & Results: Thanks to Jenkins, I was able to execute the build process, tell the Unreal Engine 4 editor to run all my tests, create a report of their results, transform the report's JSON output to JUnit, run the code coverage process and notify myself about the results of the pipeline through Slack. All of it is configured via a simple jenkinsfile!!! And a push or pull request to my GitHub repository triggered Jenkins to run all these tasks automatically!!
Jenkins made me focus on the important aspects of my project, while at the same time it ran all the boring and repetitive tasks needed to approve and continue the development of the project.
The time invested in creating a CI pipeline with Jenkins saved me a lot of headaches and development time that would otherwise have been wasted on manual repetition of tedious tasks! The fact that Jenkins is open-source and free to use was a huge incentive in using it because, as a student, my budget was tight. :)
I relied on the following key capabilities:
Using Jenkins yielded significant results, including: