- GitHub account with access to solidity, solc-js, solc-bin, homebrew-ethereum, solidity-blog and solidity-portal repositories.
- DockerHub account with push rights to the
solc
image. - Lauchpad (Ubuntu One) account with a membership in the "Ethereum" team and
a gnupg key for your email in the
ethereum.org
domain (has to be version 1, gpg2 won't work). - npm Registry account added as a collaborator for the
solc
package. - Access to the solidity_lang Twitter account.
- Reddit account that is at least 10 days old with a minimum of 20 comment karma (
/r/ethereum
requirements).
- 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).
- 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.
- Make sure that all merged PRs that should have changelog entries do have them.
- 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 a release on GitHub.
Set the target to the
develop
branch and the tag to the new version, e.g.v0.8.5
. Include the following warning:**The release is still in progress and the binaries may not yet be available from all sources.**
. Don't publish it yet - click theSave draft
button instead. - Thank voluntary contributors in the GitHub release notes (use
git shortlog --summary --email 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.
- 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
npm 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.
- Update the version and the hash (
sha256sum solidity_$VERSION.tar.gz
) in thesolidity
formula in Homebrew core repository. - Update the version and the hash (
sha256sum solidity_$VERSION.tar.gz
) in our customsolidity
Homebrew formula.
- Run
./scripts/docker_deploy_manual.sh v$VERSION
.
- Create
.release_ppa_auth
at the root of your local Solidity checkout and setLAUNCHPAD_EMAIL
andLAUNCHPAD_KEYID
to your key's email and key id. - Double-check that the
DISTRIBUTIONS
list inscripts/release_ppa.sh
andscripts/deps-ppa/static-z3.sh
contains the most recent versions of Ubuntu. - Make sure the
~ethereum/cpp-build-deps
PPA repository containslibz3-static-dev builds
for all current versions of Ubuntu. If not, runscripts/deps-ppa/static-z3.sh
and wait for the builds to succeed before continuing. - Run
scripts/release_ppa.sh v$VERSION
to create the PPA release. - Wait for the
~ethereum/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/ethereum
PPA for the destination seriesTrusty
,Xenial
andBionic
while selectingCopy existing binaries
.
- 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
.
- Make sure the documentation for the new release has been published successfully. Go to the documentation status page at ReadTheDocs and verify that the new version is listed, works and is marked as default.
- Remove "still in progress" warning from the release notes.
- 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 :).