The test community for bits and
bits-console. It is used to re-run another
community's real build, unchanged, and publish the result to the self-contained CVMFS
publishing testbed (cvmfs-testbed: its own
gateway, cvmfs-prepub, Stratum 0/1 and object store, serving the repository
test.cvmfs.io) instead of the production repository bits.cern.ch. Publishing changes can
therefore be tried end to end without touching production and without recompiling a stack.
The repository holds no package recipes, only one defaults file, defaults-testbed.sh. It is
an overlay that changes a single setting, system.cvmfs_repository: test.cvmfs.io, so a
group's tree moves from /cvmfs/bits.cern.ch/<group>/... to /cvmfs/test.cvmfs.io/<group>/...
and everything below the repository name stays as in production. In the
bits-providers registry, testbed.bits is listed
as the test community and requires stacks.bits,
which in turn requires lcg.bits.
You can add the overlay to a group's build on your own machine to check what it resolves to.
Get bits as described in the bits README,
then put this repository on the recipe search path of the group's build and add testbed
at the end of its defaults chain:
bits init testbed.bits # or: git clone https://github.com/bitsorg/testbed.bits
bits init lhcb.bits && cd lhcb.bits # the group whose build you want to re-run
bits build --dry-run --search-path "$PWD/../testbed.bits" \
--defaults lhcb::gcc14::opt::testbed --set release=LCG_110 \
--architecture x86_64-el9 lcg-viewBecause the hashes are unchanged, the plan lists the same packages as the build without
testbed. For ALICE the chain is alidist::o2::testbed. To see the CVMFS path a package
would be published to, run
bits cvmfs-path
with the same --search-path, --defaults and --set options.
A package's hash comes from its recipe, sources, patches, dependencies and the merged
env: of the defaults, not from where it is published. The system: block is never hashed,
so a build with testbed added has the same package hashes as the production build: the
certified store is reused and only the publish destination changes. Adding env:,
requires:, disable: or overrides: to defaults-testbed.sh would change every hash and
turn a publishing test into a full rebuild; such settings belong in the group's own
defaults.
defaults-testbed.sh is marked valid_defaults_exempt: true, so packages that restrict their
defaults with valid_defaults (for example ALICE's O2) accept it as a structural layer
rather than a build flavour.
The Testbed community in bits-console (communities/Testbed/ui-config.yaml) is set up
as follows:
group_recipesis this repository, and the community whose build is re-run (for examplelhcb.bitsoralice.bits) is added as an extra provider in Settings -> Providers; the CI job puts it on the recipe search path.defaults_overlay: testbed: the console appendstestbedas the last element of whatever defaults chain the build selects, e.g.alidist::o2becomesalidist::o2::testbed. It must come last, because later profiles win when the chain is merged; the build form shows the full--defaultsvalue that will be passed.cvmfs_repo: test.cvmfs.ioandcvmfs_prefix: /cvmfs/test.cvmfs.io: bits refuses to publish unless the destination lies under this prefix. The same check is what stops the overlay from redirecting a build in a production community.prepub_urlandstratum0_urlpoint the publish job at the testbed's cvmfs-prepub and object store instead of the production ones.- Platforms use the bits-containers image names:
x86_64-el9,x86_64-el10,aarch64-el9,x86_64-ubuntu2404,x86_64-ubuntu2604. - Publish options that the production communities do not offer yet, such as staged publishing and direct upload to S3, are enabled here so they can be compared and tested.
The testbed services must be running for a publish to succeed; see the cvmfs-testbed README and DEPLOYMENT.md.
- cvmfs-testbed: the testbed stack; lhcb.bits and alice.bits: communities whose builds are re-run here; bits Effect on build hashes
- stacks.bits and lcg.bits READMEs: profiles, releases, CVMFS layout and the recipe pool
- bits User Guide, Cookbook, Reference
- bits-console: community configuration and the publish pipeline
This repository does not contain a LICENSE file yet.