Xfce Wiki

Sub domains
 

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
contribute:dev:make-a-release [2014/03/05 14:28] – created nickcontribute:dev:make-a-release [2026/08/21 00:52] (current) – grammar improvements kevinbowen
Line 1: Line 1:
 +~~NOTOC~~
 ====== Making a Release ====== ====== Making a Release ======
  
-Before you start with this, make sure you understand the [[http://www.xfce.org/about/releasemodel|release model]] all developers should follow for core components.+  * **[[#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 building a new release, make sure you understand the [[https://docs.xfce.org/contribute/dev/make-a-platform-release#making_a_platform_release|release model]] all developers should follow for core components. 
 + 
 +<note important>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 the steps required to release an Xfce component. 
 + 
 +This 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. It is best to use this over a manual release process whenever possible. 
 + 
 +Install 'xfce4-dev-tools' to make use of it !</note> 
 + 
 +----
  
 ===== Version Numbering ===== ===== Version Numbering =====
Line 7: Line 22:
 ==== Stable releases ==== ==== 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.+Stable releases are created from the stable branch of the repository. Before starting, make sure you are working in this branch.
  
-  # get the stable branch +<file bash> 
-  git checkout --track -b xfce-4.10 remotes/origin/xfce-4.10 +# get the stable branch 
-   +git checkout --track -b xfce-4.20 remotes/origin/xfce-4.20
-  # 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://git.xfce.org|git.xfce.org]] as well.+# pull the latest changes 
 +git pull --rebase 
 +</file>
  
-For the version number the //micro// version is increased by 1. So 4.10.2 becomes 4.10.3.+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.20.2 becomes 4.20.3.
  
 ==== Development releases ==== ==== 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.11.0, then 4.11.1 etc.+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.21.0, then 4.21.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 (<package>_version_major, <package>_version_minor and <package>_version_micro) to the version you want to release.   
 +  - Remove git from <package>_version_tag.   
 +  - Check the build dependencies.  
 + 
 +==== Compile the code ==== 
 + 
 +<file bash> 
 +./autogen.sh --enable-gtk-doc 
 +make distcheck 
 +</file> 
 + 
 +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. 
 + 
 +<file bash> 
 +# 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 
 +</file> 
 + 
 +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]]