DevOps World | Jenkins World 2019 Lisbon has ended
Back To Schedule
Thursday, December 5 • 14:45 - 15:30
Don't Repeat Job-Self!

Log in to save this to your schedule, view media, leave feedback and see who's attending!

In this session, we'll share our experience on how to avoid the redundant execution of repeated jobs using the Results Cache Plugin.

At King, we use Jenkins extensively to build our games and execute our tests. All of King’s development departments use this tool as there is a high-throughput of screenings, which generate large volumes of diverse data. This requires a flexible approach when building integrated, scalable and robust computational workflows for building. Maintaining our games is challenging.

In the build, test and release stages, there are two main workflows: “Merge to Meta” and “Hotfix” to build, test and fix all our libraries and our meta release, which are the most common sets of shared libraries used in all King games.

For example, each of these workflows could possibly launch at least a hundred of building jobs and this amount of jobs might potentially increase in the future due to the addition of new modules and features added every quarter. Therefore, they must be tested in order to deliver a good quality product. The same Jenkins job is repeated for a substantial number of times with exactly the same parameters within King’s Jenkins servers.

Buts sometimes, the job fails due to something not related to the job itself. It might be a failed connection in a GitHub repository, a timeout in the pending jobs queue or a disk space error in the Jenkins agent. One single job failure can ruin all the work done during the workflow execution.

So, what can we do to avoid the redundant execution of something that we know worked before?

Our initial search in the Jenkins Plugins page didn’t show any plugins that would solve the problem, so we had to research it from scratch.

We wanted the new plugin to ask for the status of a previously executed job at the beginning of the job execution: If it was a success, then it would just interrupt it and return a “SUCCESS” result, otherwise, it would keep on executing the job as expected. After execution, the ideal plugin would save the result of the execution, just in case the job is executed again in the future.

With that in mind, we created the Results Cache Plugin which can be found at the Jenkins plugins site.

avatar for Francisco Javier García Orduña

Francisco Javier García Orduña

Software Engineer, King.com
Francisco is a software engineer with more than 15 years of experience in the Java/J2EE platform. He is experienced with analysis, design and development of web frontend and backend cross-platform components such as communication with other agencies, payment gateways, security and... Read More →
avatar for David Campos Vall

David Campos Vall

Software Engineer, King.com
David is a computer engineer with a specialized hybrid profile: Software development and automated software quality assurance.As a software engineer, David has a strong background in cryptographic systems/applications, identity systems (federated or user-centric) and computer security.He... Read More →

Thursday December 5, 2019 14:45 - 15:30 PST
Auditorium III