[tahoe-lafs-trac-stream] [Tahoe-LAFS] #3484: The CI Docker image builders are hard to test and are happy to push broken images
Tahoe-LAFS
trac at tahoe-lafs.org
Thu Oct 22 19:01:02 UTC 2020
#3484: The CI Docker image builders are hard to test and are happy to push broken
images
--------------------------------+---------------------------
Reporter: exarkun | Owner:
Type: defect | Status: new
Priority: normal | Milestone: undecided
Component: dev-infrastructure | Version: n/a
Keywords: | Launchpad Bug:
--------------------------------+---------------------------
A lot of the current CI configuration uses Docker images as a basis for
the testing environment. There is also CI configuration to build these
Docker images. These images are pre-loaded with as much software as we
can manage so that they bear most of the environment setup cost. Then
individual CI jobs that are for running tests only have to get Tahoe-LAFS
itself in place. This lets them run more quickly.
Docker images are built on CircleCI by a cron-driven nightly workflow.
This means images are typically only built based on what's in master.
This means that it is hard to test any code changes to how the images are
built since those changes don't happen on master. If you want to test
them at all, you have to do it manually outside of CI (which is error
prone since you cannot reproduce the exact CI environment) or you have to
mess with the configuration to make the images build on your branch (and
then un-mess it afterwards).
It would be a nicer developer experience if changes to the image building
code were testable in essentially the same way changes to any other code
are testable - push changes to a branch, let CI run against that branch,
see if CI succeeds or not.
Apart from those issues, another issue is that the image-building CI jobs
will push the images they build as long as that build succeeds. The build
may succeed any include an incompatible version of some dependency (eg
because it was just released and the builders pull the latest version of
many dependencies).
It would be nice if new images were only pushed if they worked at least as
well as the image they were replacing. This would let normal Tahoe-LAFS
development continue undisturbed when a dependency publishes an
incompatible release. When a developer has a chance to look at the issue,
they can then address the problem. Once the problem is resolved in Tahoe-
LAFS the image builder would be unblocked to push new images.
These two things may really be independent problems with independent
solutions and if so then this ticket should be split in half (if not
further). I describe both of the problems here because they seem very
interconnected to me, partly due to the constraints placed on us by the
capabilities of the CI systems we rely on.
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3484>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list