mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
2962d48593
Add explanatory text
5.1 KiB
5.1 KiB
Checklist for making a release:
Requirements
- Lauchpad (Ubuntu One) account
- gnupg key (has to be version 1, gpg2 won't work) for
your-name@ethereum.org
created and uploaded - Readthedocs account, access to the Solidity project
- Write access to https://github.com/ethereum/homebrew-ethereum
Documentation check
- Run
make linkcheck
from withindocs/
and fix any broken links it finds. Ignore false positives caused byhref
anchors and dummy links not meant to work.
Blog Post
- Create a post on https://github.com/ethereum/solidity-blog and explain some of the new features or concepts.
Changelog
- Sort the changelog entries alphabetically and correct any errors you notice.
- Create a commit on a new branch that updates the
Changelog
to include a release date. - Run
./scripts/tests.sh
to update the bug list. - Create a pull request and wait for the tests, merge it.
Create the Release
- Create Github release page: https://github.com/ethereum/solidity/releases/new
- On the release page, select the
develop
branch as new target and set tag to the new version (e.g.v0.5.4
) (make sure you onlySAVE DRAFT
instead ofPUBLISH RELEASE
before the actual release) - Thank voluntary contributors in the Github release page (use
git shortlog -s -n -e v0.5.3..origin/develop
). - Make a final check that there are no platform-dependency issues in the
solidity-test-bytecode
repository. - Check that all tests on the latest commit in
develop
are green. - Click the
PUBLISH RELEASE
button on the release page, creating the tag. - Wait for the CI runs on the tag itself (travis will push the source archive and the static linux binary onto the Github release page).
Download Binaries
- Take the
solc.exe
binary from theb_win_release
run of the released commit in circle-ci and add it to the release page assolc-windows.exe
. - Take the
solc
binary from theb_osx
run of the released commit in circle-ci and add it to the release page assolc-macos
. - If not done by travis: Take the
soljson.js
binary from theb_ems
run of the released commit in circle-ci and add it to the release page assoljson.js
.
Update solc-bin
- Copy
soljson.js
tosolc-bin/bin/soljson-v$VERSION+commit.$COMMIT.js
- Copy
solc-static-linux
from the release page tosolc-bin/linux-amd64/solc-linux-amd64-v$VERSION+commit.$COMMIT
- Make it executable.
- Copy
solc-macos
from the release page tosolc-bin/macosx-amd64/solc-macosx-amd64-v$VERSION+commit.$COMMIT
- Make it executable.
- Copy
solc-windows.exe
from the release page tosolc-bin/windows-amd64/solc-windows-amd64-v$VERSION+commit.$COMMIT.exe
- Run
./update --reuse-hashes
insolc-bin
and verify that the script has updatedlist.js
,list.txt
andlist.json
files correctly and that symlinks to the new release have been added insolc-bin/wasm/
andsolc-bin/emscripten-wasm32/
. - Create a pull request and merge.
Homebrew and MacOS
- Update the version and the hash (
sha256sum solidity_$VERSION.tar.gz
) in https://github.com/Homebrew/homebrew-core/blob/master/Formula/solidity.rb - Update the version and the hash (
sha256sum solidity_$VERSION.tar.gz
) in https://github.com/ethereum/homebrew-ethereum/blob/master/solidity.rb
Docker
- Run
./scripts/docker_deploy_manual.sh v$VERSION
).
PPA
- Change
scripts/release_ppa.sh
to match your key's email and key id. - Run
scripts/release_ppa.sh v$VERSION
to create the PPA release (you need the relevant openssl key). - 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 seriesTrusty
,Xenial
andBionic
while selectingCopy existing binaries
.
Documentation
- Build the new version on https://readthedocs.org/projects/solidity/ (select
latest
at the bottom of the page and clickBUILD
). - In the admin panel, select
Versions
in the menu and set the default version to the released one. - If it is a non-breaking release, block indexing of previous release version in the
robots.txt
file.
Release solc-js
- Wait until solc-bin was properly deployed. You can test this via remix - a test run through remix is advisable anyway.
- Increment the version number, create a pull request for that, merge it after tests succeeded.
- Run
npm publish
in the updatedsolc-js
repository. - Create a tag using
git tag --annotate v$VERSION
and push it withgit push --tags
.
Post-release
- Publish the blog post.
- Create a commit to increase the version number on
develop
inCMakeLists.txt
and add a new skeleton changelog entry. - Announce on Twitter and Reddit.
- Lean back, wait for bug reports and repeat from step 1 :)