PGCon2019 - 1.0.8

PGCon 2019
The PostgreSQL Conference

Speakers
Andrew Dunstan
Schedule
Day Talks - Day 1 - 2019-05-30
Room DMS 1120
Start time 11:00
Duration 00:45
Info
ID 1335
Track Hacking
Language used for presentation English

Running your own buildfarm server, and testing your own patches

Reasons for running your own Buildfarm Server include that you maintain your own fork, and that you want to be able to run tests with uncommitted patches. Recent developments make doing all this a lot easier. There is a now a complete vagrant recipe for setting up an instance. The buildfarm itself now regularly creates a sample of its data suitable for populating a test buildfarm instance. And the Buildfarm client now contains support for testing arbitrary branches, including things like uncommitted/unmerged patches. This talk is about how to use all these shiny new tools.

The PostgreSQL BuildFarm's original purpose, still valid today, was to ensure that committed patches build and test cleanly on a wide variety of platforms. We have members with a very wide variety of Architectures, Operating Systems, and so on. No non-distributed build system is likely to provide such coverage.

However, there have long been requests to support testing other repositories, and to test patches prior to their being committed/merged.

Recent developments have made both of these much easier.

Although the code for running the buildfarm server has long been public, there has never been a deploy script available up to now. The new vagrant setup contains a full deploy script for Debian Stretch (which is what the community's buildfarm server runs on). This setup could easily be adapted to other platforms. It includes a download of anonymized sample data so that you can see how it runs without having to provide any data yourself. We'll examine how to get the clients to build the branches you want.

We will also explain how to set up a git repository with unmerged branches, and how to get the buildfarm client to build those branches, and how to remove them when they are no longer needed.