As announced on the blog, we will start creating ubports/focal
on our git repositories. I intend to start creating these branches on 14 February 2024, 18:00 UTC.
This post serves as an FAQ for both the announcement and for the upcoming branching, as well as the place to ask additional questions.
What is the scope of this branch creation?
For this round, it will include most Git repositories under ubports/development/core GitLab group. Since I expect that most applications, including core apps, should not require much changes for 24.04 base upgrade, I've decided that I won't create branches for core apps for now. Should the need arise, we can decide later.
Also excluded in this round is repositories under ubports/development/core/packaging, which contains ubports/focal
branch but not ubports/latest
. Since this usually means the packaging is not applicable if the base changes, we will probably want to start a new ubports/latest
from scratch instead of forking from current ubports/focal
.
What will happen with the CI after branching?
At the moment of branching, hopefully nothing. I will config Jenkins so that it ignore new branches, so new builds should not be triggered because of this. I will actively monitor Jenkins to ensure this, and will cancel any excess jobs that happen because of branch creation.
After that, new commits added to ubports/focal
will be built & published to the Focal APT archive on repo.ubports.com as expected. However, new commits added to main
will fail to build with No distro is included in multidist. Maybe "main" shouldn't exist?
. This is expected, since our CI code isn't yet updated to support new branching scheme. Updating CI code is the next on my agenda.
What about focal_-_<extension>
branches? What do you mean by "explicit dependency declaration"?
Since the "branch extension" concept doesn't translate well into the new branching model, it was decided to drop this out of the specification. While the old ubports/focal_-_<extension>
will continue to work (grandfathered), do not expect this to be the case for future releases.
As for "explicit dependency declaration", the plan is to let you specify the dependent MRs in the MR description, and the CI will read that description and pull in that MR's APT archive. I will work on this as part of CI code work. Long term, I would prefer that we also get GitLab's MR dependencies, but GitLab is still figuring out how to expose that via API.
How will you create all the branches across all repositories?
The creation of the branches is automated using this Python script. It talks to GitLab API to fetch the current status of all repositories, then decides what branch to create (and from what branch). It then asks for confirmation, and when confirmed, create all the branches. The script is designed to be idempotent, and take into account that some repositories have ubports/focal
branch but not main
.
What will happen with the devel system-image channel?
At the moment, nothing. Since our devel channels are already prefixed, the 20.04/*/*/devel
channels will continue to receive Focal-based images, which subsequently will continue to be built from focal
APT archive.
I have not decided the new system-image channel to publish the noble-based images yet.