|
1 | 1 | ## Checklist for making a release:
|
2 | 2 |
|
3 | 3 | ### Requirements
|
4 |
| - - [ ] Lauchpad (Ubuntu One) account |
5 |
| - - [ ] gnupg key (has to be version 1, gpg2 won't work) for `[email protected]` created and uploaded |
6 |
| - - [ ] Readthedocs account, access to the Solidity project |
7 |
| - - [ ] Write access to https://github.com/ethereum/homebrew-ethereum |
8 |
| - |
9 |
| -### Documentation check |
10 |
| - - [ ] Run `make linkcheck` from within `docs/` and fix any broken links it finds. Ignore false positives caused by `href` anchors and dummy links not meant to work. |
| 4 | + - [ ] Github account with access to [solidity](https://github.com/ethereum/solidity), [solc-js](https://github.com/ethereum/solc-js), |
| 5 | + [solc-bin](https://github.com/ethereum/solc-bin), [homebrew-ethereum](https://github.com/ethereum/homebrew-ethereum), |
| 6 | + [solidity-blog](https://github.com/ethereum/solidity-blog) and [solidity-portal](https://github.com/ethereum/solidity-portal) repositories. |
| 7 | + - [ ] DockerHub account with push rights to the [``solc`` image](https://hub.docker.com/r/ethereum/solc). |
| 8 | + - [ ] Lauchpad (Ubuntu One) account with a membership in the ["Ethereum" team](https://launchpad.net/~ethereum) and |
| 9 | + a gnupg key for your email in the ``ethereum.org`` domain (has to be version 1, gpg2 won't work). |
| 10 | + - [ ] [npm Registry](https://www.npmjs.com) account added as a collaborator for the [``solc`` package](https://www.npmjs.com/package/solc). |
| 11 | + - [ ] Access to the [solidity_lang Twitter account](https://twitter.com/solidity_lang). |
| 12 | + - [ ] [Reddit](https://www.reddit.com) account that is at least 10 days old with a minimum of 20 comment karma (``/r/ethereum`` requirements). |
11 | 13 |
|
12 | 14 | ### Blog Post
|
13 |
| - - [ ] Create a post on https://github.com/ethereum/solidity-blog and explain some of the new features or concepts. |
| 15 | + - [ ] Create a post on [solidity-blog](https://github.com/ethereum/solidity-blog) in the ``Releases`` category and explain some of the new features or concepts. |
| 16 | + - [ ] Create a post on [solidity-blog](https://github.com/ethereum/solidity-blog) in the ``Security Alerts`` category in case of important bug(s). |
| 17 | + |
| 18 | +### Documentation check |
| 19 | + - [ ] Run ``make linkcheck`` from within ``docs/`` and fix any broken links it finds. Ignore false positives caused by ``href`` anchors and dummy links not meant to work. |
14 | 20 |
|
15 | 21 | ### Changelog
|
16 |
| - - [ ] Sort the changelog entries alphabetically and correct any errors you notice. |
17 |
| - - [ ] Create a commit on a new branch that updates the ``Changelog`` to include a release date. |
18 |
| - - [ ] Run ``./scripts/tests.sh`` to update the bug list. |
19 |
| - - [ ] Create a pull request and wait for the tests, merge it. |
| 22 | + - [ ] Sort the changelog entries alphabetically and correct any errors you notice. Commit it. |
| 23 | + - [ ] Update the changelog to include a release date. |
| 24 | + - [ ] Run ``scripts/update_bugs_by_version.py`` to regenerate ``bugs_by_version.json`` from the changelog and ``bugs.json``. |
| 25 | + Make sure that the resulting ``bugs_by_version.json`` has a new, empty entry for the new version. |
| 26 | + - [ ] Commit changes, create a pull request and wait for the tests. Then merge it. |
| 27 | + - [ ] Copy the changelog into the release blog post. |
20 | 28 |
|
21 | 29 | ### Create the Release
|
22 |
| - - [ ] Create Github release page: https://github.com/ethereum/solidity/releases/new |
23 |
| - - [ ] On the release page, select the ``develop`` branch as new target and set tag to the new version (e.g. `v0.8.5`) (make sure you only `SAVE DRAFT` instead of `PUBLISH RELEASE` before the actual release) |
24 |
| - - [ ] Thank voluntary contributors in the Github release page (use ``git shortlog -s -n -e v0.5.3..origin/develop``). |
| 30 | + - [ ] Create a [release on github](https://github.com/ethereum/solidity/releases/new). |
| 31 | + Set the target to the ``develop`` branch and the tag to the new version, e.g. ``v0.8.5``. |
| 32 | + Include the following warning: ``**The release is still in progress and the binaries may not yet be available from all sources.**``. |
| 33 | + Don't publish it yet - click the ``Save draft`` button instead. |
| 34 | + - [ ] Thank voluntary contributors in the Github release notes (use ``git shortlog --summary --email v0.5.3..origin/develop``). |
25 | 35 | - [ ] Check that all tests on the latest commit in ``develop`` are green.
|
26 |
| - - [ ] Click the `PUBLISH RELEASE` button on the release page, creating the tag. |
| 36 | + - [ ] Click the ``Publish release`` button on the release page, creating the tag. |
27 | 37 | - [ ] Wait for the CI runs on the tag itself.
|
28 | 38 |
|
29 | 39 | ### Upload Release Artifacts and Publish Binaries
|
|
32 | 42 | - [ ] Run ``scripts/create_source_tarball.sh`` while being on the tag to create the source tarball. This will create the tarball in a directory called ``upload``.
|
33 | 43 | - [ ] Take the tarball from the upload directory (its name should be ``solidity_x.x.x.tar.gz``, otherwise ``prerelease.txt`` was missing in the step before) and upload the source tarball to the release page.
|
34 | 44 | - [ ] Take the ``github-binaries.tar`` tarball from ``c_release_binaries`` run of the tagged commit in circle-ci and add all binaries from it to the release page.
|
35 |
| - Make sure it contains four binaries: ``solc-windows.exe``, ``solc-macos``, ``solc-static-linux`` and ``soljson.js``. |
| 45 | + Make sure it contains four binaries: ``solc-windows.exe``, ``solc-macos``, ``solc-static-linux`` and ``soljson.js``. |
36 | 46 | - [ ] Take the ``solc-bin-binaries.tar`` tarball from ``c_release_binaries`` run of the tagged commit in circle-ci and add all binaries from it to solc-bin.
|
37 | 47 | - [ ] Run ``./update --reuse-hashes`` in ``solc-bin`` and verify that the script has updated ``list.js``, ``list.txt`` and ``list.json`` files correctly and that symlinks to the new release have been added in ``solc-bin/wasm/`` and ``solc-bin/emscripten-wasm32/``.
|
38 | 48 | - [ ] Create a pull request in solc-bin and merge.
|
39 | 49 |
|
40 | 50 | ### Homebrew and MacOS
|
41 |
| - - [ ] Update the version and the hash (``sha256sum solidity_$VERSION.tar.gz``) in https://github.com/Homebrew/homebrew-core/blob/master/Formula/solidity.rb |
42 |
| - - [ ] Update the version and the hash (``sha256sum solidity_$VERSION.tar.gz``) in https://github.com/ethereum/homebrew-ethereum/blob/master/solidity.rb |
| 51 | + - [ ] Update the version and the hash (``sha256sum solidity_$VERSION.tar.gz``) in the [``solidity`` formula in Homebrew core repository](https://github.com/Homebrew/homebrew-core/blob/master/Formula/solidity.rb). |
| 52 | + - [ ] Update the version and the hash (``sha256sum solidity_$VERSION.tar.gz``) in [our custom ``solidity`` Homebrew formula](https://github.com/ethereum/homebrew-ethereum/blob/master/solidity.rb). |
43 | 53 |
|
44 | 54 | ### Docker
|
45 |
| - - [ ] Run ``./scripts/docker_deploy_manual.sh v$VERSION``). |
| 55 | + - [ ] Run ``./scripts/docker_deploy_manual.sh v$VERSION``. |
46 | 56 |
|
47 | 57 | ### PPA
|
48 |
| - - [ ] Make sure the ``ethereum/cpp-build-deps`` PPA repository contains libz3-static-dev builds for all current versions of ubuntu. If not run ``scripts/deps-ppa/static-z3.sh`` (after changing email address and key id and adding the missing ubuntu version) and wait for the builds to succeed before continuing. |
49 |
| - - [ ] Change ``scripts/release_ppa.sh`` to match your key's email and key id; double-check that ``DISTRIBUTIONS`` contains the most recent versions. |
50 |
| - - [ ] Run ``scripts/release_ppa.sh v$VERSION`` to create the PPA release (you need the relevant openssl key). |
51 |
| - - [ ] Wait for the ``~ethereum/ubuntu/ethereum-static`` PPA build to be finished and published for *all platforms*. SERIOUSLY: DO NOT PROCEED EARLIER!!! *After* the static builds are *published*, copy the static package to the ``~ethereum/ubuntu/ethereum`` PPA for the destination series ``Trusty``, ``Xenial`` and ``Bionic`` while selecting ``Copy existing binaries``. |
52 |
| - |
53 |
| -### Documentation |
54 |
| - - [ ] Build the new version on https://readthedocs.org/projects/solidity/ (select `latest` at the bottom of the page and click `BUILD`). |
55 |
| - - [ ] In the admin panel, select `Versions` in the menu and set the default version to the released one. |
| 58 | + - [ ] Create ``.release_ppa_auth`` at the root of your local Solidity checkout and set ``LAUNCHPAD_EMAIL`` and ``LAUNCHPAD_KEYID`` to your key's email and key id. |
| 59 | + - [ ] Double-check that the ``DISTRIBUTIONS`` list in ``scripts/release_ppa.sh`` and ``scripts/deps-ppa/static-z3.sh`` contains the most recent versions of Ubuntu. |
| 60 | + - [ ] Make sure the [``~ethereum/cpp-build-deps`` PPA repository](https://launchpad.net/~ethereum/+archive/ubuntu/cpp-build-deps) contains ``libz3-static-dev builds`` for all current versions of Ubuntu. |
| 61 | + If not, run ``scripts/deps-ppa/static-z3.sh`` (after changing email address and key id) and wait for the builds to succeed before continuing. |
| 62 | + - [ ] Run ``scripts/release_ppa.sh v$VERSION`` to create the PPA release. |
| 63 | + - [ ] Wait for the [``~ethereum/ethereum-static`` PPA](https://launchpad.net/~ethereum/+archive/ubuntu/ethereum-static) build to be finished and published for *all platforms*. |
| 64 | + **SERIOUSLY: DO NOT PROCEED EARLIER!!!** |
| 65 | + *After* the static builds are *published*, copy the static package to the [``~ethereum/ethereum`` PPA](https://launchpad.net/~ethereum/+archive/ubuntu/ethereum) |
| 66 | + for the destination series ``Trusty``, ``Xenial`` and ``Bionic`` while selecting ``Copy existing binaries``. |
56 | 67 |
|
57 | 68 | ### Release solc-js
|
58 | 69 | - [ ] Wait until solc-bin was properly deployed. You can test this via remix - a test run through remix is advisable anyway.
|
|
62 | 73 | - [ ] Create a tag using ``git tag --annotate v$VERSION`` and push it with ``git push --tags``.
|
63 | 74 |
|
64 | 75 | ### Post-release
|
65 |
| - - [ ] Publish the blog post. |
| 76 | + - [ ] Make sure the documentation for the new release has been published successfully. |
| 77 | + Go to the [documentation status page at ReadTheDocs](https://readthedocs.org/projects/solidity/) and verify that the new version is listed, works and is marked as default. |
| 78 | + - [ ] Remove "still in progress" warning from the release notes. |
| 79 | + - [ ] Publish the blog posts. |
66 | 80 | - [ ] Create a commit to increase the version number on ``develop`` in ``CMakeLists.txt`` and add a new skeleton changelog entry.
|
67 | 81 | - [ ] Announce on Twitter, including links to the release and the blog post.
|
68 |
| - - [ ] Share announcement on Reddit and Solidity forum. |
| 82 | + Use ``#xp`` at the end of the tweet to automatically cross post the announcement to Fosstodon. |
| 83 | + - [ ] Share the announcement on Reddit in [``/r/ethdev``](https://reddit.com/r/ethdev/), cross-posted to [``/r/ethereum``](https://reddit.com/r/ethereum/). |
| 84 | + - [ ] Share the announcement the [Solidity forum](https://forum.soliditylang.org) in the ``Announcements`` category. |
69 | 85 | - [ ] Update the release information section on [soliditylang.org](https://github.com/ethereum/solidity-portal).
|
70 | 86 | - [ ] Lean back, wait for bug reports and repeat from step 1 :)
|
0 commit comments