Skip to content

Preparing a new release based on a new Ubuntu codename

David Hewitt edited this page Mar 18, 2023 · 21 revisions

To rebase elementary OS on a new Ubuntu release, use the following process:

We will use a switch from Ubuntu jammy to Ubuntu lunar as an example.

Setting up Metapackage builds

  1. Clone https://github.com/elementary/metapackages
    1. Create a new branch for the new Ubuntu release (lunar) from the previous Ubuntu release branch (jammy)
    2. Push new branch to repo
  2. Clone https://github.com/elementary/seeds
    1. Create a new branch for the new Ubuntu release (lunar) from the previous Ubuntu release branch (jammy)
    2. In the new branch, in .github/workflows/update.yml replace instances of previous Ubuntu release with the new one.
    3. Push new branch to repo
  3. Clone https://github.com/elementary/platform
    1. Create a new branch for the new Ubuntu release (lunar) from the previous Ubuntu release branch (jammy)
    2. In the new branch, in .github/workflows/update.yml replace instances of previous Ubuntu release with the new one.
    3. Push new branch to repo
  4. Wait for the GitHub actions runs to complete on both repositories.
  5. The new branch of https://github.com/elementary/metapackages should be committed to by the GitHub actions.
    1. Take note of any removed packages from these commits. This forms the list of packages that need to be built in Launchpad for the new codename. (e.g. https://github.com/elementary/metapackages/commit/bc133fb5d22a36574a00ec9d999e6ae7afc5e135)
  6. Force an import of the metapackages repository on Launchpad: https://code.launchpad.net/~elementary-os/elementaryos/+git/metapackages
  7. Create a new recipe from this repository pointing to the new codename branch, this should be named like seed-metapackages-lunar-daily
  8. Enable the new codename for the overlay package and request a build: https://code.launchpad.net/~elementary-os/+recipe/os-patches-enabler
  9. Wait for the builds to complete and publish! 🍵

Building the Docker containers

  1. Once the Launchpad builds above are completed, clone https://github.com/elementary/docker
  2. Copy the previous unstable (horus-unstable) folder to a new codename (e.g. ubuntu-lunar-unstable)
  3. Modify the Dockerfile in the new folder, replacing the old codename with new jammy -> lunar
  4. Do a test build of the Docker container with:
docker build .