User Tools

Site Tools


======== How to make a new release? ======== This page is work in progress. It gathers all the operations that should be done when making a new release of the ROHC library. The following steps make the assumption that the developer wants to release version X.Y.Z of the library. ===== Preparation ===== ==== Make sure all bugs affected to the milestone X.Y.Z are fixed ==== Go to <nowiki></nowiki>. Check the section that lists all the bugs affected to the milestone. The bugs should all be in state 'Fix committed'. If not, the release is not ready :-( ==== Check sources ==== Download the repository that contains the source code of the new release:<code> $ git clone --depth 10 (type password) $ cd rohc $ git co X.Y.x # for a maintenance release # git co master # for a major release</code> Build the sources:<code> $ ./ $ make clean $ make -j10 all $ make -j10 check $ make -j10 distcheck $ make qa $ ./test/non_regression/other_inputs/ all</code> No error should occur. Check other configure options too! Additional checks: * check the [[|buildbot statuses]]. * check the [[|report of the Clang static analyzer]]. * check the [[|Travis-CI statuses]]. * check the [[|Coverity Scan status]]. * check the man pages. * dry-run the build the Debian DEB package. * dry-run the build the CentOS 6.x RPM package. * dry-run the build the Gentoo ebuild package. ==== Prepare source code for the release ==== Update the ChangeLog file with the following format:<code> dd Mon YYYY - release X.Y.Z TODO: put changelog format here</code> The following command may help generating the changelog:<code> $ git log rohc-X.Y.(Z-1).. </code> Commit the changes:<code> $ git add ChangeLog $ git ci -m "Update ChangeLog for release X.Y.Z."</code> ===== Tag the release ===== ==== Tag source code for the release ==== <code>git tag -a -m 'Release X.Y.Z' -s -u 1B2BB9C1 rohc-X.Y.Z</code> ==== Prepare branch to the next release ==== The release is marked by a tag, so we can put the next version number in<code> - AC_INIT(rohc, X.Y.Z, + AC_INIT(rohc, X.Y.(Z+1),</code> Then, commit the changes:<code> $ git add $ git ci -m "Prepare for next X.Y.(Z+1) release."</code> ==== Make source changes public ==== All changes were done locally, so we have to push them to the public branch hosted on GitHub:<code> $ git push (type password)</code> ==== Create source tarballs ==== Export tag sources:<code> $ git archive --format=tar --prefix=rohc-X.Y.Z/ --output=rohc-X.Y.Z.tar rohc-X.Y.Z</code> Prepare dist archive:<code> $ tar -xvf rohc-X.Y.Z.tar $ rm -f rohc-X.Y.Z.tar $ cd rohc-X.Y.Z/ $ ./ && make clean && make -j10 distcheck # make dist should be enough, but better be safe... $ mv rohc-X.Y.Z.tar.bz2 .. $ cd .. && rm -rf rohc-X.Y.Z/ </code> Re-compress sources:<code> $ bunzip2 rohc-X.Y.Z.tar.bz2 $ xz -9 rohc-X.Y.Z.tar </code> Create checksums:<code> $ sha256sum rohc-X.Y.Z.tar.xz > rohc-X.Y.Z.tar.xz.sha256 $ sha256sum -c rohc-X.Y.Z.tar.xz.sha256 </code> Create GPG signatures:<code> $ gpg --armor --sign --detach-sig rohc-X.Y.Z.tar.xz $ gpg --verify rohc-X.Y.Z.tar.xz.asc </code> ===== Publish ===== ==== Mark bugs as 'Fix Released' ==== Go to <nowiki></nowiki> and change the status of all bugs listed on the page to 'Fix Released' for the branch X.Y.x. ==== Create a release from the milestone in Launchpad ==== Go to <nowiki></nowiki>. Follow the 'Create release' link and fulfill the form as follow: * Keep the X.Y.Z milestone active: keep the checkbox unchecked. * Date released: put the current date. * Release notes: short description of the release, for example:<code>The X.Y.Z release fixes N bugs found in release X.Y.Z-1 and is compatible with all releases X.Y.x.</code> * Changelog: copy/paste the changelog written before. ==== Upload release files ==== * Upload release files: * Go to <nowiki></nowiki>. Follow the 'Add download file' link for the file created before. * Upload the checksums and the API documentation on website. * Update the [[|documentation]] page of the website, * Update the [[library-api|documentation]] page of the wiki, * Update the [[|download]] pages of the website. * Update the [[|man pages]] of the website. * Update documentation: * Update the [[|release numering]] on the wiki. * Update the [[library-compliance-rfcs|list of features]] on the wiki. * Update the [[|list of features]] on the website. * Update the [[library-todo|TODO list]] on the wiki. * Update the [[ideas-list|ideas list]] on the wiki. * Update the [[library-migration|migration instructions]] on the wiki. * Update the [[library-first-application|beginner's tutorial]] on the wiki. * Update the [[|getting started tutorial]] on the website. * Update the [[|FAQ]] on the website. * Update the [[|project's DOAP file]]. * Update packages for Debian, Gentoo, and Arch Linux. ===== Advertisement ===== ==== Advertise that a new release is available ==== * Publish a [[|new announcement]] on Launchpad / website * Send an email to the ROHC mailing list ([[|example]]) * Advertise the new release on all [[library-references|web sites that reference the project]] * Make press release ( ...)

library-create-release.txt · Last modified: 2016/08/27 17:42 by didier