1## Checklist for making a release: 2 3### Requirements 4 - [ ] Lauchpad (Ubuntu One) account 5 - [ ] gnupg key (has to be version 1, gpg2 won't work) for `your-name@ethereum.org` 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. 11 12### Blog Post 13 - [ ] Create a post on https://github.com/ethereum/solidity-blog and explain some of the new features or concepts. 14 15### 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. 20 21### 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``). 25 - [ ] 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. 27 - [ ] Wait for the CI runs on the tag itself. 28 29### Download Binaries 30 - [ ] Take the ``solc.exe`` binary from the ``b_win_release`` run of the released commit in circle-ci and add it to the release page as ``solc-windows.exe``. 31 - [ ] Take the ``solc`` binary from the ``b_osx`` run of the released commit in circle-ci and add it to the release page as ``solc-macos``. 32 - [ ] Take the ``solc`` binary from the ``b_ubu_static`` run of the released commit in circle-ci and add it to the release page as ``solc-static-linux``. 33 - [ ] Take the ``soljson.js`` binary from the ``b_ems`` run of the released commit in circle-ci and add it to the release page as ``soljson.js``. 34 35### Update [solc-bin](https://github.com/ethereum/solc-bin/) 36 - [ ] Copy files to solc-bin: 37 ```bash 38 VERSION=0.8.4 39 COMMIT="c7e474f2" 40 SOLC_BIN="/home/me/solc-bin" 41 chmod +x solc-static-linux solc-macos 42 cp soljson.js $SOLC_BIN/bin/soljson-v$VERSION+commit.$COMMIT.js 43 cp solc-static-linux $SOLC_BIN/linux-amd64/solc-linux-amd64-v$VERSION+commit.$COMMIT 44 cp solc-macos $SOLC_BIN/macosx-amd64/solc-macosx-amd64-v$VERSION+commit.$COMMIT 45 cp solc-windows.exe $SOLC_BIN/windows-amd64/solc-windows-amd64-v$VERSION+commit.$COMMIT.exe 46 - [ ] 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/``. 47 - [ ] Create a pull request and merge. 48 49### Homebrew and MacOS 50 - [ ] Update the version and the hash (``sha256sum solidity_$VERSION.tar.gz``) in https://github.com/Homebrew/homebrew-core/blob/master/Formula/solidity.rb 51 - [ ] Update the version and the hash (``sha256sum solidity_$VERSION.tar.gz``) in https://github.com/ethereum/homebrew-ethereum/blob/master/solidity.rb 52 53### Docker 54 - [ ] Run ``./scripts/docker_deploy_manual.sh v$VERSION``). 55 56### PPA 57 - [ ] Change ``scripts/release_ppa.sh`` to match your key's email and key id. 58 - [ ] Run ``scripts/release_ppa.sh v$VERSION`` to create the PPA release (you need the relevant openssl key). 59 - [ ] 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``. 60 61### Documentation 62 - [ ] Build the new version on https://readthedocs.org/projects/solidity/ (select `latest` at the bottom of the page and click `BUILD`). 63 - [ ] In the admin panel, select `Versions` in the menu and set the default version to the released one. 64 65### Release solc-js 66 - [ ] Wait until solc-bin was properly deployed. You can test this via remix - a test run through remix is advisable anyway. 67 - [ ] Increment the version number, create a pull request for that, merge it after tests succeeded. 68 - [ ] Run ``node verifyVersion.js && npm publish`` in the updated ``solc-js`` repository. 69 - [ ] Create a tag using ``git tag --annotate v$VERSION`` and push it with ``git push --tags``. 70 71### Post-release 72 - [ ] Publish the blog post. 73 - [ ] Create a commit to increase the version number on ``develop`` in ``CMakeLists.txt`` and add a new skeleton changelog entry. 74 - [ ] Announce on Twitter, including links to the release and the blog post. 75 - [ ] Share announcement on Reddit and Solidity forum. 76 - [ ] Update the release information section on [soliditylang.org](https://github.com/ethereum/solidity-portal). 77 - [ ] Lean back, wait for bug reports and repeat from step 1 :) 78