Skip to content

Commit f6a9245

Browse files
authored
Merge pull request #16244 from argotorg/prerelease-checklist
Prerelease checklist
2 parents 359b014 + b02d176 commit f6a9245

File tree

2 files changed

+56
-25
lines changed

2 files changed

+56
-25
lines changed

ReleaseChecklist.md

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
## Checklist for making a release:
1+
# Checklist for making a Solidity release
22

3-
### Requirements
3+
## Requirements
44
- [ ] GitHub account with access to [solidity](https://github.com/argotorg/solidity), [solc-js](https://github.com/argotorg/solc-js),
55
[solc-bin](https://github.com/argotorg/solc-bin), [solidity-website](https://github.com/argotorg/solidity-website).
66
- [ ] DockerHub account with push rights to the [`solc` image](https://hub.docker.com/r/ethereum/solc).
@@ -12,6 +12,8 @@
1212
- [ ] Access to the [solidity_lang Twitter account](https://twitter.com/solidity_lang).
1313
- [ ] [Reddit](https://www.reddit.com) account that is at least 10 days old with a minimum of 20 comment karma (`/r/ethereum` requirements).
1414

15+
## Full release
16+
1517
### Pre-flight checks
1618
At least a day before the release:
1719
- [ ] Run `make linkcheck` from within `docs/` and fix any broken links it finds.
@@ -59,19 +61,19 @@ At least a day before the release:
5961
- [ ] Thank voluntary contributors in the GitHub release notes.
6062
Use `scripts/list_contributors.sh v<previous version>` to get initial list of names.
6163
Remove different variants of the same name manually before using the output.
62-
- [ ] Check that all tests on the latest commit in `develop` are green.
64+
- [ ] Check that all tests on the latest commit on `develop` are green.
6365
- [ ] Click the `Publish release` button on the release page, creating the tag.
6466
**Important: Must not be done before all the PRs, including changelog cleanup and date, are merged.**
6567
- [ ] Wait for the CI runs on the tag itself.
6668

6769
### Upload Release Artifacts and Publish Binaries
6870
- [ ] Switch to the tag that archives have to be created for.
69-
- [ ] Create the `prerelease.txt` file: (`echo -n > prerelease.txt`).
70-
- [ ] 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`.
71-
- [ ] 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.
72-
- [ ] 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.
71+
- [ ] Create the `prerelease.txt` file: `echo -n > prerelease.txt`.
72+
- [ ] Run `scripts/create_source_tarball.sh` to create the source tarball. This will create the tarball in a directory called `upload`.
73+
- [ ] 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 it to the release page.
74+
- [ ] Take the `github-binaries.tar` tarball from `c_release_binaries` run of the tagged commit on Circle CI and add all binaries from it to the release page.
7375
Make sure it contains four binaries: `solc-windows.exe`, `solc-macos`, `solc-static-linux` and `soljson.js`.
74-
- [ ] 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.
76+
- [ ] Take the `solc-bin-binaries.tar` tarball from `c_release_binaries` run of the tagged commit on Circle CI and add all binaries from it to solc-bin.
7577
- [ ] Run `npm install` if you've got a clean checkout of the solc-bin repo.
7678
- [ ] Run `npm 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/`.
7779
- [ ] Create a pull request in solc-bin and merge.
@@ -101,7 +103,7 @@ At least a day before the release:
101103
- [ ] Increment the version number, create a pull request for that, merge it after tests succeeded.
102104
- [ ] Create a tag using `git tag --annotate v$VERSION` and push it with `git push --tags`.
103105
- [ ] Wait for the CI runs on the tag itself.
104-
- [ ] Take the `solc-x.y.z.tgz` artifact from `build-package` run on the tagged commit in circle-ci.
106+
- [ ] Take the `solc-x.y.z.tgz` artifact from `build-package` run on the tagged commit on Circle CI.
105107
Inspect the tarball to ensure that it contains an up-to-date compiler binary (`soljson.js`).
106108
- [ ] Run `npm publish solc-x.y.z.tgz` to publish the newly created tarball.
107109

@@ -116,9 +118,37 @@ At least a day before the release:
116118
- [ ] Announce on [Fosstodon](https://fosstodon.org/@solidity/), including links to the release and the blog post.
117119
- [ ] Share the announcement on Reddit in [`/r/ethdev`](https://reddit.com/r/ethdev/), cross-posted to [`/r/ethereum`](https://reddit.com/r/ethereum/).
118120
- [ ] Share the announcement on the [Solidity forum](https://forum.soliditylang.org) in the `Announcements` category.
119-
- [ ] Share the announcement on [Project Updates](https://discord.com/channels/420394352083337236/798974456704925696)
120-
- [ ] Share the announcement on [`#solidity` channel on Matrix](https://matrix.to/#/#ethereum_solidity:gitter.im)
121-
- [ ] Share the announcement on [`#solc-tooling`](https://matrix.to/#/#solc-tooling:matrix.org)
121+
- [ ] Share the announcement on [`#solidity` channel on Matrix](https://matrix.to/#/#ethereum_solidity:gitter.im).
122+
- [ ] Share the announcement on [`#solc-tooling`](https://matrix.to/#/#solc-tooling:matrix.org).
122123
- [ ] If anything went wrong this time, mention it in [Learning from Past Releases](https://notes.argot.org/@solidity-release-mistakes).
123124
- [ ] Bump vendored dependencies.
124125
- [ ] Lean back, wait for bug reports and repeat from step 1 :).
126+
127+
## Prerelease
128+
- [ ] Check that all tests on the latest commit on `develop` or `breaking` branch (whichever was chosen for the prerelease) are green.
129+
- [ ] Create a [release on GitHub](https://github.com/argotorg/solidity/releases/new).
130+
- Set the target to the `develop` or `breaking` branch and the tag to the new version with a prerelease suffix, e.g. `v0.8.5-pre.6`.
131+
Version matches the next release (`develop`) or the next breaking release (`breaking`).
132+
The prerelease number in the suffix is 1-based, sequential, resets after a full release and is counted separately for `develop` and `breaking`.
133+
- Include the following warning: `**The release is still in progress. You may see broken links and binaries may not yet be available from all sources.**`.
134+
- Include the current, incomplete changelog.
135+
- Check the `Set as a pre-release` box.
136+
- Click the `Publish release` button on the release page, creating the tag.
137+
- [ ] Wait for the CI runs on the tag itself.
138+
- [ ] Switch to the tag that archives have to be created for.
139+
- [ ] Create the `prerelease.txt` file: `scripts/prerelease_suffix.sh pre "$(git describe --tags --exact-match)" > prerelease.txt`.
140+
- [ ] Run `scripts/create_source_tarball.sh` to create the source tarball. This will create the tarball in a directory called `upload`.
141+
- [ ] Take the tarball from the upload directory (its name should be `solidity_x.x.x-pre.N.tar.gz`, if `prerelease.txt` was created correctly) and upload it to the release page.
142+
- [ ] Take the `github-binaries.tar` tarball from `c_release_binaries` run of the tagged commit on Circle CI and add all binaries from it to the release page.
143+
Make sure it contains four binaries: `solc-windows.exe`, `solc-macos`, `solc-static-linux` and `soljson.js`.
144+
- [ ] Take the `solc-bin-binaries.tar` tarball from `c_release_binaries` run of the tagged commit on Circle CI and add all binaries from it to solc-bin.
145+
- [ ] Run `npm install` if you've got a clean checkout of the solc-bin repo.
146+
- [ ] Run `npm 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/`.
147+
- [ ] Create a pull request in solc-bin and merge.
148+
- [ ] Remove "still in progress" warning from the [release notes](https://github.com/argotorg/solidity/releases).
149+
- [ ] Mention it on [Twitter](https://twitter.com/solidity_lang).
150+
- [ ] Mention it on [Fosstodon](https://fosstodon.org/@solidity/).
151+
- [ ] Mention it on [`#solidity` channel on Matrix](https://matrix.to/#/#ethereum_solidity:gitter.im).
152+
- [ ] Mention it on [`#solc-tooling`](https://matrix.to/#/#solc-tooling:matrix.org).
153+
- [ ] If anything went wrong this time, mention it in [Learning from Past Releases](https://notes.argot.org/@solidity-release-mistakes).
154+
- [ ] Lean back, wait for bug reports and repeat from step 1 :).

docs/installing-solidity.rst

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@ addition, patch-level releases with major release 0 (i.e. 0.x.y) will not
1414
contain breaking changes. That means code that compiles with version 0.x.y
1515
can be expected to compile with 0.x.z where z > y.
1616

17-
In addition to releases, we provide **nightly development builds** to make
18-
it easy for developers to try out upcoming features and
19-
provide early feedback. Note, however, that while the nightly builds are usually
20-
very stable, they contain bleeding-edge code from the development branch and are
21-
not guaranteed to be always working. Despite our best efforts, they might
22-
contain undocumented and/or broken changes that will not become a part of an
23-
actual release. They are not meant for production use.
17+
In addition to releases, we provide **prereleases** and **nightly development builds** to make it
18+
easy for developers to try out upcoming features and provide early feedback.
19+
Note that such builds contain bleeding-edge code from the development branch and are not guaranteed
20+
to be of the same quality as full releases.
21+
Despite our best efforts, they might contain undocumented and/or broken changes that will not
22+
become a part of an actual release. They are not meant for production use.
2423

2524
When deploying contracts, you should use the latest released version of Solidity. This
2625
is because breaking changes, as well as new features and bug fixes are introduced regularly.
@@ -544,7 +543,7 @@ The Version String in Detail
544543
The Solidity version string contains four parts:
545544

546545
- the version number
547-
- pre-release tag, usually set to ``develop.YYYY.MM.DD`` or ``nightly.YYYY.MM.DD``
546+
- pre-release tag, usually set to ``develop.YYYY.MM.DD``, ``pre.N`` or ``nightly.YYYY.MM.DD``
548547
- commit in the format of ``commit.GITHASH``
549548
- platform, which has an arbitrary number of items, containing details about the platform and compiler
550549

@@ -553,24 +552,26 @@ If there are local modifications, the commit will be postfixed with ``.mod``.
553552
These parts are combined as required by SemVer, where the Solidity pre-release tag equals to the SemVer pre-release
554553
and the Solidity commit and platform combined make up the SemVer build metadata.
555554

556-
A release example: ``0.4.8+commit.60cc1668.Emscripten.clang``.
555+
Examples:
557556

558-
A pre-release example: ``0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang``
557+
- release: ``0.4.8+commit.60cc1668.Emscripten.clang``
558+
- pre-release: ``0.4.9-pre.3+commit.fb60450bc.Emscripten.clang``
559+
- nightly build: ``0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang``
559560

560561
Important Information About Versioning
561562
======================================
562563

563564
After a release is made, the patch version level is bumped, because we assume that only
564565
patch level changes follow. When changes are merged, the version should be bumped according
565566
to SemVer and the severity of the change. Finally, a release is always made with the version
566-
of the current nightly build, but without the ``prerelease`` specifier.
567+
of the current build, but without the ``prerelease`` specifier.
567568

568569
Example:
569570

570571
1. The 0.4.0 release is made.
571-
2. The nightly build has a version of 0.4.1 from now on.
572+
2. Nightly builds and preerelases have a version of 0.4.1 from now on.
572573
3. Non-breaking changes are introduced --> no change in version.
573574
4. A breaking change is introduced --> version is bumped to 0.5.0.
574575
5. The 0.5.0 release is made.
575576

576-
This behavior works well with the :ref:`version pragma <version_pragma>`.
577+
This behavior works well with the :ref:`version pragma <version_pragma>`.

0 commit comments

Comments
 (0)