RELEASE_INSTRUCTIONS
21f36f55
 Instructions for s3cmd maintainers for doing a tagged release and publishing on sourceforge.net.
5811f35b
 In the below, 2.1.0 is the example version being released.  Salt to taste.
 
 Dependency that could be needed for the release:
     pip install --user twine
21f36f55
 
 1.  Make a fresh clone of the repo:
5811f35b
     git clone ssh+git://git@github.com/s3tools/s3cmd s3cmd-release
21f36f55
 
 2.  Run ./run-tests.py to verify it all works OK.
 
5811f35b
 3.  Update version to 2.1.0 in S3/PkgInfo.py
21f36f55
 
 4.  Update manpage with ./s3cmd --help | ./format-manpage.pl > s3cmd.1
 
5811f35b
 5.  Update NEWS with info about new features. Best to extract from git with:
     git log --abbrev-commit --no-merges v2.0.2..
21f36f55
     (list all tags with: "git tag")
 
 6.  Verify the above changes:
     git diff --check && git diff
     git status
     (The only changed files should be NEWS, s3cmd.1, S3/PkgInfo.py)
 
 7.  Remove testsuite (intentionally inaccessible files break the next
     step):
     chmod -R +rwx testsuite/permission-tests/permission-denied-dir && rm -rf testsuite
 
 8.  If everything worked fine commit the above changes:
5811f35b
     git commit -a -m "Update version to 2.1.0"
21f36f55
 
5811f35b
 9.  Tag it:
     git tag --sign -a v2.1.0 -m "Tag v2.1.0"
21f36f55
 
 10. Push back to github:
     git push --tags
 
5811f35b
 11. Build the "Source Distribution" and the universal "Wheel" package:
     python setup.py sdist bdist_wheel --universal
     -> Creates dist/s3cmd-2.1.0.tar.gz , dist/s3cmd-2.1.0.zip and dist/s3cmd-2.1.0-py2.py3-none-any.whl
 
 12. Generate the GPG signatures for the previously generated artefacts
     gpg2 --default-key XXXX --detach-sign -a dist/s3cmd-2.1.0.tar.gz
     gpg2 --default-key XXXX --detach-sign -a dist/s3cmd-2.1.0.zip
     gpg2 --default-key XXXX --detach-sign -a dist/s3cmd-2.1.0-py2.py3-none-any.whl
 
 13. Publish to PyPi, so 'pip install s3cmd' downloads the new version.
     twine upload dist/s3cmd-2.1.0.tar.gz* dist/s3cmd-2.1.0-py2.py3-none-any.whl*
21f36f55
 
5811f35b
 Note: we only publish the .tar.gz and the .whl (+.asc signatures) to Pypi, and
 not the .zip as Pypi only accepts a single "sdist" source file for a given version.
21f36f55
 
 
 GitHub releases
 
 1. Login to github.com/s3tools/s3cmd
 
 2.  You will see your new tag in the Tags tab.  Click "Draft a new
     release".
 
 3.  In the 'Tag version' drop-down, select your new tag.
 
5811f35b
 4.  In the 'Release title' field, name it v2.1.0.
21f36f55
 
 5.  In the 'Describe this release' text box, add in this release's
     notes from the NEWS file.
 
 6.  Upload all 4 files from dist/.
 
 7.  Click "Publish release"
 
 
 
 SourceForge releases
 
 1.  Login to sf.net
 
 2.  Go to https://sourceforge.net/p/s3tools/admin/
 
5811f35b
 3.  Files -> s3cmd -> Add Folder -> Enter "2.1.0" -> Create
21f36f55
 
5811f35b
 4.  Go into 2.1.0 -> Add File -> upload dist/s3cmd-2.1.0.tar.gz
21f36f55
 
 5.  Once uploaded click the little "i" icon on the right and click
     "Select all" under "Default Download For:" to update the default
     download button to this new version.
 
 6.  Give it a few minutes and verify on the Summary page that the
5811f35b
     download button has been updated to s3cmd-2.1.0.tar.gz
21f36f55
 
 Now it's time to send out an announcement email to
39a0f58f
 s3tools-announce@lists.sourceforge.net and
 s3tools-general@lists.sourceforge.net (check out the s3cmd-announce
21f36f55
 archive for an inspiration :)
 
 And the last step is to ask the respective distribution maintainers
 (Fedora, Debian, Ubuntu, OpenSuse, ...?) to update the package in
 their builds.