Zstreaming a kernel release

Steps to do when a kernel stream is to be released.


Every once in a while, a RHEL stream is released. As CKI needs to run with matching environment, we need to update our setup to match this, in an order that doesn’t break the runs in between.

Timeline and requirements

There is no hard timeline on when these changes need to be put in place. The only requirement to start the process is to have the kernel zstream branch created by the maintainers. This happens pretty early, and is announced on kernel-info. Of course, the steps requiring the ystream compose and zstream containers need to wait for their availability.

A good indicator to start the process is the kernel maintainers changing the kernel makefile configuration to officially tag the new zstream. This usually happens around the RC release of the new zstream compose.

Package dependencies and conflicts between the new zstream and ystream may increase the priority of the changes on CKI side. This can happen e.g. when the new ystream kernel or the tests start requiring package versions only available in the new ystream compose. If this is the case, kernel or test maintainers will point it out, or we’ll notice the new pipelines consistently failing.

Steps to take

  1. Add the zstream branch to the gitlab-ci-bot config.
  2. Create a zstream tree in kpet-db. Also add the realtime tree if realtime kernels are supported for this stream. The tree(s) should match the ystream tree for now.
  3. Update the kpet tree selection script to handle new NVR range or disttag match.
  4. Only needed for RHEL8 and newer. Wait for the kernel maintainer to submit an MR to the kernel repository that (1) adds a new disttag_override value to all pipelines in the new zstream branch, and (2) updates the stream disttag in one of the redhat/Makefile.* files. Review the MR, and check the MR pipeline picks the new zstream kpet tree.
  5. Now that zstream kernels will not use the ystream tree file anymore, everything is ready to update the ystream tree file in kpet-db to point to the new ystream compose.
  6. Once the RHEL zstream is GA, a new UBI container should become available. Create a new builder container with it. You should be able to copy the definition of an older zstream container and only override the stream value. Call the CKI bot in the containers MR with the builder_image override of this new container to test the building and booting of the kernel works well.
  7. If released containers are used for the zstream pipeline, tag and release a new version. Follow the steps to tag and release new pipeline images to do this.
  8. Create an MR to the kernel repository for the zstream branch to switch the builder_image to the newly created container.