RELEASE_INSTRUCTIONS 3.2 KB

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