~~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]]