mitmproxy/release
2016-02-18 10:15:59 +13:00
..
.gitignore Adjust release for new repo structure 2016-02-18 09:48:37 +13:00
mitmdump.spec Pull bin to the top, move pathod examples to examples dir 2016-02-18 10:15:59 +13:00
mitmproxy.spec Pull bin to the top, move pathod examples to examples dir 2016-02-18 10:15:59 +13:00
mitmweb.spec Pull bin to the top, move pathod examples to examples dir 2016-02-18 10:15:59 +13:00
pathoc.spec Pull bin to the top, move pathod examples to examples dir 2016-02-18 10:15:59 +13:00
pathod.spec Pull bin to the top, move pathod examples to examples dir 2016-02-18 10:15:59 +13:00
README.mkd add release 2016-02-15 14:58:53 +01:00
rtool.pem add release 2016-02-15 14:58:53 +01:00
rtool.py Adjust release for new repo structure 2016-02-18 09:48:37 +13:00
setup.py add release 2016-02-15 14:58:53 +01:00

General build and release utilities for the mitmproxy, netlib and pathod projects. These tools assume a directory structure with all repositories at the same level, for example:

/src
    /mitmproxy
    /netlib
    /pathod
    /release

Release policies

  • By default, every release is a new minor (0.x) release and it will be pushed for all three projects.

  • Only if an emergency bugfix is needed, we push a new 0.x.y bugfix release for a single project. This matches with what we do in setup.py:

    "netlib>=%s, <%s" % (version.MINORVERSION, version.NEXT_MINORVERSION)
    

Release Checklist

Check out release versions

  • Check out the versions of pathod, netlib and mitmproxy due to be released

  • Verify that repositories are in a clean state:

    `./build git status`
    
  • Ensure that the website style assets have been compiled for production, and synced to the docs.

  • Render the docs, update CONTRIBUTORS file:

    ./build docs contributors
    

Test

  • Test the source distributions:

    ./build test
    

    This does the following:

    • creates a venv in release/venv
    • creates source distributions in release/release
    • installs the source distributions in the venv
    • and runs all installed tools

Release

  • Make a release commit for all projects, tag and push it:

    ./build git commit -am "Release v0.13"
    ./build git tag v0.13
    ./build git push --tags
    
  • Build the OSX binaries

    • Follow instructions in osx-binaries

    • Move to download dir:

      mv ./tmp/osx-mitmproxy-VERSION.tar.gz ~/mitmproxy/www.mitmproxy.org/src/download
      
  • Move all source distributions from ./dist to the server:

    mv ./dist/* ~/mitmproxy/www.mitmproxy.org/src/download
    
  • Upload distributions in ./dist to PyPI:

    ./build upload
    

    You can test with testpypi.python.org by passing --repository test. (more info)

  • Now bump the version number to be ready for the next cycle

    ./build set-version 0.13