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