Scrapy release procedure

Daniel Graña edited this page Jul 1, 2015 · 44 revisions

Scrapy Release Procedure

This page outlines the procedure used to release a new (major/minor) version of Scrapy. Micro/patch versions are published automatically.

You will need bumpversion installed.

Version and git branch

Here is an example, assuming we are releasing 1.1.0rc1:

# Be sure your local master branch is uptodate with remote master branch.
$ git pull origin --rebase

# Update release notes by editing docs/news.rst 
$ git add docs/news.rst
$ git commit -m 'Add 1.1.0 release notes'

# Increase version and create featured branch
# master: 1.1.0dev1 to 1.1.0rc1
$ bumpversion prerel
$ git branch 1.1
# master: 1.1.0rc1 to 1.2.0dev1
$ bumpversion minor --no-tag

# Review everything and push when sure.
$ git push origin master 1.1 --tags

To make an official release from a release candidate:

# Checkout the featured branch.
$ git checkout 1.1

# Set release date in docs/news.rst.
$ git add docs/news.rst
$ git commit -m 'Update 1.1.0 release date'

# Increase version.
# 1.1: 1.1.0rc1 to 1.1.0
$ bumpversion prerel

# Review everything and push when sure.
$ git push origin master 1.1 --tags

# Checkout master and cherry pick `docs/news.rst` changes.
$ git checkout master
$ git cherry-pick 1.1  # resolve any conflicts on docs/news.rst
$ git push origin master

Buildbot

  • Update buildbot configuration to point to the new stable release

Read the Docs

  • Enable the new version to be built in readthedocs
  • Set the new version as default

scrapy.org website

Send announcement

  • announce in:
  • change #scrapy IRC channel topic:
    • /msg ChanServ topic #scrapy Welcome to Scrapy - Say "Hi!" and ask. Latest stable release is Scrapy 0.24.4 - Easy tasks http://git.io/VpGt-w

Micro/bugfix releases

Assuming we are releasing 1.0.2:

$ git checkout 1.0
# 1.0: 1.0.1 to 1.0.2 (Use --serialize to avoid the 1.0.2dev1 version)
$ bumpversion patch --serialize "{major}.{minor}.{patch}"

# Add version, release date and changes to `docs/news.rst`
$ git log '--format=- %s (:commit:`%h`)' 1.0.1...1.0 # update docs/news.rst
$ git add docs/news.rst
$ git commit -m 'Add 1.0.2 release notes'
$ git push origin 1.0 --tags

# Checkout master and cherry pick `docs/news.rst` changes.
$ git checkout master
$ git cherry-pick 1.0  # resolve any conflicts on docs/news.rst
$ git push origin master