Jump to: navigation, search

Difference between revisions of "Packaging/Ubuntu"

(Add implementation details about the trunk builds)
 
(11 intermediate revisions by 7 users not shown)
Line 1: Line 1:
__NOTOC__
 
Ubuntu is the reference platform for OpenStack. We follow the Ubuntu release cycle very closely, and do most of our QA on Ubuntu.
 
  
If you want to run OpenStack on Ubuntu, there are a few options, depending on your stability requirements and which version of Ubuntu you're running.
+
= Ubuntu packaging =
{| border="1" cellpadding="2" cellspacing="0"
 
|  Ubuntu version   
 
|  Only what is in Ubuntu                                   
 
|  Only stable releases       
 
|-
 
|  10.04 LTS (Lucid)
 
|  N/A                                                     
 
|  [[#Release_PPA|Release PPA]]
 
|-
 
|  10.10 (Maverick) 
 
|  Pre-Austin snapshot                                     
 
|  [[#Release_PPA|Release PPA]]
 
|-
 
|  11.04 (Natty)   
 
|  Cactus                                                   
 
|  [[#Release_PPA|Release PPA]]
 
|-
 
|  11.10 (Oneiric) 
 
|  Frequent snapshots.<<BR>>Diablo expected in final release
 
|  [[#Release_PPA|Release PPA]]
 
|}
 
  
= Trunk PPA =
+
OpenStack packages for Ubuntu are published in Ubuntu ''main'' repository and maintained by Ubuntu core developers.
A PPA<<[[FootNote]](Personal Package Archive: an extra apt repository you can add to your sources.list to get access to software not in Ubuntu.)>> where we will upload a new version for every single commit on trunk.
 
  
Information and instructions for use can be found on [https://launchpad.net/~nova-core/+archive/trunk Launchpad] for Nova, and similarly for [https://launchpad.net/~swift-core/+archive/trunk Swift] and [https://launchpad.net/~glance-core/+archive/trunk Glance]. Swift has documented the process for building and deploying custom Debian packages at http://swift.openstack.org/debian_package_guide.html.
+
See [http://www.ubuntu.com/download/cloud/install-ubuntu-cloud Installing Ubuntu Cloud] for official Ubuntu documentation on how to install OpenStack from packages.
  
== How does it actually work? ==
+
== Cloud Archive ==
  
It's accomplished by a series of Jenkins jobs:
+
Canonical’s Ubuntu Cloud archive allows users the ability to install newer releases of [[OpenStack]] on Ubuntu Server 12.04 LTS (and the dependencies) as they become available up through the next Ubuntu LTS release (presumably 14.04).
  
=== nova-tarmac ===
+
See https://wiki.ubuntu.com/ServerTeam/CloudArchive for more details.
When a branch is approved for merging, tarmac  merges it (and runs the tests and whatnot) and pushes the changes to trunk.
 
  
=== nova ===
+
Report any bugs that you find in packages from the Cloud Archive to https://bugs.launchpad.net/cloud-archive/+filebug
  
The 'nova' job polls the trunk for changes. When it sees changes, it does some stuff (that isn't relevant here) and eventually triggers the nova-tarball job.
+
In terms of communication around the Cloud Archive, general announcements about milestone and release availability will be made on
 +
ubuntu-cloud-anounce@lists.ubuntu.com: https://lists.ubuntu.com/mailman/listinfo/ubuntu-cloud-announce
  
=== nova-tarball ===
+
Canonical has also set-up a new mailing list which will be higher volume, per upload notifications as new and updated packages land in the Cloud Archive: https://lists.ubuntu.com/mailman/listinfo/cloud-archive-changes
  
Using "python setup.py sdist", a tarball is built. It gets renamed to:
+
== Package pages ==
  
nova-X~bzrY.tar.gz
+
* https://launchpad.net/ubuntu/+source/ceilometer
 +
* https://launchpad.net/ubuntu/+source/python-ceilometerclient
 +
* https://launchpad.net/ubuntu/+source/cinder
 +
* https://launchpad.net/ubuntu/+source/python-cinderclient
 +
* https://launchpad.net/ubuntu/+source/glance
 +
* https://launchpad.net/ubuntu/+source/python-glanceclient
 +
* https://launchpad.net/ubuntu/+source/heat
 +
* https://launchpad.net/ubuntu/+source/python-heatclient
 +
* https://launchpad.net/ubuntu/+source/horizon
 +
* https://launchpad.net/ubuntu/+source/keystone
 +
* https://launchpad.net/ubuntu/+source/python-keystoneclient
 +
* https://launchpad.net/ubuntu/+source/neutron
 +
* https://launchpad.net/ubuntu/+source/python-neutronclient
 +
* https://launchpad.net/ubuntu/+source/nova
 +
* https://launchpad.net/ubuntu/+source/python-novaclient
 +
* https://launchpad.net/ubuntu/+source/swift
 +
* https://launchpad.net/ubuntu/+source/python-swiftclient
  
..where X is the version from setup.py and Y is the bzr revision number the tarball is based on.
+
== Packaging branches ==
  
There are a couple of reasons why we use tarballs as the basis for packaging:
+
Packaging branches are maintained in bzr under Launchpad. Click on "Code" on the above pages.
  
* It ensures that everything one needs for running Nova in the tarball. If it gets lost between version control and the tarball (because something is missing in the MANIFEST or whatnot), we'll notice when we're testing from packages. We would never notice if everyone ran directly from a source checkout.
+
== Packaging bugs ==
* The best way to ensure a smooth release is to have tried it a million times before and have automated everything. Packages for final releases are always based on the release tarballs, so it's best to do the same for development snapshots as well.
 
  
=== nova-ppa ===
+
Packaging bugs are tracked using Launchpad. Click on "Bugs" on the above pages.
  
This is a matrix job, run for the 4 relevant ubuntu series: Lucid, Maverick, Natty, and Oneiric.
+
== PPAs ==
  
For each of these series, it
+
Various PPAs with bleeding edge packages are maintained by the [https://launchpad.net/~openstack-ubuntu-testing OpenStack Ubuntu Testers] team. See [[PPAs]] for details. The Jenkins server can be found at https://jenkins.qa.ubuntu.com/view/Openstack_Testing
  
# grabs the most recently built tarball from the nova-tarball job,
+
== Cloud Archive Source Packages ==
# unpacks it,
 
# derives the "upstream" version of the package based on the filename of the tarball,
 
# grabs the packaging trunk code at ''lp:~openstack-ubuntu-packagers/nova/ubuntu'',
 
# applies it on top of the unpacked source,
 
# generates the package version based on the "upstream" version + the target ubuntu series,
 
# generates a changelog entry with this version in it (including the revision number of the packaging branch in the body of the changelog entry),
 
# runs "dpkg-buildpackage -rfakeroot -S" to build the source package,
 
# signs it,
 
# uploads it to Launchpad.
 
  
= Release PPA =
 
Information and instructions for use can be found on [https://launchpad.net/~nova-core/+archive/release Launchpad] for Nova, and similarly for [https://launchpad.net/~swift-core/+archive/release Swift] and [https://launchpad.net/~glance-core/+archive/release Glance]..
 
  
A PPA<<[[FootNote]](Personal Package Archive: an extra apt repository you can add to your sources.list to get access to software not in Ubuntu.)>> where we will upload only final releases.
+
The cloud-archive repository is actually just a backport of an
 +
associated Ubuntu release, so the primary source is actually in
 +
Ubuntu.  The source package branches are all owned by the
 +
ubuntu-server-dev team - for example if you wanted to checkout the
 +
Nova package for Juno, which was released alongside Ubuntu 14.10:
  
= Generating packages manually =
+
    bzr branch lp:~ubuntu-server-dev/nova/juno nova-juno
  
== Prerequisites ==
+
or for kilo:
You'll need to install some packages on the build machine. Some of them are in the [https://launchpad.net/~nova-core/+archive/trunk nova-core trunk PPA], so add it as a repository:
 
  
 +
    bzr branch lp:~ubuntu-server-dev/nova/kilo nova-kilo
  
<pre><nowiki>
+
you can then build a source package by using:
sudo add-apt-repository ppa:nova-core/trunk
 
sudo apt-get update
 
</nowiki></pre>
 
  
 +
    bzr bd -S
  
To grab all the build dependencies of nova:
+
(that's part of the bzr-builddeb plugin).
  
 +
These branches are where the Ubuntu Server team drives all of its
 +
packaging efforts from including our branch package builds - so you
 +
may find some unreleased changes from time-to-time.
  
<pre><nowiki>
+
Hopefully that gives you a good pointer - there are more details at
sudo apt-get build-dep nova
+
https://wiki.ubuntu.com/ServerTeam/OpenStack - if you have a change that is useful, please just proposed your
</nowiki></pre>
+
changes back against those branches:
  
 +
    bzr push lp:~mylpid/nova/my-great-update
 +
    bzr lp-propose
  
You'll need Sphinx 1.0 or greater for doing the build or the documentation generation will fail and the build will abort. You can check what version of Sphinx is being used by your version of Python by doing:
+
This will generate a merge proposal on launchpad that the team will review.
 
 
 
 
<pre><nowiki>
 
python -c "import sphinx; print sphinx.__version__"
 
</nowiki></pre>
 
 
 
 
 
Finally, you'll need the following packages on your system to be able to generate the packages:
 
 
 
<pre><nowiki>
 
sudo apt-get install dpkg-dev quilt debhelper
 
</nowiki></pre>
 
 
 
 
 
== Generating binary packages ==
 
Combine the main nova code with the packaging scripts:
 
 
 
 
 
<pre><nowiki>
 
bzr export nova lp:nova
 
bzr export nova-packaging lp:~openstack-ubuntu-packagers/nova/ubuntu
 
mv nova-packaging/debian nova
 
</nowiki></pre>
 
 
 
Edit the changelog entry. The following commands will specify a Lucid package with version "2011.1-0ubuntu2-local1" and a changelog entry "Local build for internal testing"
 
 
 
 
 
<pre><nowiki>
 
cd nova
 
dch -v 2011.1-0ubuntu2-local1 -D lucid "Local build for internal testing"
 
</nowiki></pre>
 
 
 
 
 
If you're building for Lucid, you need to issue the following command to apply the debian/patches/nova-manage_flagfile_location.patch patch file before building the packages.
 
 
 
 
 
<pre><nowiki>
 
QUILT_PATCHES=debian/patches quilt push -a
 
</nowiki></pre>
 
 
 
 
 
Generate the packages:
 
 
 
 
 
<pre><nowiki>
 
./builddeb.sh
 
</nowiki></pre>
 
 
 
The packages will appear in the parent of the nova directory.
 
 
 
== Uploading custom packages to PPA ==
 
 
 
Create a PPA with the following PPA dependencies:
 
* nova-core/build-depends
 
* nova-core/release
 
 
 
Then issue the following commands from the root of your nova directory.
 
 
 
 
 
<pre><nowiki>
 
GPGKEY=... # Your registered OpenGPG key
 
LPNAME=... # Your Launchpad username
 
DIST="lucid" # The Ubuntu distribution you are targetting
 
VERSTRING="2011.3-my-custom-build-0ubuntu1" # Custom version string here
 
dch  -v "$VERSTRING" -D $DIST "Your changelog comment here"
 
 
 
# If building for Lucid, apply the patch manually, otherwise skip this step
 
QUILT_PATCHES=debian/patches quilt push -a
 
 
 
dpkg-buildpackage -S -sa -rfakeroot -tc -D -k$GPGKEY
 
cd ..
 
# Upload the packages
 
dput ppa:${LPNAME}/ppa nova_${VERSTRING}_source.changes
 
</nowiki></pre>
 

Latest revision as of 04:23, 10 February 2015

Ubuntu packaging

OpenStack packages for Ubuntu are published in Ubuntu main repository and maintained by Ubuntu core developers.

See Installing Ubuntu Cloud for official Ubuntu documentation on how to install OpenStack from packages.

Cloud Archive

Canonical’s Ubuntu Cloud archive allows users the ability to install newer releases of OpenStack on Ubuntu Server 12.04 LTS (and the dependencies) as they become available up through the next Ubuntu LTS release (presumably 14.04).

See https://wiki.ubuntu.com/ServerTeam/CloudArchive for more details.

Report any bugs that you find in packages from the Cloud Archive to https://bugs.launchpad.net/cloud-archive/+filebug

In terms of communication around the Cloud Archive, general announcements about milestone and release availability will be made on ubuntu-cloud-anounce@lists.ubuntu.com: https://lists.ubuntu.com/mailman/listinfo/ubuntu-cloud-announce

Canonical has also set-up a new mailing list which will be higher volume, per upload notifications as new and updated packages land in the Cloud Archive: https://lists.ubuntu.com/mailman/listinfo/cloud-archive-changes

Package pages

Packaging branches

Packaging branches are maintained in bzr under Launchpad. Click on "Code" on the above pages.

Packaging bugs

Packaging bugs are tracked using Launchpad. Click on "Bugs" on the above pages.

PPAs

Various PPAs with bleeding edge packages are maintained by the OpenStack Ubuntu Testers team. See PPAs for details. The Jenkins server can be found at https://jenkins.qa.ubuntu.com/view/Openstack_Testing

Cloud Archive Source Packages

The cloud-archive repository is actually just a backport of an associated Ubuntu release, so the primary source is actually in Ubuntu. The source package branches are all owned by the ubuntu-server-dev team - for example if you wanted to checkout the Nova package for Juno, which was released alongside Ubuntu 14.10:

   bzr branch lp:~ubuntu-server-dev/nova/juno nova-juno

or for kilo:

   bzr branch lp:~ubuntu-server-dev/nova/kilo nova-kilo

you can then build a source package by using:

   bzr bd -S

(that's part of the bzr-builddeb plugin).

These branches are where the Ubuntu Server team drives all of its packaging efforts from including our branch package builds - so you may find some unreleased changes from time-to-time.

Hopefully that gives you a good pointer - there are more details at https://wiki.ubuntu.com/ServerTeam/OpenStack - if you have a change that is useful, please just proposed your changes back against those branches:

   bzr push lp:~mylpid/nova/my-great-update
   bzr lp-propose

This will generate a merge proposal on launchpad that the team will review.