summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README51
1 files changed, 51 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..d17e35b
--- /dev/null
+++ b/README
@@ -0,0 +1,51 @@
+This repository contains files for a Jenkins build pipeline, using Docker to
+build in known systems.
+
+The first tranche of jobs takes base system images (Debian, Fedora, and Ubuntu)
+from the canonical upstream Docker Hub, and adds basic toolchain packages,
+as well as a user to build under. These images are stored to a local Docker
+registry (like the Hub, but self-hosted) for later use, tagged by date.
+
+The second tranche of jobs takes these produced system images, and adds build
+dependencies for various packages. For instance, the Wayland base image will
+have all the dependencies to build libevdev, libinput, wayland,
+wayland-protocols, and weston. These images are also stored to the Docker
+registry for later use, with a stable tag. Updating the first-tranche images
+will also trigger a rebuild of these images.
+
+The third tranche of jobs uses these final produced images as a host in which
+to build the packages, e.g. Wayland. These are triggered by upstream activity,
+e.g. repository commits or code review requests. These jobs use a stable tag
+of the images produced by the second-tranche jobs; 'stability' is determined
+by running a test build of these jobs, and promoting if the builds succeed
+against the new base images.
+
+
+REQUIREMENTS
+============
+
+Jenkins 2.0:
+Pipeline and Docker plugins, Matrix job plugin
+
+jenkins-job-builder and jenkins-job-builder-pipeline forks with fixes:
+https://github.com/fooishbar/jenkins-job-builder
+https://github.com/fooishbar/jenkins-job-builder-pipeline
+
+
+JOB FLOW
+========
+
+The core entrypoint is docker-images/base-images/all, which runs in a multi-axis
+configuration. Each axis simply spawns a pipeline job named
+docker-images/base-images/$platform-$arch, which performs the actual work of
+generating a base image for that architecture through a Pipeline job defined
+in base-images/build-image.jpl. The definitions for all these jobs are in
+base-images/base-images.jjb.
+
+For each base image build, it will spawn rebuilds (with the same tag/stamp) of
+any dependent images. Currently, this is the docker-images/wayland-images/*
+group, with a core pipeline defined in wayland-images/build-image.jpl.
+
+Dependent image builds then spawn builds (e.g. wayland/build/*) within the
+container it just built, as a sanity check; if these are successful, then the
+dependent build will be promoted.