summaryrefslogtreecommitdiffstats
path: root/doc/dev/release-process.rst
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--doc/dev/release-process.rst173
1 files changed, 173 insertions, 0 deletions
diff --git a/doc/dev/release-process.rst b/doc/dev/release-process.rst
new file mode 100644
index 00000000..f7e853b1
--- /dev/null
+++ b/doc/dev/release-process.rst
@@ -0,0 +1,173 @@
+======================
+ Ceph Release Process
+======================
+
+1. Build environment
+====================
+
+There are multiple build environments, debian based packages are built via pbuilder for multiple distributions. The build hosts are listed in the ``deb_hosts`` file, and the list of distributions are in ``deb_dist``. All distributions are build on each of the build hosts. Currently there is 1 64 bit and 1 32 bit build host.
+
+The RPM based packages are built natively, so one distribution per build host. The list of hosts is found in ``rpm_hosts``.
+
+Prior to building, it's necessary to update the pbuilder seed tarballs::
+
+ ./update_all_pbuilders.sh
+
+2. Setup keyring for signing packages
+=====================================
+
+::
+
+ export GNUPGHOME=<path to keyring dir>
+
+ # verify it's accessible
+ gpg --list-keys
+
+The release key should be present::
+
+ pub 4096R/17ED316D 2012-05-20
+ uid Ceph Release Key <sage@newdream.net>
+
+
+3. Set up build area
+====================
+
+Clone the ceph and ceph-build source trees::
+
+ git clone http://github.com/ceph/ceph.git
+ git clone http://github.com/ceph/ceph-build.git
+
+In the ceph source directory, checkout next branch (for point releases use the {codename} branch)::
+
+ git checkout next
+
+Checkout the submodules::
+
+ git submodule update --force --init --recursive
+
+4. Update Build version numbers
+================================
+
+Substitute the ceph release number where indicated below by the string ``0.xx``.
+
+Edit configure.ac and update the version number. Example diff::
+
+ -AC_INIT([ceph], [0.54], [ceph-devel@vger.kernel.org])
+ +AC_INIT([ceph], [0.55], [ceph-devel@vger.kernel.org])
+
+Update the version number in the debian change log::
+
+ DEBEMAIL user@host dch -v 0.xx-1
+
+Commit the changes::
+
+ git commit -a
+
+Tag the release::
+
+ ../ceph-build/tag-release v0.xx
+
+
+5. Create Makefiles
+===================
+
+The actual configure options used to build packages are in the
+``ceph.spec.in`` and ``debian/rules`` files. At this point we just
+need to create a Makefile.::
+
+ ./do_autogen.sh
+
+
+6. Run the release scripts
+==========================
+
+This creates tarballs and copies them, with other needed files to
+the build hosts listed in deb_hosts and rpm_hosts, runs a local build
+script, then rsyncs the results back to the specified release directory.::
+
+ ../ceph-build/do_release.sh /tmp/release
+
+
+7. Create RPM Repo
+==================
+
+Copy the rpms to the destination repo::
+
+ mkdir /tmp/rpm-repo
+ ../ceph-build/push_to_rpm_repo.sh /tmp/release /tmp/rpm-repo 0.xx
+
+Next add any additional rpms to the repo that are needed such as leveldb and
+and ceph-deploy. See RPM Backports section
+
+Finally, sign the rpms and build the repo indexes::
+
+ ../ceph-build/sign_and_index_rpm_repo.sh /tmp/release /tmp/rpm-repo 0.xx
+
+
+8. Create Debian repo
+=====================
+
+The key-id used below is the id of the ceph release key from step 2::
+
+ mkdir /tmp/debian-repo
+ ../ceph-build/gen_reprepro_conf.sh /tmp/debian-repo key-id
+ ../ceph-build/push_to_deb_repo.sh /tmp/release /tmp/debian-repo 0.xx main
+
+
+Next add any addition debian packages that are needed such as leveldb and
+ceph-deploy. See the Debian Backports section below.
+
+Debian packages are signed when added to the repo, so no further action is
+needed.
+
+
+9. Push repos to ceph.org
+==========================
+
+For a development release::
+
+ rcp ceph-0.xx.tar.bz2 ceph-0.xx.tar.gz \
+ ceph_site@ceph.com:ceph.com/downloads/.
+ rsync -av /tmp/rpm-repo/0.xx/ ceph_site@ceph.com:ceph.com/rpm-testing
+ rsync -av /tmp/debian-repo/ ceph_site@ceph.com:ceph.com/debian-testing
+
+For a stable release, replace {CODENAME} with the release codename (e.g., ``argonaut`` or ``bobtail``)::
+
+ rcp ceph-0.xx.tar.bz2 \
+ ceph_site@ceph.com:ceph.com/downloads/ceph-0.xx.tar.bz2
+ rcp ceph-0.xx.tar.gz \
+ ceph_site@ceph.com:ceph.com/downloads/ceph-0.xx.tar.gz
+ rsync -av /tmp/rpm-repo/0.xx/ ceph_site@ceph.com:ceph.com/rpm-{CODENAME}
+ rsync -auv /tmp/debian-repo/ ceph_site@ceph.com:ceph.com/debian-{CODENAME}
+
+10. Update Git
+==============
+
+Point release
+-------------
+
+For point releases just push the version number update to the
+branch and the new tag::
+
+ git push origin {codename}
+ git push origin v0.xx
+
+Development and Stable releases
+-------------------------------
+
+For a development release, update tags for ``ceph.git``::
+
+ git push origin v0.xx
+ git push origin HEAD:last
+ git checkout master
+ git merge next
+ git push origin master
+ git push origin HEAD:next
+
+Similarly, for a development release, for both ``teuthology.git`` and ``ceph-qa-suite.git``::
+
+ git checkout master
+ git reset --hard origin/master
+ git branch -f last origin/next
+ git push -f origin last
+ git push -f origin master:next