~~NOTOC~~ ====== Making a Release ====== * **[[#Version Numbering|Version Numbering]]** * **[[#Build the tarball|Build the tarball]]** * **[[#Tag release|Tag release]]** * **[[#Upload the tarball|Upload the tarball]]** * **[[#Post release|Post release]]** Before you start with this, make sure you understand the [[https://www.xfce.org/about/releasemodel|release model]] all developers should follow for core components. Note that xfce provides [[https://gitlab.xfce.org/xfce/xfce4-dev-tools/-/blob/master/helpers/xfce-do-release.in|xfce-do-release]], an automated release-script which guides you through all steps required to release a xfce component. That prevents mistakes and helps to get a clean build (by building in a container). It will catch all translation updates and pre-write a NEWS file for you by using the commit messages. Best use it over the manual release process when possible. Install 'xfce4-dev-tools' to make use of it ! ---- ===== Version Numbering ===== ==== Stable releases ==== Stable releases are created from the stable branch of the repository. So before you start make sure you are working in this branch. # get the stable branch git checkout --track -b xfce-4.14 remotes/origin/xfce-4.14 # pull the latest changes git pull --rebase Now make sure all the bug fixes are committed and pushed to the remote repository. You can check this at [[http://gitlab.xfce.org|gitlab.xfce.org]] as well. For the version number the //micro// version is increased by 1. So 4.12.2 becomes 4.12.3. ==== Development releases ==== Unstable releases are created from the master branch, which is in this period in feature-freeze. There we use an odd //minor// number. So the first development release is for example 4.15.0, then 4.15.1 etc. [[|Back to Top]] ---- ===== Build the tarball ===== If you are sure all the fixes are committed in the correct branch, its time to prepare the release. ==== Update NEWS, Release Notes, & Translations ==== As of Xfce version 4.15.0, [[https://gitlab.xfce.org/xfce/xfce4-dev-tools|xfce-dev-tools]] contains several Bash helper scripts to assist in building your release: * **[[https://gitlab.xfce.org/xfce/xfce4-dev-tools/-/blob/master/helpers/xfce-do-release|xfce-do-release]] ** - Main helper script. Checks versions, tags, commits and pushes changes, logs into and uploads to release manager. * **[[https://gitlab.xfce.org/xfce/xfce4-dev-tools/-/blob/master/helpers/xfce-get-release-notes|xfce-get-release-notes]] ** - Complementary to xfce-get-translations and gets all the commits that aren't translation updates. * **[[https://gitlab.xfce.org/xfce/xfce4-dev-tools/-/blob/master/helpers/xfce-get-translations|xfce-get-translations]] ** - Gets all language updates to a repository since a specified commit or tag. * **[[https://gitlab.xfce.org/xfce/xfce4-dev-tools/-/blob/master/helpers/xfce-update-news|xfce-update-news]] ** ==== Update version number ==== - Edit the configure script template configure.ac.in. - Set the package version (_version_major, _version_minor and _version_micro) to the version you want to release. - Remove git from _version_tag. - Check the build dependencies. ==== Compile the code ==== ./autogen.sh --enable-gtk-doc make distcheck If everything is ok //distcheck// will tell you the ''abc.x.y.z.tar.bz2'' tarball is ready. If not fix the error(s) and commit the changes before running //distcheck// again. [[|Back to Top]] ---- ===== Tag release ===== If the tarball is build successfully, it is time to tag the release in git. # make sure there are not pending changes git status # if not, commit them git commit -a -m "Updates for the x.y.z release." && git push # tag the release (annotated tag is required) git tag -a abc.x.y.z # send tag to remote git push --tags For more information read the [[https://git-scm.com/docs/git-tag|git tag manual]]. [[|Back to Top]] ---- ===== Upload the tarball ===== - Open [[https://releases.xfce.org/]] in your browser, log in with your Xfce HTTPS credentials. - Click on ''Release New Version'' link next to your project. - Follow the instructions presented to you by the release manager software to upload the abc.x.y.z.tar.bz2 tarball with the SHA1 checksum you can generate with ''sha1sum abc.x.y.z.tar.bz2'' in a terminal. * For the announcements, please only pick mailing lists that make sense. Everything should be announced on xfce-announce@xfce.org and xfce@xfce.org. * Please note that you MUST subscribe to the announce mailling list before doing a release. Your first release mail need to be moderated by a list admin. - Make a nice summary of the new features or just paste the contents of the ''NEWS'' file. [[|Back to Top]] ---- ===== Post release ===== - Add the ''git'' back to ?_version_tag() in the ''configure.am.in'' file, commit and push the change. - Possibly switch back to the ''master'' branch. - Celebrate 8-). [[|Back to Top]] ---- [[:contribute:dev:start:|Back to main Xfce Development Information page]]