Described as an online flea market, leboncoin is a portal that allows individuals to buy and sell new and used goods online in their local communities. Leboncoin is one of the top ten searched websites in France, following Google, Facebook, and YouTube to name a few.
We got talking with Guillaume Chenuet to get some answers to why Leboncoin chose Zuul, an open source CI tool, and how they use it with GitHub, Gerrit, and OpenStack.
How did your organization get started with Zuul?
We started using Zuul for open source CI two years ago with Zuulv2 and Jenkins. At the beginning, we only used Gerrit and Jenkins, but as new developers joined leboncoin each new day, this solution was not enough. After some research and a proof-of-concept, we gave Zuul a try, running between Gerrit and Jenkins. In less than a month (and without an official thick documentation) we’ve setup a complete new stack. We ran it for a year before moving to Zuulv3. Zuulv3 is more complex in terms of setup but brings us more features using up-to-date tools like Ansible or OpenStack.
Describe how you’re using it:
We’re using Zuulv3 with Gerrit. Our workflow is close to the OpenStack one. For each review, Zuul is trigger on three “checks” pipelines: quality, integration and build. Once results are correct, we use the gate system to merge the code into repositories and build artifacts.
We are using two small OpenStack clusters (3 CTRL / 3 STRG / 5 COMPUTE) on each datacenter. Zuul is currently setup on all Gerrit projects and some GitHub projects too. Below, is our Zuulv3 infrastructure in production and in the case of datacenter loss.
Zuulv3 infrastructure in production.
Zuulv3 infrastructure in the case of DC loss.
What is your current scale?
In terms of compute resources, we currently have 480 cores, 1.3To Ram and 80To in our Ceph clusters available. In terms of jobs, we ran around 60,000 jobs per month which means ~around 2,500 jobs per day. Jobs average time is less than 5 minutes.
What benefits has your organization seen from using Zuul?
As leboncoin is growing very fast (and microservices too 🙂 ), Zuul allows us to ensure everything can be tested and at scale. Zuul is also able to work with Gerrit and GitHub which permits us to open our CI to more teams and workflows.
What have the challenges been (and how have you solved them)?
Our big challenge was to migrate from Zuulv2 to Zuulv3. Even if everything is using Ansible, it was very tiresome to migrate all our CI jobs (around 500 Jenkins jobs). With the help of Zuul guys on IRC, we used some Ansible roles and playbooks used by OpenStack but migration time was about a year.
What are your future plans with Zuul?
Our next steps are to use Kubernetes backend for small jobs like linters and improve Zuul with GitHub.
How can organizations who are interested in Zuul learn more and get involved?
Coming from OpenStack, I think meeting the community at Summits or on IRC is a good start. But Zuul needs better visibility. It is a powerful tool but the information online is limited.
Are there specific features that drew you to Zuul?
Scalability! And also ensuring than every commit merge into the repository is clean and can’t be broken.
What would you request from the Zuul upstream community?
Work on a better integration to Gerrit 3, new nodepool features and provider, a full HA and more visibility on the Internet.
Cover image courtesy of Guillaume Chenuet.