mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
6.1 KiB
6.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 - Write access to https://github.com/ethereum/homebrew-ethereum
Blog Post
- Create a post on solidity-blog in the
Releases
category and explain some of the new features or concepts. - Create a post on solidity-blog in the
Security Alerts
category in case of important bug(s).
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.
Changelog
- Sort the changelog entries alphabetically and correct any errors you notice. Commit it.
- Update the changelog to include a release date.
- Run
scripts/update_bugs_by_version.py
to regeneratebugs_by_version.json
from the changelog andbugs.json
. Make sure that the resultingbugs_by_version.json
has a new, empty entry for the new version. - Commit changes, create a pull request and wait for the tests. Then merge it.
- Copy the changelog into the release blog post.
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.8.5
) (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
). - 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.
Upload Release Artifacts and Publish Binaries
- Switch to the tag that archives have to be created for.
- Create the
prerelease.txt
file: (echo -n > prerelease.txt
). - Run
scripts/create_source_tarball.sh
while being on the tag to create the source tarball. This will create the tarball in a directory calledupload
. - Take the tarball from the upload directory (its name should be
solidity_x.x.x.tar.gz
, otherwiseprerelease.txt
was missing in the step before) and upload the source tarball to the release page. - Take the
github-binaries.tar
tarball fromc_release_binaries
run of the tagged commit in circle-ci and add all binaries from it to the release page. Make sure it contains four binaries:solc-windows.exe
,solc-macos
,solc-static-linux
andsoljson.js
. - Take the
solc-bin-binaries.tar
tarball fromc_release_binaries
run of the tagged commit in circle-ci and add all binaries from it to solc-bin. - 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 in solc-bin 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
- Make sure the
ethereum/cpp-build-deps
PPA repository contains libz3-static-dev builds for all current versions of ubuntu. If not runscripts/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. - Change
scripts/release_ppa.sh
to match your key's email and key id; double-check thatDISTRIBUTIONS
contains the most recent versions. - 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
.
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 run build:tarball
in the updatedsolc-js
repository to createsolc-<version>.tgz
. Inspect the tarball to ensure that it contains an up to date compiler binary. - Run
npm run publish:tarball
to publish the newly created tarball. - Create a tag using
git tag --annotate v$VERSION
and push it withgit push --tags
.
Post-release
- Make sure the documentation for the new release has been published successfully. Go to https://readthedocs.org/projects/solidity/ and verify that the new version is listed, works and is marked as default.
- Publish the blog posts.
- Create a commit to increase the version number on
develop
inCMakeLists.txt
and add a new skeleton changelog entry. - Announce on Twitter, including links to the release and the blog post.
Use
#xp
at the end of the tweet to automatically cross post the announcement to Fosstodon. - Share the announcement on Reddit in
/r/ethdev
, cross-posted to/r/ethereum
. - Share the announcement the Solidity forum in the
Announcements
category. - Update the release information section on soliditylang.org.
- Lean back, wait for bug reports and repeat from step 1 :)