release.md 4.33 KB
Newer Older
Alexandru Băluț's avatar
Alexandru Băluț committed
1 2
# How to make a release

3 4 5 6 7
Ideally these instructions are in line with the [GNOME releasing process](https://live.gnome.org/MaintainersCorner/Releasing).

We make two types of releases:
- regular releases, when we have new features or improvements, and
- "smaller" bug-fix releases, when a regular relese needs patching.
Alexandru Băluț's avatar
Alexandru Băluț committed
8 9

The regular releases have the version number X.YY, and the bug-fix
10
releases have the version number X.YY.Z, where Z is hopefully a relatively small
Alexandru Băluț's avatar
Alexandru Băluț committed
11 12 13 14
number (1, 2, 3...).

Most of the steps below should be done in the [development environment](HACKING.md): `$ source bin/pitivi-env` -> `(ptv-flatpak) $`

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
1. Check [Phabricator](https://phabricator.freedesktop.org/tag/pitivi/)
    * Make sure there is no open 'blocker' task against the current milestone.
    * Move the other open tasks somewhere else, for example to the next milestone.
    * Archive the current milestone. Open the milestone's workboard, click Manage, then Archive Project.

2. Make sure we depend on the latest GStreamer. This should be done as soon as GStreamer makes a release.
    * Find the latest tag in https://cgit.freedesktop.org/gstreamer/gstreamer/
    * See our current requirement for Gst at the bottom in [check.py](../pitivi/check.py)
    * If they are different, update the files which contain the old version, for example: `$ git grep "1\.8\.2"` and `$ git commit -a -m "Use GStreamer <gstreamer-version>"`

3. Check your local repository:
    * Make sure your sandbox is using the latest GStreamer release: `$ ptvenv --update --gst-version=<gst-version>`
    * Check `$ git status` does not show any change

4. Make sure the tests pass:
   ```
   $ ninja -C mesonbuild/ test
   ```
33
 <!-- * `$ make validate` FIXME! -->
Alexandru Băluț's avatar
Alexandru Băluț committed
34

35 36
5. Update the following files:
    * [meson.build](../meson.build):
37 38
If doing a bugfix release, add or increase the micro.
If doing a regular release, bump YY up and remove the micro from
Alexandru Băluț's avatar
Alexandru Băluț committed
39 40
the version number, for example: 0.97.1 -> 0.98. Normally this is the
same as the name of the Phabricator milestone you just archived.
41
     * [RELEASE](../RELEASE):
Alexandru Băluț's avatar
Alexandru Băluț committed
42 43 44
Update the short version of the release notes.
To get the list of contributors: `$ git shortlog -s -n <previous-tag>..`
To get the list of translators: `$ for i in po/*.po help/*; do echo $i; git shortlog -s <previous-tag>.. $i; done`
45
     * [NEWS](../NEWS):
Alexandru Băluț's avatar
Alexandru Băluț committed
46
A shorter version of RELEASE, with the exec summary of changes.
47
     * [AUTHORS](../AUTHORS):
Alexandru Băluț's avatar
Alexandru Băluț committed
48 49
If there are new maintainers.

50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
6. Commit the changes: `$ git commit -a -m "Release <version-number>"`

7. Create the distribution archive:
   ```
   $ ninja -C mesonbuild/ dist
   $ ls -l mesonbuild/meson-dist/*.tar.*
   ```
   Install it on a real system and give it a spin. For example on Archlinux:
   ```
   $ cd /tmp
   $ asp checkout pitivi
   $ cd /tmp/pitivi/repos/community-x86_64/
   $ cp .../pitivi-X.YY.Z.tar.xz .
   $ vim PKGBUILD
   ... Update "pkgver",
   ... Make sure "source" ends in .tar.xz
   ... Update "sha256sums"
   $ makepkg
   $ makepkg -i
   $ pitivi
   ```

8. Create a tag and push it to the official repository. The TAG must always include the micro. This means when doing a regular release with version number X.YY, the TAG is X.YY.0. When doing a bug-fix release, the version number already includes a micro, so it's all fine.
73 74 75 76
   ```
   $ git tag -a <TAG> -m "Release <version-number>"
   $ git push origin <TAG>
   ```
77
   We use tag X.YY.0 instead of X.YY because we want to have the option of later creating the X.YY branch to the official repository, since it's not possible to have both a tag and a branch with the same name. This branch would gather backported fixes and be used for doing future X.YY.Z bug-fix releases.
Alexandru Băluț's avatar
Alexandru Băluț committed
78

79 80 81 82 83 84
9. Publish the archive on Gnome:
   ```
   $ scp mesonbuild/meson-dist/pitivi-X.YY.Z.tar.xz GNOME-USER@master.gnome.org:
   $ ssh GNOME-USER@master.gnome.org -t ftpadmin install pitivi-X.YY.Z.tar.xz
   ```
   The tarball will appear on https://download.gnome.org/sources/pitivi/X.YY/pitivi-X.YY.Z.tar.xz
Alexandru Băluț's avatar
Alexandru Băluț committed
85

86 87 88
10. Send out an announcement mail to:
    * gstreamer-devel@lists.freedesktop.org
    * gnome-i18n@gnome.org (thanking translators)
Alexandru Băluț's avatar
Alexandru Băluț committed
89

90
11. On pitivi.org, update "releases.txt" for the app's update notification feature
Alexandru Băluț's avatar
Alexandru Băluț committed
91

92
12. Bump the Z in the version number in [meson.build](../meson.build), for example if it was a regular release: 0.98 -> 0.98.1 or if it was a bug-fix release: 0.97.1 -> 0.97.2, and `$ commit -a -m "Back to development"`