Arch Linux build automation with Buildbot
This buildbot is intended for use with a build master where all your PKGBUILDs resides and a worker that does the handywork and hosts your custom repositories.
- Manual package building
- Automatic VCS package building
- Split PKGBUILD support
- Unattended GPG signing
- Email reports
- Override repo per package in the configuration to handle
multilib
packages in thecommunity
logical group - Add support for VCS url qualifiers (
#commit
,#tag
,#branch
, etc...) - Automatically update packages built from VCS tags or commits
- Both master and worker need
python
, seerequirements.txt
for needed libraries - Master optionally needs
git
,hg
andsvn
for automatic VCS package building - Master optionally needs
gpg
for unatended GPG signing - Worker needs
devtools
andpacman-contrib
to build in chroots and generate.SRCINFO
All configuration is done in config.yml
in the master directory. You can use config.example.yml
as base.
The root of your PKGBUILD collection, separated in logical groups (folders). For example, packages
may contain PKGBUILDs from [core]
and [extra]
, community
PKGBUILDs from [community]
and [multilib]
, and unsupported
PKGBUILDs from AUR.
Note: packages
and community
are special folders where PKGBUILDs will be looked up in a trunk
subdirectory to match our SVN.
The root of all your sources, as defined by SRCDIR
in /etc/makepkg.conf
. Buildbot will monitor bare VCS repositories in this directory to automatically trigger builds when there are new commits.
The root of all your packages, as defined by PKGDIR
in /etc/makepkg.conf
. The worker will upload all built packages in that location. Mandatory for signing, and useful if you want to use extrapkg
and the likes afterwards.
The root of your repositories on the worker, usually ~/public_html
. The path must be absolute.
All repositories will be named after the official repository they target, plus this suffix.
Whether or not to sign packages. GPG must be configured for unattended use on the master, by increasing the cache TTL and possibly using a preset passphrase.
Whether or not to send emails when a package fails to build.
The email address buildbot will be using to send emails.
The email addresses of the report recipients.
Takes a hashmap of usernames and passwords. Using an email as username will automatically fetch your avatar from Gravatar. Leave empty to disable authentication.
The target repositories, all official repositories are defined by default but you may want to restrict, or expand them. Custom repositories need an associated custom-x86_64-build
binary the likes of what's in devtools
.
These are the logical groups (folders) mentioned earlier.
The name of the logcal group.
The default target repo. It will be used for automatically triggered builds, and pre-selected in forced builds. You can always choose a different repo when doing forced builds.
A list of the packages to be built.
The name of the package. pkgname
or pkgbase
for split PKGBUILDs.
The name of the dependencies that will be fetched from the unofficial repo when they don't exist in official repositories, or when you need to override them.