Update release checklist
[python-namecheap.git] / DEVELOP.md
blob743fae2327d06644114cb9d3d63c756e364da925
1 Development
2 ===========
4 Introduction
5 ------------
6 This project uses a combination of virtualenv and zc.buildout to setup a self
7 contained development environment. It's designed so I can basically go to any
8 of my computers, clone the upstream repository, source the bootstrap script,
9 and begin working.
11 Also, git-flow is being used to manage the general workflow of the repository,
12 so please install it and stick with it.
15 Bootstrapping
16 -------------
17 With virtualenv and zc.buildout:
18 % source bootstrap
19 % buildout
21 With zc.buildout only:
22 % python bootstrap.py -d
23 % bin/buildout
26 Web Resources
27 -------------
28 Project website, bug database, and GIT repository is at:
29 http://github.com/mvillalba/python-namecheap
31 Project documentation (Sphinx) is at:
32 NOT-HOSTED-ANYWHERE-YET
34 Backup GIT repositories:
35 https://gitorious.org/python-namecheap/python-namecheap
36 http://repo.or.cz/w/python-namecheap.git
39 Release Checklist
40 -----------------
41  * Deactivate virtualenv environment, if active
42  * Clone upstream to clean directory (setup all remotes!)
43  * Bootstrap environment
44  * Start release branch (git-flow)
45  * Set/check version number (setup.py, project's __init__.py, docs)
46  * Run pylint
47  * Run importchecker
48    % importchecker src
49  * Run pep8
50    % pep8 -r src --count --statistics
51  * Run test suite and check test coverage
52    % nosetests --with-coverage --cover-inclusive --cover-erase
53  * Freeze dependencies' version numbers in buildout.cfg and setup.py
54  * Check bug database for open issues/bugs
55  * Build documentation
56  * Check documentation (coverage, grammar, contents, etc)
57  * Update CHANGES.md
58  * Update copyright statements if new year
59  * Update setup.py
60  * Create distribution bundles
61    % buildout setup . sdist bdist_egg
62  * Check dist/* files (no nuclear launch codes, all files present, do they work
63    in a separate virtualenv with pip?)
64  * Upload to PyPI
65    % buildout setup . sdist bdist_egg register upload
66  * Check package page in PyPI (readme, download links)
67  * If first release, delete dummy "develop" version from PyPI
68  * Re-test release in a clean environment, installing from the cheeseshop
69  * Finish git-flow release and add release tag and commit release
70  * Push upstream (GitHub master, gitorious backup, odin backup)
71    % git push --all all && git push --tags all
72  * Close old feature branches (GitHub)
73    % git push origin :feature/{NAME-HERE}
74  * Upload dist files to GitHub and download them to check integrity
75  * Unfreeze version numbers from setup.py and buildout.cfg
76  * Set version number to "develop" (setup.py, project's __init__.py, docs)
77  * Go back to old development repo and update everything
78    % git checkout develop && git pull origin develop
79    % git checkout master && git pull origin master
80  * Upload built documentation
81  * Make public announcement, if necessary
84 Release Notes
85 -------------
86 If releasing anything but a final version, skip registering and uploading to
87 the cheeseshop.
89 If releasing a .devX version, some steps may be skipped from the release
90 checklist. In particular, .devX versions should be treated mostly as an
91 internal thing and thus, should generally not be published nor uploaded to
92 GitHub.