Using Perforce in a Complex Jenkins Pipeline

Using Perforce in a Complex Jenkins Pipeline

  • February 2, 2019
Table of Contents

Using Perforce in a Complex Jenkins Pipeline

Hi, I’m Guy ‘RiotSomeOtherGuy’ Kisel, a software engineer at Riot. You might remember me from Running an Automated Test Pipeline for the League Client Update. I work on the Riot Developer Experience team – our responsibilities include providing Jenkins servers and related infrastructure for engineers to use for building, testing, and shipping their software to the millions of players that play League of Legends.

We’re sort of like a traditional build team, except that we provide self-service tools for engineers to manage their own builds instead of building their software for them. We recently encountered issues integrating Jenkins Pipeline and Perforce and wanted to share our experiences and eventual workarounds. Integrating Pipeline with Git is relatively straightforward, but integrating Perforce presented us with an entirely new set of problems, like conflicts between concurrent jobs on the same build node, and difficulty syncing the right changelist multiple times in a single pipeline.

We’ll start with a bit of context about Git, Perforce, and Jenkins. Git is popular across the tech industry, but Perforce is somewhat less common outside of specific industries like gaming. Jenkins is also very popular, though it’s facing heavy competition from alternatives such as Travis CI.

Then we’ll dive into the problems we encountered with integrating Jenkins Pipelinewith Perforce, including solutions we developed for each problem. And finally, we’ll conclude with some general learnings we discovered along the way.

Source: riotgames.com

Share :
comments powered by Disqus

Related Posts

Introducing Git protocol version 2

Introducing Git protocol version 2

Today we announce Git protocol version 2, a major update of Git’s wire protocol (how clones, fetches and pushes are communicated between clients and servers). This update removes one of the most inefficient parts of the Git protocol and fixes an extensibility bottleneck, unblocking the path to more wire protocol improvements in the future. The main motivation for the new protocol was to enable server side filtering of references (branches and tags).

Read More
Getting started with Jenkins X

Getting started with Jenkins X

Jenkins X is an open source system that offers software developers continuous integration, automated testing, and continuous delivery, known as CI/CD, in Kubernetes. Jenkins X-managed projects get a complete CI/CD process with a Jenkins pipeline that builds and packages project code for deployment to Kubernetes and access to pipelines for promoting projects to staging and production environments.

Read More