From 22bcd883a4645afac556a6b25ec57745a0bcf5f2 Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:28:17 -0700 Subject: [PATCH 01/11] fix notes --- docs/release-checklist.rst | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/release-checklist.rst b/docs/release-checklist.rst index e02844d67..3cb517793 100644 --- a/docs/release-checklist.rst +++ b/docs/release-checklist.rst @@ -3,7 +3,7 @@ Release Checklist ================= -This release checklist specifies a series of checks that anyone engaged in +This release checklist specifies a series of checks that anyone engaged in releasing a version of Tahoe should follow. Any contributor can do the first part of the release preparation. Only @@ -39,19 +39,19 @@ Tuesday if you want to get anything in"). Get a clean checkout ```````````````````` -The release proccess involves compressing source files and putting them in formats -suitable for distribution such as ``.tar.gz`` and ``zip``. That said, it's neccesary to +The release proccess involves compressing source files and putting them in formats +suitable for distribution such as ``.tar.gz`` and ``zip``. That said, it's neccesary to the release process begins with a clean checkout to avoid making a release with previously generated files. -- Inside the tahoe root dir run ``git clone . ../tahoe-release-x.x.x`` where (x.x.x is the release number such as 1.16.0). +- Inside the tahoe root dir run ``git clone . ../tahoe-release-x.x.x`` where (x.x.x is the release number such as 1.16.0). -.. note:: - The above command would create a new directory at the same level as your original clone named ``tahoe-release-x.x.x``. You can name this folder however you want but it would be a good +.. note:: + The above command would create a new directory at the same level as your original clone named ``tahoe-release-x.x.x``. You can name this folder however you want but it would be a good practice to give it the release name. You MAY also discard this directory once the release process is complete. -Get into the release directory and install dependencies by running +Get into the release directory and install dependencies by running: - cd ../tahoe-release-x.x.x (assuming you are still in your original clone) - python -m venv venv @@ -61,34 +61,32 @@ Get into the release directory and install dependencies by running Create Branch and Apply Updates ``````````````````````````````` -- Create a branch for the release/candidate (e.g. ``XXXX.release-1.16.0``) -- run tox -e news to produce a new NEWS.txt file (this does a commit) -- create the news for the release - - - newsfragments/.minor - - commit it - -- manually fix NEWS.txt +- Create a branch for the release/candidate: git checkout -b XXXX.release-1.16.0 +- produce a new NEWS.txt file (this does a commit): tox -e news +- create the news for the release: + - touch newsfragments/.minor + - git add newsfragments/.minor + - git commit -m news +- manually fix ``NEWS.txt``: - proper title for latest release ("Release 1.16.0" instead of "Release ...post1432") - double-check date (maybe release will be in the future) - spot-check the release notes (these come from the newsfragments files though so don't do heavy editing) - commit these changes -- update "relnotes.txt" - +- update ``relnotes.txt``: - update all mentions of ``1.16.0`` to new and higher release version for example ``1.16.1`` - update "previous release" statement and date - summarize major changes - commit it -- update "nix/tahoe-lafs.nix" - +- update ``nix/tahoe-lafs.nix``: - change the value given for `version` from `OLD.post1` to `NEW.post1` -- update "docs/known_issues.rst" if appropriate +- update ``docs/known_issues.rst`` if appropriate - Push the branch to github + - Create a (draft) PR; this should trigger CI (note that github doesn't let you create a PR without some changes on the branch so running + committing the NEWS.txt file achieves that without changing From 27fb8174f38715cec2c52cdd4ed93f36e1aa97d3 Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:28:36 -0700 Subject: [PATCH 02/11] tox changed their minds again --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index d369d7de7..c8b2e051e 100644 --- a/tox.ini +++ b/tox.ini @@ -152,7 +152,7 @@ commands = [testenv:news] # On macOS, git invoked from Tox needs $HOME. passenv = TAHOE_LAFS_*,PIP_*,SUBUNITREPORTER_*,USERPROFILE,HOMEDRIVE,HOMEPATH,COLUMNS -whitelist_externals = +allowlist_externals = git deps = # see comment in [testenv] about "certifi" From c98a61fef143ba2103d7fd88e9b9b08ffdf21ee9 Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:28:58 -0700 Subject: [PATCH 03/11] update NEWS.txt for release --- NEWS.rst | 52 ++++++++++++++++++++++++++++++++ newsfragments/3636.documentation | 1 - newsfragments/3636.minor | 0 newsfragments/4072.feature | 1 - newsfragments/4076.minor | 1 - newsfragments/4082.minor | 0 newsfragments/4085.minor | 0 newsfragments/4087.bugfix | 0 newsfragments/4088.bugfix | 1 - newsfragments/4090.minor | 0 newsfragments/4091.minor | 0 newsfragments/4092.minor | 0 newsfragments/4093.minor | 1 - newsfragments/4094.feature | 1 - newsfragments/4100.bugfix | 1 - newsfragments/4101.bugfix | 1 - newsfragments/4110.incompat | 3 -- newsfragments/4114.minor | 0 newsfragments/4115.minor | 0 newsfragments/4116.documentation | 1 - newsfragments/4126.minor | 0 newsfragments/4130.minor | 0 newsfragments/4132.minor | 1 - newsfragments/4133.installation | 1 - newsfragments/4134.minor | 4 --- newsfragments/4141.minor | 1 - 26 files changed, 52 insertions(+), 19 deletions(-) delete mode 100644 newsfragments/3636.documentation delete mode 100644 newsfragments/3636.minor delete mode 100644 newsfragments/4072.feature delete mode 100644 newsfragments/4076.minor delete mode 100644 newsfragments/4082.minor delete mode 100644 newsfragments/4085.minor delete mode 100644 newsfragments/4087.bugfix delete mode 100644 newsfragments/4088.bugfix delete mode 100644 newsfragments/4090.minor delete mode 100644 newsfragments/4091.minor delete mode 100644 newsfragments/4092.minor delete mode 100644 newsfragments/4093.minor delete mode 100644 newsfragments/4094.feature delete mode 100644 newsfragments/4100.bugfix delete mode 100644 newsfragments/4101.bugfix delete mode 100644 newsfragments/4110.incompat delete mode 100644 newsfragments/4114.minor delete mode 100644 newsfragments/4115.minor delete mode 100644 newsfragments/4116.documentation delete mode 100644 newsfragments/4126.minor delete mode 100644 newsfragments/4130.minor delete mode 100644 newsfragments/4132.minor delete mode 100644 newsfragments/4133.installation delete mode 100644 newsfragments/4134.minor delete mode 100644 newsfragments/4141.minor diff --git a/NEWS.rst b/NEWS.rst index d5dadf06d..65241a752 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -5,6 +5,58 @@ User-Visible Changes in Tahoe-LAFS ================================== .. towncrier start line +Release 1.19.1.dev247+g3fcddb695.d20241213 (2024-12-12) +''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +No significant changes. + + +Release 1.19.1.dev245+gc3c0ee25d.d20241213 (2024-12-12) +''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +Backwards Incompatible Changes +------------------------------ + +- Properly interpret "tahoe create --storage-dir" as an option. + + Versions 1.19.0 and older interpreted "--storage-dir" as a "flag" and thus wouldn't work properly. (`#4110 `_) + + +Features +-------- + +- Continued work to make Tahoe-LAFS take advantage of multiple CPUs. (`#4072 `_) +- Mutable directories can now be created with a pre-determined "signature key" via the web API using the "private-key=..." parameter. The "private-key" value must be a DER-encoded 2048-bit RSA private key in urlsafe base64 encoding. (`#4094 `_) + + +Bug Fixes +--------- + +- (`#4087 `_) +- Stop using the C version of the cbor2 decoder. (`#4088 `_) +- Fix incompatibility with cryptography 43. (`#4100 `_) +- Fix incompatibility with attrs 24.1. (`#4101 `_) + + +Dependency/Installation Changes +------------------------------- + +- Now using the "hatch" build system, and pyproject.toml (exclusively) (`#4133 `_) + + +Documentation Changes +--------------------- + +- Tahoe-LAFS manual's table of contents page has been reorganized. (`#3636 `_) +- Add a global Sphinx generated glossary. Link the static GBS glossary to the global glossary. (`#4116 `_) + + +Misc/Other +---------- + +- `#3636 `_, `#4076 `_, `#4082 `_, `#4085 `_, `#4090 `_, `#4091 `_, `#4092 `_, `#4093 `_, `#4114 `_, `#4115 `_, `#4126 `_, `#4130 `_, `#4132 `_, `#4134 `_, `#4141 `_ + + Release 1.190 (2024-01-04) '''''''''''''''''''''''''' diff --git a/newsfragments/3636.documentation b/newsfragments/3636.documentation deleted file mode 100644 index 74f851268..000000000 --- a/newsfragments/3636.documentation +++ /dev/null @@ -1 +0,0 @@ -Tahoe-LAFS manual's table of contents page has been reorganized. diff --git a/newsfragments/3636.minor b/newsfragments/3636.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4072.feature b/newsfragments/4072.feature deleted file mode 100644 index 3b0db7a02..000000000 --- a/newsfragments/4072.feature +++ /dev/null @@ -1 +0,0 @@ -Continued work to make Tahoe-LAFS take advantage of multiple CPUs. \ No newline at end of file diff --git a/newsfragments/4076.minor b/newsfragments/4076.minor deleted file mode 100644 index 2fec812e5..000000000 --- a/newsfragments/4076.minor +++ /dev/null @@ -1 +0,0 @@ -Release 1.19.0 diff --git a/newsfragments/4082.minor b/newsfragments/4082.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4085.minor b/newsfragments/4085.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4087.bugfix b/newsfragments/4087.bugfix deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4088.bugfix b/newsfragments/4088.bugfix deleted file mode 100644 index 765bdc24f..000000000 --- a/newsfragments/4088.bugfix +++ /dev/null @@ -1 +0,0 @@ -Stop using the C version of the cbor2 decoder. \ No newline at end of file diff --git a/newsfragments/4090.minor b/newsfragments/4090.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4091.minor b/newsfragments/4091.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4092.minor b/newsfragments/4092.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4093.minor b/newsfragments/4093.minor deleted file mode 100644 index 8b1378917..000000000 --- a/newsfragments/4093.minor +++ /dev/null @@ -1 +0,0 @@ - diff --git a/newsfragments/4094.feature b/newsfragments/4094.feature deleted file mode 100644 index 85c98f3d5..000000000 --- a/newsfragments/4094.feature +++ /dev/null @@ -1 +0,0 @@ -Mutable directories can now be created with a pre-determined "signature key" via the web API using the "private-key=..." parameter. The "private-key" value must be a DER-encoded 2048-bit RSA private key in urlsafe base64 encoding. diff --git a/newsfragments/4100.bugfix b/newsfragments/4100.bugfix deleted file mode 100644 index d580108ca..000000000 --- a/newsfragments/4100.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix incompatibility with cryptography 43. \ No newline at end of file diff --git a/newsfragments/4101.bugfix b/newsfragments/4101.bugfix deleted file mode 100644 index b03ca46d6..000000000 --- a/newsfragments/4101.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix incompatibility with attrs 24.1. \ No newline at end of file diff --git a/newsfragments/4110.incompat b/newsfragments/4110.incompat deleted file mode 100644 index e22d8dfc7..000000000 --- a/newsfragments/4110.incompat +++ /dev/null @@ -1,3 +0,0 @@ -Properly interpret "tahoe create --storage-dir" as an option. - -Versions 1.19.0 and older interpreted "--storage-dir" as a "flag" and thus wouldn't work properly. diff --git a/newsfragments/4114.minor b/newsfragments/4114.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4115.minor b/newsfragments/4115.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4116.documentation b/newsfragments/4116.documentation deleted file mode 100644 index 0de46138d..000000000 --- a/newsfragments/4116.documentation +++ /dev/null @@ -1 +0,0 @@ -Add a global Sphinx generated glossary. Link the static GBS glossary to the global glossary. \ No newline at end of file diff --git a/newsfragments/4126.minor b/newsfragments/4126.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4130.minor b/newsfragments/4130.minor deleted file mode 100644 index e69de29bb..000000000 diff --git a/newsfragments/4132.minor b/newsfragments/4132.minor deleted file mode 100644 index 8d1c8b69c..000000000 --- a/newsfragments/4132.minor +++ /dev/null @@ -1 +0,0 @@ - diff --git a/newsfragments/4133.installation b/newsfragments/4133.installation deleted file mode 100644 index 4d3d3dce5..000000000 --- a/newsfragments/4133.installation +++ /dev/null @@ -1 +0,0 @@ -Now using the "hatch" build system, and pyproject.toml (exclusively) diff --git a/newsfragments/4134.minor b/newsfragments/4134.minor deleted file mode 100644 index 46fe1d3d3..000000000 --- a/newsfragments/4134.minor +++ /dev/null @@ -1,4 +0,0 @@ -Avoid private cache from Cachix until we can restore it. -Update nixpkgs to 24.11 wich is well cached for now. -Stop packaging and testing on nixpkgs/python39 (too old). -Start packaging and testing on nixpkgs/python312 instead. diff --git a/newsfragments/4141.minor b/newsfragments/4141.minor deleted file mode 100644 index 226ce238f..000000000 --- a/newsfragments/4141.minor +++ /dev/null @@ -1 +0,0 @@ -pinning base images of builders to improve reproducibility on checks for PRs \ No newline at end of file From 244a3e643b0e0f28706f7a0ed6ddef31370e319d Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:29:57 -0700 Subject: [PATCH 04/11] need tox for testing --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 4a4aa7306..31a0c9829 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -226,6 +226,7 @@ testenv = [ # Here are the library dependencies of the test suite. test = [ "mock", + "tox", "pytest", "pytest-twisted", "tox >= 4.0.0", From 7ac3dbc02d7363940e24a257b62d06c0381dc33d Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:30:19 -0700 Subject: [PATCH 05/11] news --- newsfragments/4096.minor | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 newsfragments/4096.minor diff --git a/newsfragments/4096.minor b/newsfragments/4096.minor new file mode 100644 index 000000000..e69de29bb From 772fd59066200bf9c67c266ea94ce80b99e8d292 Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:31:53 -0700 Subject: [PATCH 06/11] fixup NEWS titles --- NEWS.rst | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/NEWS.rst b/NEWS.rst index 65241a752..94348a166 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -5,14 +5,10 @@ User-Visible Changes in Tahoe-LAFS ================================== .. towncrier start line -Release 1.19.1.dev247+g3fcddb695.d20241213 (2024-12-12) -''''''''''''''''''''''''''''''''''''''''''''''''''''''' - -No significant changes. -Release 1.19.1.dev245+gc3c0ee25d.d20241213 (2024-12-12) -''''''''''''''''''''''''''''''''''''''''''''''''''''''' +Release 1.20.0 (2024-12-03) +''''''''''''''''''''''''''' Backwards Incompatible Changes ------------------------------ @@ -57,8 +53,8 @@ Misc/Other - `#3636 `_, `#4076 `_, `#4082 `_, `#4085 `_, `#4090 `_, `#4091 `_, `#4092 `_, `#4093 `_, `#4114 `_, `#4115 `_, `#4126 `_, `#4130 `_, `#4132 `_, `#4134 `_, `#4141 `_ -Release 1.190 (2024-01-04) -'''''''''''''''''''''''''' +Release 1.19.0 (2024-01-04) +''''''''''''''''''''''''''' Features -------- From 34f1124882deea604587a614f26b318876a8f01f Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:32:47 -0700 Subject: [PATCH 07/11] missing summary --- NEWS.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS.rst b/NEWS.rst index 94348a166..055b13ca4 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -28,7 +28,7 @@ Features Bug Fixes --------- -- (`#4087 `_) +- Upgrade CBOR, fixing encoding on 65KiB++ strings (`#4087 `_) - Stop using the C version of the cbor2 decoder. (`#4088 `_) - Fix incompatibility with cryptography 43. (`#4100 `_) - Fix incompatibility with attrs 24.1. (`#4101 `_) From c5de7445cc2eab05a0fba2e2162220bd09f6aeac Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:36:26 -0700 Subject: [PATCH 08/11] update relnotes --- relnotes.txt | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/relnotes.txt b/relnotes.txt index d8caa5e6e..3ce5c4404 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,6 +1,6 @@ -ANNOUNCING Tahoe, the Least-Authority File Store, v1.19.0 +ANNOUNCING Tahoe, the Least-Authority File Store, v1.20.0 -The Tahoe-LAFS team is pleased to announce version 1.19.0 of +The Tahoe-LAFS team is pleased to announce version 1.20.0 of Tahoe-LAFS, an extremely reliable decentralized storage system. Get it with "pip install tahoe-lafs", or download a tarball here: @@ -15,27 +15,14 @@ unique security and fault-tolerance properties: https://tahoe-lafs.readthedocs.org/en/latest/about.html -The previous stable release of Tahoe-LAFS was v1.18.0, released on -October 2, 2022. Major new features and changes in this release: +The previous stable release of Tahoe-LAFS was v1.19.0, released on +January 18, 2024. Major new features and changes in this release: -A new "Grid Manager" feature allows clients to specify any number of -parties whom they will use to limit which storage-server that client -talks to. See docs/managed-grid.rst for more. +Declarative build system based on "hatch". +The ability to great mutable directories with a given private-key. -The new HTTP-based "Great Black Swamp" protocol is now enabled -(replacing Foolscap). This allows integrators to start with their -favourite HTTP library (instead of implementing Foolscap first). Both -storage-servers and clients support this new protocol. - -`tahoe run` will now exit if its stdin is closed (but accepts --allow-stdin-close now). - -Mutables may be created with a pre-determined signature key; care must -be taken! - -This release drops Python 3.7 support and adds Python 3.11 and 3.12 -support. Several performance improvements have been made. Introducer -correctly listens on Tor or I2P. Debian 10 and Ubuntu 20.04 are no -longer tested. +Pulled in fixes from CBOR, stopped using the C version of CBOR and +fixed incompatibilities with attrs and cryptography libraries. Besides all this there have been dozens of other bug-fixes and improvements. @@ -154,23 +141,23 @@ Of Fame" [13]. ACKNOWLEDGEMENTS -This is the twentieth release of Tahoe-LAFS to be created solely as a +This is the twenty-first release of Tahoe-LAFS to be created solely as a labor of love by volunteers. Thank you very much to the team of "hackers in the public interest" who make Tahoe-LAFS possible. meejah on behalf of the Tahoe-LAFS team -October 1, 2022 +December 13, 2024 Planet Earth -[1] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.19.0/NEWS.rst +[1] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.20.0/NEWS.rst [2] https://github.com/tahoe-lafs/tahoe-lafs/blob/master/docs/known_issues.rst [3] https://tahoe-lafs.org/trac/tahoe-lafs/wiki/RelatedProjects -[4] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.19.0/COPYING.GPL -[5] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.19.0/COPYING.TGPPL.rst -[6] https://tahoe-lafs.readthedocs.org/en/tahoe-lafs-1.19.0/INSTALL.html +[4] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.20.0/COPYING.GPL +[5] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.20.0/COPYING.TGPPL.rst +[6] https://tahoe-lafs.readthedocs.org/en/tahoe-lafs-1.20.0/INSTALL.html [7] https://lists.tahoe-lafs.org/mailman/listinfo/tahoe-dev [8] https://tahoe-lafs.org/trac/tahoe-lafs/roadmap [9] https://github.com/tahoe-lafs/tahoe-lafs/blob/master/CREDITS From f979efb9844de5c3a81861a8c652197c3bc4e0ab Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:36:52 -0700 Subject: [PATCH 09/11] update nix version --- nix/tahoe-lafs.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/tahoe-lafs.nix b/nix/tahoe-lafs.nix index f4734358a..bdcf69430 100644 --- a/nix/tahoe-lafs.nix +++ b/nix/tahoe-lafs.nix @@ -1,6 +1,6 @@ let pname = "tahoe-lafs"; - version = "1.19.0.post1"; + version = "1.20.0.post1"; in { lib , pythonPackages From f2dbe2e39f56efa2535ed6107c425dc010770e0a Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 12 Dec 2024 18:54:17 -0700 Subject: [PATCH 10/11] whitespace error --- docs/release-checklist.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/release-checklist.rst b/docs/release-checklist.rst index 3cb517793..ee85eb815 100644 --- a/docs/release-checklist.rst +++ b/docs/release-checklist.rst @@ -71,8 +71,7 @@ Create Branch and Apply Updates - manually fix ``NEWS.txt``: - proper title for latest release ("Release 1.16.0" instead of "Release ...post1432") - double-check date (maybe release will be in the future) - - spot-check the release notes (these come from the newsfragments - files though so don't do heavy editing) + - spot-check the release notes (these come from the newsfragments files though so don't do heavy editing) - commit these changes - update ``relnotes.txt``: From 6ba54b880fe139bbe37a0ac2ea378164b5ea2705 Mon Sep 17 00:00:00 2001 From: meejah Date: Wed, 18 Dec 2024 22:37:16 -0700 Subject: [PATCH 11/11] update release procedure to reflect reality --- docs/release-checklist.rst | 99 +++++++++++--------------------------- 1 file changed, 29 insertions(+), 70 deletions(-) diff --git a/docs/release-checklist.rst b/docs/release-checklist.rst index ee85eb815..dfd99b181 100644 --- a/docs/release-checklist.rst +++ b/docs/release-checklist.rst @@ -93,59 +93,36 @@ Create Branch and Apply Updates - Confirm CI runs successfully on all platforms -Create Release Candidate -```````````````````````` - -Before "officially" tagging any release, we will make a -release-candidate available. So there will be at least 1.15.0rc0 (for -example). If there are any problems, an rc1 or rc2 etc may also be -released. Anyone can sign these releases (ideally they'd be signed -"officially" as well, but it's better to get them out than to wait for -that). - -Typically expert users will be the ones testing release candidates and -they will need to evaluate which contributors' signatures they trust. - -- (all steps above are completed) -- sign the release - - - git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-1.16.0rc0" tahoe-lafs-1.16.0rc0 - -.. note:: - - Replace the key-id above with your own, which can simply be your email if it's attached to your fingerprint. - - Don't forget to put the correct tag message and name. In this example, the tag message is "release Tahoe-LAFS-1.16.0rc0" and the tag name is ``tahoe-lafs-1.16.0rc0`` +Create The Release +`````````````````` - build all code locally - these should all pass: - - tox -e py37,codechecks,docs,integration + - tox -e py311,codechecks,docs,integration - these can fail (ideally they should not of course): - tox -e deprecations,upcoming-deprecations -- clone to a clean, local checkout (to avoid extra files being included in the release) +- install build dependencies - - cd /tmp - - git clone /home/meejah/src/tahoe-lafs + - pip install -e .[build] -- build tarballs +- build tarball + wheel (should be built into dist/) - - tox -e tarballs - - Confirm that release tarballs exist by runnig: - - - ls dist/ | grep 1.16.0rc0 + - hatchling build - inspect and test the tarballs - - install each in a fresh virtualenv - - run `tahoe` command + - install each in a fresh virtualenv + - run `tahoe` command - when satisfied, sign the tarballs: - - gpg --pinentry=loopback --armor -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A --detach-sign dist/tahoe_lafs-1.16.0rc0-py2.py3-none-any.whl - - gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.16.0rc0.tar.gz + - gpg --pinentry=loopback --armor -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A --detach-sign dist/tahoe_lafs-1.20.0rc0-py2.py3-none-any.whl + - gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.20.0rc0.tar.gz Privileged Contributor @@ -172,14 +149,14 @@ Sign Git Tag Upload Artifacts ```````````````` -Any release-candidate or actual release plus signature (.asc file) -need to be uploaded to https://tahoe-lafs.org in `~source/downloads` +Any release plus signature (.asc file) need to be uploaded to +https://tahoe-lafs.org in `~source/downloads` - secure-copy all release artifacts to the download area on the tahoe-lafs.org host machine. `~source/downloads` on there maps to https://tahoe-lafs.org/downloads/ on the Web: - - scp dist/*1.15.0* username@tahoe-lafs.org:/home/source/downloads + - scp dist/*1.20.0* username@tahoe-lafs.org:/home/source/downloads - the following developers have access to do this: @@ -189,13 +166,13 @@ need to be uploaded to https://tahoe-lafs.org in `~source/downloads` Push the signed tag to the main repository: -- git push origin tahoe-lafs-1.17.1 +- git push origin tahoe-lafs-1.20.0 For the actual release, the tarball and signature files need to be uploaded to PyPI as well. -- ls dist/*1.19.0* -- twine upload --username __token__ --password `cat SECRET-pypi-tahoe-publish-token` dist/*1.19.0* +- ls dist/*1.20.0* +- twine upload --username __token__ --password `cat SECRET-pypi-tahoe-publish-token` dist/*1.20.0* The following developers have access to do this: @@ -204,47 +181,29 @@ The following developers have access to do this: - exarkun (partial?) -Announcing the Release Candidate -```````````````````````````````` - -The release-candidate should be announced by posting to the -mailing-list (tahoe-dev@lists.tahoe-lafs.org). For example: -https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html - - -Is The Release Done Yet? +Merge the Release Branch ```````````````````````` -If anyone reports a problem with a release-candidate then a new -release-candidate should be made once a fix has been merged to -master. Repeat the above instructions with `rc1` or `rc2` or whatever -is appropriate. - -Once a release-candidate has marinated for some time then it can be -made into a the actual release. - -The actual release follows the same steps as above, with some differences: - -- there is no "-rcX" on the end of release names -- the release is uploaded to PyPI (using Twine) -- the version is tagged in Git (ideally using "the tahoe release key" - but can be done with any of the authorized core developers' personal - key) -- the release-candidate branches must be merged back to master after - the release is official (e.g. causing newsfragments to be deleted on - master, etc) +Once the release has been signed and uploaded the release branch +should be merged to master (thus deleting newsfragments, etc). Announcing the Release ----------------------- +`````````````````````` + +The release-candidate should be announced by posting to the +mailing-list (tahoe-dev@lists.tahoe-lafs.org). mailing-lists ````````````` A new Tahoe release is traditionally announced on our mailing-list -(tahoe-dev@tahoe-lafs.org). The former version of these instructions -also announced the release on the following other lists: +(tahoe-dev@lists.tahoe-lafs.org). For example: +https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html + +The former version of these instructions also announced the release on +the following other lists: - tahoe-announce@tahoe-lafs.org - twisted-python@twistedmatrix.com