Show binary releases details on resolc-bin GH Pages site (#447)

## Description

For more easily finding the details of the resolc binary releases for
the various supported platforms, the plain JSON information will be
displayed on [resolc-bin](https://github.com/paritytech/resolc-bin)'s
[GitHub Pages website](https://paritytech.github.io/resolc-bin/).

Changes:
* Whenever there is a regular or nightly release:
* The corresponding workflow files will run a script to update
resolc-bin's `index.md` file (new file) with the updated JSON.
* `index.md` will be the file GitHub Pages serves as HTML (by default it
is built with Jekyll and the Markdown is processed by kramdown, hence
the syntax seen in the script).
* Documentation  updates

Thus, this will run on the next nightly release after this PR is merged.

## Resolved Issues

Closes #443

---------

Co-authored-by: xermicus <cyrill@parity.io>
This commit is contained in:
LJandxermicus authored and GitHub committed 2026-01-12 18:32:40 +01:00
1 parent 81ce306735
commit 55c4e32b82
11 files changed
+174 -14

No files matched your search

+155
View File
@@ -0,0 +1,155 @@
#!/bin/bash
# This script updates `index.md` in the GitHub Pages root directory provided
# by the required argument to be passed. The file will be updated to simply
# render the `resolc-bin` JSON data for each of the supported platforms.
# `index.md` is the file served by GitHub Pages after being built by Jekyll
# and the Markdown processed by kramdown.
set -exo pipefail
gh_pages_root_dir="$1"
if [ -z "$gh_pages_root_dir" ]; then
echo "Error: The path to the GitHub Pages root directory must be passed"
exit 1
fi
linux="$gh_pages_root_dir/linux/list.json"
macos="$gh_pages_root_dir/macos/list.json"
wasm="$gh_pages_root_dir/wasm/list.json"
windows="$gh_pages_root_dir/windows/list.json"
nightly_linux="$gh_pages_root_dir/nightly/linux/list.json"
nightly_macos="$gh_pages_root_dir/nightly/macos/list.json"
nightly_wasm="$gh_pages_root_dir/nightly/wasm/list.json"
nightly_windows="$gh_pages_root_dir/nightly/windows/list.json"
build_info_files=("$linux" "$macos" "$wasm" "$windows" "$nightly_linux"
"$nightly_macos" "$nightly_wasm" "$nightly_windows")
for file in "${build_info_files[@]}"; do
if [ ! -f "$file" ]; then
echo "Error: File does not exist - $file"
exit 1
fi
done
# Sort the data by version in descending order.
sort_by_version_descending() {
local build_info_file="$1"
if [ -z "$build_info_file" ]; then
echo "Error: A file path argument is required for sorting"
return 1
fi
# Load the data and sort builds and releases with the latest version first.
data=$(jq '.' "$build_info_file")
sorted_data=$(echo "$data" | jq '.builds = (.builds | sort_by(.version) | reverse) |
.releases = (.releases | to_entries | sort_by(.key) | reverse | from_entries)')
echo "$sorted_data" | jq .
}
echo "Updating GitHub Pages index.md file..."
cat > "$gh_pages_root_dir/index.md" << EOF
---
title: resolc-bin
---
# resolc-bin
Listed here are details about the \`resolc\` binary releases for the supported platforms.
The information is synced with the [resolc-bin GitHub repository](https://github.com/paritytech/resolc-bin).
## Linux
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $linux)
{% endhighlight %}
</details>
## MacOS
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $macos)
{% endhighlight %}
</details>
## Wasm
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $wasm)
{% endhighlight %}
</details>
## Windows
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $windows)
{% endhighlight %}
</details>
## Nightly
### Linux
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $nightly_linux)
{% endhighlight %}
</details>
### MacOS
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $nightly_macos)
{% endhighlight %}
</details>
### Wasm
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $nightly_wasm)
{% endhighlight %}
</details>
### Windows
<details>
<summary>See builds</summary>
{% highlight json %}
$(sort_by_version_descending $nightly_windows)
{% endhighlight %}
</details>
EOF
echo "File has been updated!"
+1 -1
View File
@@ -37,6 +37,6 @@ jobs:
- name: Compare with committed docs
run: |
if ! diff -r docs-tmp docs 2>/dev/null; then
echo "docs/ is not up-to-date. Run make test-book and commit the docs/ directory"
echo "docs/ is not up-to-date. Run \`make book\` and commit the docs/ directory"
exit 1
fi
+4
View File
@@ -47,6 +47,10 @@ jobs:
cd resolc-bin
python ../tmp/.github/scripts/json_generator.py ${GITHUB_REPOSITORY} ${{ github.event.release.tag_name }}
# Update GitHub Pages file with the JSON data.
chmod +x ../tmp/.github/scripts/resolc-bin-gh-pages.sh
bash ../tmp/.github/scripts/resolc-bin-gh-pages.sh $PWD
echo "${Green}Add new remote with gh app token${NC}"
git remote set-url origin $(git config remote.origin.url | sed "s/github.com/${APP_NAME}:${TOKEN}@github.com/g")
+5 -1
View File
@@ -142,6 +142,10 @@ jobs:
cd nightly
python3 ../../revive/.github/scripts/json_generator_nightly.py
cd ..
# Update GitHub Pages file with the JSON data.
chmod +x ../revive/.github/scripts/resolc-bin-gh-pages.sh
bash ../revive/.github/scripts/resolc-bin-gh-pages.sh $PWD
git status
echo "${Green}Add new remote with gh app token${NC}"
@@ -154,7 +158,7 @@ jobs:
git config user.email "ci@parity.io"
git config user.name "${APP_NAME}"
git add nightly/
git add nightly/ index.md
git commit -m "Update nightly json"
git push origin main
+1 -2
View File
@@ -21,7 +21,7 @@ Building Solidity contracts for PolkaVM requires installing the following two co
### `resolc` binary releases
`resolc` is distributed as a standalone binary (with `solc` as the only external dependency). Please download one of our [binary releases](https://github.com/paritytech/revive/releases) for your target platform and mind the platform specific instructions below. We also provide [nightly builds](https://github.com/paritytech/resolc-bin/tree/main/nightly).
`resolc` is distributed as a standalone binary (with `solc` as the only external dependency). Please download one of our [binary releases](https://github.com/paritytech/revive/releases) for your target platform and mind the platform specific instructions below. We also provide [nightly builds](https://paritytech.github.io/resolc-bin/#nightly).
<details>
<summary>MacOS users</summary>
@@ -106,4 +106,3 @@ Please consult the [Developer Guide](https://paritytech.github.io/revive/develop
The revive compiler project, after some early experiments with EVM bytecode translations, decided to fork the `era-compiler` framework.
[Frontend](https://github.com/matter-labs/era-compiler-solidity), [code generator](https://github.com/matter-labs/era-compiler-llvm-context) and some supporting libraries are based of ZKSync `zksolc`. I'd like to express my gratitude and thank the original authors for providing a useable code base under a generous license.
+2 -2
View File
@@ -14,8 +14,8 @@ To create a new pre-release:
4. The release workflow will attempt to build and publish a new pre-release if the latest tag does match the cargo package version.
5. Wait for the `Release` workflow to finish. It should create the pre-release with the same name.
6. Check that pre-release was created on the [Releases page](https://github.com/paritytech/revive/releases) with all artifacts.
7. After the release is published, another workflow should start automatically and update json files in https://github.com/paritytech/resolc-bin. Check the changes.
8. Update the [contract-docs](https://github.com/paritytech/contract-docs/) accordingly
7. After the release is published, another workflow should start automatically and update JSON files in the [resolc-bin repository](https://github.com/paritytech/resolc-bin) as well as render the JSON on its [GitHub Pages website](https://paritytech.github.io/resolc-bin/). Check the changes.
8. Update the [revive compiler book](https://github.com/paritytech/revive/tree/main/book) accordingly.
# `resolc` NPM package release
+1 -2
View File
@@ -16,7 +16,7 @@ See above, the same applies.
We generally recommend to always use the latest supported version to profit from latest bugfixes, features and performance improvements.
Find out about the latest supported version by running `resolc --supported-solc-versions` or checking [here](https://github.com/paritytech/resolc-bin).
Find out about the latest supported version by running `resolc --supported-solc-versions` or checking [here](https://paritytech.github.io/resolc-bin/).
## Tool `XY` says the contract size is larger than 24kb and will fail to deploy?
@@ -25,4 +25,3 @@ The 24kb code size restriction only exist for the EVM. Our limit is currently ar
## Is `resolc` a drop-in replacement for `solc`?
No. `resolc` aims to work similarly to `solc`, but it's not considered a drop-in replacement.
+1 -2
View File
@@ -7,7 +7,7 @@ Building Solidity contracts for PolkaVM requires installing the following two co
## `resolc` binary releases
`resolc` is supported an all major operating systems and installation is straightforward.
Please find our [binary releases](https://github.com/paritytech/revive/releases) for the following platforms:
Please find our [binary releases](https://paritytech.github.io/resolc-bin/) for the following platforms:
- Linux (MUSL)
- MacOS (universal)
- Windows
@@ -24,4 +24,3 @@ We distribute the revive compiler as [node.js module](https://github.com/parityt
## Buidling `resolc` from source
Please follow the build [instructions in the revive `README.md`](https://github.com/paritytech/revive?tab=readme-ov-file#building-from-source).
+1 -1
View File
@@ -183,7 +183,7 @@
<p>See above, the same applies.</p>
<h2 id="in-what-solidity-version-should-i-write-my-dapp"><a class="header" href="#in-what-solidity-version-should-i-write-my-dapp">In what Solidity version should I write my dApp?</a></h2>
<p>We generally recommend to always use the latest supported version to profit from latest bugfixes, features and performance improvements.</p>
<p>Find out about the latest supported version by running <code>resolc --supported-solc-versions</code> or checking <a href="https://github.com/paritytech/resolc-bin">here</a>.</p>
<p>Find out about the latest supported version by running <code>resolc --supported-solc-versions</code> or checking <a href="https://paritytech.github.io/resolc-bin/">here</a>.</p>
<h2 id="tool-xy-says-the-contract-size-is-larger-than-24kb-and-will-fail-to-deploy"><a class="header" href="#tool-xy-says-the-contract-size-is-larger-than-24kb-and-will-fail-to-deploy">Tool <code>XY</code> says the contract size is larger than 24kb and will fail to deploy?</a></h2>
<p>The 24kb code size restriction only exist for the EVM. Our limit is currently around 1mb and may increase further in the future.</p>
<h2 id="is-resolc-a-drop-in-replacement-for-solc"><a class="header" href="#is-resolc-a-drop-in-replacement-for-solc">Is <code>resolc</code> a drop-in replacement for <code>solc</code>?</a></h2>
+2 -2
View File
@@ -202,7 +202,7 @@
</ul>
<h2 id="resolc-binary-releases"><a class="header" href="#resolc-binary-releases"><code>resolc</code> binary releases</a></h2>
<p><code>resolc</code> is supported an all major operating systems and installation is straightforward.
Please find our <a href="https://github.com/paritytech/revive/releases">binary releases</a> for the following platforms:</p>
Please find our <a href="https://paritytech.github.io/resolc-bin/">binary releases</a> for the following platforms:</p>
<ul>
<li>Linux (MUSL)</li>
<li>MacOS (universal)</li>
@@ -645,7 +645,7 @@ make test-wasm
<p>See above, the same applies.</p>
<h2 id="in-what-solidity-version-should-i-write-my-dapp"><a class="header" href="#in-what-solidity-version-should-i-write-my-dapp">In what Solidity version should I write my dApp?</a></h2>
<p>We generally recommend to always use the latest supported version to profit from latest bugfixes, features and performance improvements.</p>
<p>Find out about the latest supported version by running <code>resolc --supported-solc-versions</code> or checking <a href="https://github.com/paritytech/resolc-bin">here</a>.</p>
<p>Find out about the latest supported version by running <code>resolc --supported-solc-versions</code> or checking <a href="https://paritytech.github.io/resolc-bin/">here</a>.</p>
<h2 id="tool-xy-says-the-contract-size-is-larger-than-24kb-and-will-fail-to-deploy"><a class="header" href="#tool-xy-says-the-contract-size-is-larger-than-24kb-and-will-fail-to-deploy">Tool <code>XY</code> says the contract size is larger than 24kb and will fail to deploy?</a></h2>
<p>The 24kb code size restriction only exist for the EVM. Our limit is currently around 1mb and may increase further in the future.</p>
<h2 id="is-resolc-a-drop-in-replacement-for-solc"><a class="header" href="#is-resolc-a-drop-in-replacement-for-solc">Is <code>resolc</code> a drop-in replacement for <code>solc</code>?</a></h2>
+1 -1
View File
@@ -182,7 +182,7 @@
</ul>
<h2 id="resolc-binary-releases"><a class="header" href="#resolc-binary-releases"><code>resolc</code> binary releases</a></h2>
<p><code>resolc</code> is supported an all major operating systems and installation is straightforward.
Please find our <a href="https://github.com/paritytech/revive/releases">binary releases</a> for the following platforms:</p>
Please find our <a href="https://paritytech.github.io/resolc-bin/">binary releases</a> for the following platforms:</p>
<ul>
<li>Linux (MUSL)</li>
<li>MacOS (universal)</li>