Moving to a new release

This page is part of the daily release process documentation

What are we going to do when we start branching upstream for an older release as they want to develop new features on trunk?

100 feet view

The goal is to have in the end both "trunk", pointing the new features branches, and a maintenance series branch for the actively maintained series (like raring here). Head is pointing "trunk" and raring the 13.04/raring branches. For that, we will go through increasing steps over time:

Step one: release+1 is not opened yet

Example: s<…> is not opened yet, so we need to build raring and branches for s on raring. Only the real "raring" branches should land to distro.

Do a batch change (one time)

We do ensure that we have a raring series along head like here. "head" will become then s<…> for all stacks as soon the branches will be moved to the new repository.

Copying head to the maintenance release

In the stack configuration:

The result can be seen here.

The result can be seen here.

Disabling head jobs

The result can be seen here.

Preparing the ppa configuration and setting the new series version

So, until release+1 is opened, we need to land the new features in trunk in a ppa. We can't use the same daily-build ppa because we would build both "raring" and "head" here on the "raring" series until s is opened. Let's do the needed changes for that.

We are using the daily-build-next ppa (equivalent for daily-build ppa used for daily releases to distro) and the next ppa, equivalent to the distro. We need first to target the right ppas.

Copying autopilot results from head to raring

Deploying those changes

-> you will still see the project jenkins jobs for the "head" release of jenkins. Do not fear that, they are not removed, but just "disconnected" from head.

Creating the new "raring" view

- cu2d
    - All
    - experimental
       - 100scopes
    - head
       - friends
       - indicators
       - oif
       - ...
    - raring
       - friends
       - indicators
       - oif
       - ...

    - ...

Diverging "trunk" and a "maintenance" branch

This of course applies only once upstream wants to separate their branches between "trunk" and "maintenance" (so as soon as you have one target_branch in your stack). Remember that we disabled all projects in all stacks in the head release as part of the batch change (first paragraph).

The changes needs to be applied in both the "maintenance" release and "head" to have the new maintenance branch daily releasing to distro and trunk landing as part of head in the next ppa.

New branch for the project

Upstream needs to setup a new maintenance branch for the project. It will be useful to check that they change the Vcs-Bzr property in debian/control as well to point to the new maintenance branch.

Changes in the maintenance release stack configuration

Here is an example of moving the indicators stack from head to its own "raring".

What we can notice is:

Changes in the "head" stack configuration

Ensure upstream merger is setup on the new branches

Ping the QA team for upstream merger to ensure they deploy the change you have just done in cupstream2distro-config in both head and raring for your stack.

Deploy both stacks you modified

Finally, as always when you change anything in a stack, think about redeploying the stack you just modified.

Final Freeze of a release

Note that's a good time to finish diverging the old and new stack if you didn't yet. Please keep upstream posted and ensure they are on board with those.

For any stacks in the new maintenance release, add manualpublish: True as shown here and connect to desktop-team@<jenkins-machine>. Then cd cupstream2distro-config && bzr pull.

FIXME: this should rather be: redeploy the stack you just modified in the future (but not yet)

From now on, the stacks in the release maintenance will be daily pushed and tested from the ppa. So we'll get the health everyday of the maintenance branches. However, the publication will be manual, on your responsability, to distro.

Step two: once release+1 is opened

First setup on the jenkins server

Then, for each stack

Here is a simple example.

Also, you need to ensure that trunk is synced with latest packages in release (as they are copied over automatically from release to release+1 at the start of the stack). You will see otherwise the prepare job being yellow, showing that some components are not up to date. For that, you mostly have to:

  1. branch trunk
  2. branch release-1
  3. merge release-1 to trunk
  4. add an entry changelog (manual bootstrap commit) telling which revision was the divergence from, to ensure we don't miss any commit. Indeed, the latest message revision from the merge from release-1 to trunk may not exist.

DailyRelease/MovingNewRelease (last edited 2013-10-24 07:25:40 by jibel)