To administer the Continuous build, you will need to understand the manifest.json file. It is quite simply just a list of git repositories to build in order.

Resolve + Build

Every 10 minutes (or on git push notification), Continuous first does a resolve. This is where it takes the manifest.json and turns it into a "snapshot.json", which has the exact commits to build. Then, a build task will start. If a build is already running, then the next build will pick up the latest snapshot, and build that all at once.

Once a build is complete, it gets tagged as "gnome-continuous/buildmaster/x86_64-devel-debug", and clients can download it.

After that, testing occurs on the server side.

"Tagging" modules

This term is a bit unfortunate, but I haven't come up with a better one. "retrofreeze" would be more accurate but a bit weird.

If something breaks, the most common thing to do is notify the maintainers of the module in request, and if a fix is not forthcoming quickly, you can "tag" it to the last known good revision. Here's some example commits: cogl vala.

Then just push the change to gnome-continuous git master. That's it - the build server will react to the commit.

Once the project is fixed, simply revert the tag commit. Note that after doing this, the first build may fail because "resolve" won't have run yet. Just wait and the next resolve should pick up any changes.

Branches

By default, Continuous will build git master. Using a branch is easy; it looks like this.

Just like tags, you can switch between branches and git master at any time. Note if "tag" is specified it will override "branch".

Using "build-epoch"

Continuous by default only rebuilds components if and only if their git revision changes. If a library bumps soname for example, at the moment you may have to force rebuilds of affected modules, even though their git revisions haven't yet changed.

See example epoch bumps: Xorg libchamplain

You can also of course just make a trivial commit to a module to force it rebuild.

Adding or removing modules

This should go through the jhbuild modulesets first, where possible. After that, please file a bug against gnome-continuous.

Starting the server

The people listed in the DOAP file: https://git.gnome.org/browse/gnome-continuous/tree/gnome-continuous.doap?id=3c8d56606a96ccb6fc2f9fc70708e74e6765de22 have access to start and maintain the server. If there are issues, please contact them, or the GNOME system administrators.

sudo -u ostree /bin/sh
(echo -n "export DBUS_SESSION_BUS_ADDRESS="; dbus-daemon --print-address --session) > ~/address &
cd ~/ostbuild/work
$HOME/.local/bin/jhbuild run ostbuild autobuilder --autoupdate-self=/srv/ostree/src/gnome-continuous

Starting the IRC bot

su -u build-irc-bot /bin/sh
cd ~/supybot
rm -f bot.log;twistd -n -y ~ostree/src/gnome-continuous/extras/ircbot/bot.py

Attic/GnomeContinuous/BuildAdministration (last edited 2021-03-10 21:51:50 by EmmanueleBassi)