diff options
Diffstat (limited to '')
-rw-r--r-- | doc/dev/release-process.rst | 173 |
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 |