Porting builders to newer Ubuntu versions
=========================================
QA Migration & Deployment
-------------------------
There are following steps to porting builders to newer Ubuntu versions.
- Porting `launchpad-buildd `_ and its dependencies to work on the target Ubuntu version. You can follow `lp-buildd docs `_ to develop and publish on buildd-staging PPA.
- Apart from the deb dependencies defined in `debian/control `_ in `launchpad-buildd `_, you would also need to make sure that deb packages of target ubuntu version are available for ``bzr-builder``, ``git-recipe-builder`` and ``quilt``.
- These dependencies are defined in `charm-launchpad-buildd-image-modifier `__
- Update the ``gss_series`` variable in `launchpad-mojo-specs `__. Run ``mojo run`` to deploy the config changes.
- PS: We use ``vbuilder`` branch for build farm mojo specs.
- You don't have to update the builder config to target Ubuntu version at this step. We first have to build an image and then update the builder configs.
- Next step is to rebuild images. Currently `launchpad-mojo-specs `__ `(vbuilder branch)` uses 2 charms to rebuild images & sync images. You can either trigger a rebuild by following: `testing-on-qastaging `_ or use the ``sync-images`` action.
- `charm-glance-simplestreams-sync `_ provides a `sync-images` action that downloads the configured base images and calls a hook to run the image modifier charm.
- `charm-launchpad-buildd-image-modifier `__ has scripts that creates a qemu COW VM image for builders with all the needed dependencies and configuration.
.. code-block:: sh
juju actions --help
juju list-actions
juju run-action --verbose sync-images
- Update the ``builder config`` to use target Ubuntu version in `launchpad-mojo-specs `_. Use ``mojo run`` to deploy the config changes.
- You can either wait for builders to reset and pick the new image or reset them using `ubuntu archive tools `_
.. code-block:: sh
./manage-builders -l qastaging --disabled -a riscv64 --reset
Notes & Helpful links
---------------------
- With Ubuntu Noble, ``lxd`` is no longer a part of the base image and is pre-baked. Refer this `commit `_ that pre-bakes ``lxd`` if not available. `launchpad-buildd `_ uses ``lxd`` to run builds.
- `Setting up a user on QA staging `_
- `Debugging build farms `_
- Charms can also be manually upgraded for a unit via:
.. code-block:: sh
juju upgrade-charm