7 Releasing a new version of Clementine
John Maguire edited this page 2020-04-11 22:21:13 +01:00

Introduction

These instructions are intended for Clementine developers who want to release a new version to the public. If you just want to build Clementine from source, look at the CompilingFromSource page.

Release candidate

It's usually best to make a release candidate about 1 week before the final release.

  • Update the Changelog file by looking at the git log from the time of the last release. Make sure you don't include commits that were made in master during the last release cycle and cherry-picked into a release.

  • Bump the version number. Edit the cmake/Version.cmake file and:

    • Change the CLEMENTINE_VERSION_MAJOR and CLEMENTINE_VERSION_MINOR variables to match the version number.
    • Uncomment CLEMENTINE_VERSION_PRERELEASE.

    For example:

      # Version numbers.
      set(CLEMENTINE_VERSION_MAJOR 1)
      set(CLEMENTINE_VERSION_MINOR 1)
      set(CLEMENTINE_VERSION_PATCH 0)
      set(CLEMENTINE_VERSION_PRERELEASE rc1)
    

    Commit this change.

  • Tag the release, e.g., git tag 1.1.0-rc1 -a 'Clementine 1.1.0 RC1'

  • Push the tag git push origin 1.1.0-rc1

  • Wait for binaries to be built by CircleCI and pushed as a Github release.

  • Send an email to the mailing list to announce the release candidate. You should include a short summary of the major features and link readers to the full changelog and the downloads page. For example: https://groups.google.com/forum/?fromgroups=#!topic/clementine-player/3jPLPYKVuAU

  • Change the topic in the IRC channel to announce the release candidate and link to the downloads page. For example:

      Clementine 1.1 Release Candidate out | http://code.google.com/p/clementine-player/downloads/list
    

During the release candidate phase

  • If any major bugs are found (or you have a new idea for nyanalyzer cat), make commits to master and then tag a new release.

Final release

  • At the end of the release candidate phase you should update the Changelog file with any changes that were done.

  • Bump the version number. Edit the cmake/Version.cmake file and:

    • Comment out CLEMENTINE_VERSION_PRERELEASE.

    For example:

      # Version numbers.
      set(CLEMENTINE_VERSION_MAJOR 1)
      set(CLEMENTINE_VERSION_MINOR 1)
      set(CLEMENTINE_VERSION_PATCH 0)
      # set(CLEMENTINE_VERSION_PRERELEASE rc1)
    

    Commit this change to master.

  • Tag (e.g, 1.4.1) and push as before.

  • Let the binaries build and push like before.

  • While everything is building you can take 4 screenshots that demonstrate some of the new features in the new release. I try to make sure we have screenshots of each platform (Windows, OS X and Linux). Once you've taken 4 screenshots:

    • Make sure you've checked out the appengine repository (instructions) and installed the appengine SDK for Python.

    • Put the full-sized screenshots in the clementine-player.appengine/www.clementine-player.org/static/screenshots directory. Follow the naming convention of all the other files in there.

    • Make thumbnails of each screenshot:

        cd ../thumbnails
        ./makethumbnail.sh ../screenshots/clementine-1.1-1.png
        ./makethumbnail.sh ../screenshots/clementine-1.1-2.png
        ./makethumbnail.sh ../screenshots/clementine-1.1-3.png
        ./makethumbnail.sh ../screenshots/clementine-1.1-4.png
      
    • These images are stored in the appengine repository so we have them somewhere in version control, but they aren't actually served from appengine because we'd soon hit the bandwidth quota. You have to rsync them to images.clementine-player.org, which is hosted on Zaphod:

        rsync -rav thumbnails screenshots zaphod:/var/www/clementine-player.org/images/
      

      Verify that your images show up by looking in http://images.clementine-player.org/screenshots/

    • Either commit these screenshots to the appengine repository now or do the next step first and commit everything in one go.

  • Update the www.clementine-player.org/data.py file in the appengine repository with information about the new release:

    • Update the LATEST_VERSION constant.

    • Add a new dictionary to the SCREENSHOTS array.

    • If we've added a new Ubuntu or Fedora type, add it to DISPLAY_OS, SHORT_DISPLAY_OS and OS_LOGOS.

    • Write a short paragraph describing the new stuff in the release and add it to the end of NEWS. Be sure to take today's timestamp by running:

        python -c "import time; print int(time.time())"
      
    • Update the list of features at the top of main.html in the same directory with any cool new features in this release.

    • Run make in the www.clementine-player.org directory to update the language files.

    • Check the site looks ok by running the appengine dev-appserver:

        dev_appserver.py .
      

    And then going to http://localhost:8080/ in a web browser.

    • If everything looks good commit these changes to the Website repository and push to master.
  • Sign the release for Sparkle

      sign_update.rb clementine-1.1.dmg sparkle_priv.pem
    
  • Update the sparkle feed

TODO

  • Emailing the list and updating the IRC topic
  • Updating kde-apps.org and qt-apps.org
  • Updating freshmeat
  • Updating the Windows sparkle feed