Release koi-6800
(#1629)
#195
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
push: | |
tags: | |
- "v*" | |
- "koi*" | |
env: | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
CARGO_TERM_COLOR: always | |
DOCKER_REGISTRY: ghcr.io | |
GOMPLATE_VERSION: v3.11.6 | |
GOMPLATE: gomplate_linux-amd64 | |
GOMPLATE_URL: https://github.com/hairyhenderson/gomplate/releases/download | |
RUST_BACKTRACE: full | |
RUST_TOOLCHAIN: 1.74.0 | |
# Set this to true for CI testing purposes only. | |
# SKIP_BUILD: true | |
jobs: | |
build-nodes: | |
name: Build nodes | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node: | |
- network: mainnet | |
features: darwinia-runtime,crab-runtime | |
bz2: true | |
- network: mainnet | |
features: darwinia-runtime,crab-runtime,evm-tracing | |
type: tracing | |
- network: testnet | |
features: koi-runtime | |
bz2: true | |
- network: testnet | |
features: koi-runtime,evm-tracing | |
type: tracing | |
steps: | |
- name: Free disk space | |
if: ${{ env.SKIP_BUILD != 'true' }} | |
uses: jlumbroso/free-disk-space@main | |
with: | |
tool-cache: true | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: false | |
docker-images: true | |
swap-storage: false | |
- name: Set swap space | |
if: ${{ env.SKIP_BUILD != 'true' }} | |
uses: pierotofy/set-swap-space@master | |
with: | |
swap-size-gb: 8 | |
- name: Fetch latest code | |
uses: actions/checkout@v4 | |
- name: Build mainnet node | |
if: ${{ startsWith(github.ref, 'refs/tags/v') && (matrix.node.network == 'mainnet') }} | |
uses: ./.github/actions/build | |
with: | |
features: ${{ matrix.node.features }} | |
suffix: ${{ matrix.node.type }} | |
enable_tar_bz2: ${{ matrix.node.bz2 }} | |
skip-build: ${{ env.SKIP_BUILD }} | |
- name: Build testnet node | |
if: ${{ startsWith(github.ref, 'refs/tags/koi') && (matrix.node.network == 'testnet') }} | |
uses: ./.github/actions/build | |
with: | |
features: ${{ matrix.node.features }} | |
suffix: ${{ matrix.node.type }} | |
enable_tar_bz2: ${{ matrix.node.bz2 }} | |
skip-build: ${{ env.SKIP_BUILD }} | |
- name: Upload node | |
uses: actions/upload-artifact@v4 | |
with: | |
name: darwinia${{ matrix.node.type != '' && format('-{0}', matrix.node.type) || '' }} | |
path: build | |
retention-days: 1 | |
- name: Fail fast | |
uses: vishnudxb/[email protected] | |
if: failure() | |
with: | |
repo: darwinia-network/darwinia | |
workflow_id: ${{ github.run_id }} | |
access_token: ${{ github.token }} | |
build-runtimes: | |
name: Build runtimes | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
runtime: | |
- name: darwinia | |
type: mainnet | |
- name: crab | |
type: mainnet | |
- name: koi | |
type: testnet | |
steps: | |
- name: Fetch latest code | |
uses: actions/checkout@v4 | |
- name: Setup gomplate | |
run: | | |
curl -LO ${{ env.GOMPLATE_URL }}/${{ env.GOMPLATE_VERSION }}/${{ env.GOMPLATE }} | |
chmod u+x ${{ env.GOMPLATE }} | |
sudo mv ${{ env.GOMPLATE }} /usr/bin/gomplate | |
- name: Setup wuh | |
run: | | |
curl -LO https://github.com/darwinia-network/darwinia-release/releases/download/v0.1.0/wuh.zst | |
zstd -d wuh.zst | |
chmod u+x ./wuh | |
sudo mv ./wuh /usr/bin/wuh | |
- name: Filter | |
run: | | |
SKIP_BUILD=${{ env.SKIP_BUILD }} | |
IS_MAINNET=${{ matrix.runtime.type == 'mainnet' && startsWith(github.ref, 'refs/tags/v') }} | |
IS_TESTNET=${{ matrix.runtime.type == 'testnet' && startsWith(github.ref, 'refs/tags/koi') }} | |
echo "IS_MAINNET='$IS_MAINNET'" >> $GITHUB_ENV | |
echo "IS_TESTNET='$IS_TESTNET'" >> $GITHUB_ENV | |
if [[ "$SKIP_BUILD" != "true" && ( "$IS_MAINNET" == "true" || "$IS_TESTNET" == "true" ) ]] ; then | |
echo "FILTER=true" >> $GITHUB_ENV | |
fi | |
- name: Build ${{ matrix.runtime.name }} runtime | |
id: srtool_build | |
if: ${{ env.FILTER == 'true' }} | |
uses: chevdor/[email protected] | |
env: | |
BUILD_OPTS: --features=on-chain-release-build | |
with: | |
image: paritytech/srtool | |
tag: "1.74.0" | |
chain: ${{ matrix.runtime.name }} | |
- name: Prepare runtime | |
run: | | |
IS_MAINNET=${{ env.IS_MAINNET }} | |
IS_TESTNET=${{ env.IS_TESTNET }} | |
FILTER=${{ env.FILTER }} | |
export CHAIN=${{ matrix.runtime.name }} | |
echo $CHAIN | |
mkdir -p build | |
if [ "$FILTER" == "true" ]; then | |
echo '${{ steps.srtool_build.outputs.json }}' | jq > build/${CHAIN}-srtool.json | |
WASM_FILE='${{ steps.srtool_build.outputs.wasm_compressed }}' | |
WHITELIST_PALLET_INDEX=0x33 | |
if [ "$CHAIN" == "crab" ]; then | |
WHITELIST_PALLET_INDEX=0x2f | |
fi | |
export WHITELIST_HASH=$(wuh ${WASM_FILE} ${WHITELIST_PALLET_INDEX} 0x01) | |
mv ${WASM_FILE} build/ | |
cat .github/note-template/runtime.md \ | |
| gomplate -d srtool=build/${CHAIN}-srtool.json \ | |
> build/runtime.md | |
elif [[ "$IS_MAINNET" == "true" || "$IS_TESTNET" == "true" ]]; then | |
echo SKIP_BUILD > build/${CHAIN}-srtool.json | |
echo SKIP_BUILD > build/${CHAIN}_runtime.compact.compressed.wasm | |
echo SKIP_BUILD > build/runtime.md | |
fi | |
- name: Upload ${{ matrix.runtime.name }} runtime | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.runtime.name }}-runtime | |
path: build | |
retention-days: 1 | |
- name: Fail fast | |
uses: vishnudxb/[email protected] | |
if: failure() | |
with: | |
repo: darwinia-network/darwinia | |
workflow_id: ${{ github.run_id }} | |
access_token: ${{ github.token }} | |
publish-docker-image: | |
name: Publish Docker image | |
runs-on: ubuntu-latest | |
needs: [build-nodes] | |
steps: | |
- name: Fetch Dockerfile | |
uses: actions/checkout@v4 | |
- name: Download node | |
uses: actions/download-artifact@v4 | |
- name: Extract node | |
run: | | |
mkdir -p dist | |
tar -xvf darwinia/darwinia-x86_64-linux-gnu.tar.bz2 -C dist/ | |
- name: Tag | |
uses: olegtarasov/[email protected] | |
- name: Sha | |
uses: benjlevesque/[email protected] | |
- name: Docker login | |
if: ${{ env.SKIP_BUILD != 'true' }} | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
registry: ${{ env.DOCKER_REGISTRY }} | |
- name: Publish | |
if: ${{ env.SKIP_BUILD != 'true' }} | |
uses: docker/build-push-action@v5 | |
with: | |
push: true | |
context: . | |
file: .maintain/docker/Dockerfile | |
tags: ${{ env.DOCKER_REGISTRY }}/${{ github.repository }}:sha-${{ env.SHA }} | |
- name: Publish with tag | |
if: ${{ env.SKIP_BUILD != 'true' }} | |
uses: docker/build-push-action@v5 | |
with: | |
push: true | |
context: . | |
file: .maintain/docker/Dockerfile | |
tags: ${{ env.DOCKER_REGISTRY }}/${{ github.repository }}:${{ env.GIT_TAG_NAME }} | |
publish-github-release: | |
name: Publish GitHub release | |
runs-on: ubuntu-latest | |
needs: [build-nodes, build-runtimes, publish-docker-image] | |
steps: | |
- name: Fetch note template | |
uses: actions/checkout@v4 | |
- name: Download nodes and runtimes | |
uses: actions/download-artifact@v4 | |
- name: Prepare nodes and runtimes | |
run: | | |
mkdir -p deploy | |
mv *runtime/*.json deploy/ | |
mv *runtime/*.wasm deploy/ | |
mv darwinia/*.tar.* deploy/ | |
mv darwinia-tracing/*.tar.* deploy/ | |
- name: Setup gomplate | |
run: | | |
curl -LO ${{ env.GOMPLATE_URL }}/${{ env.GOMPLATE_VERSION }}/${{ env.GOMPLATE }} | |
chmod u+x ${{ env.GOMPLATE }} | |
sudo mv ${{ env.GOMPLATE }} /usr/bin/gomplate | |
- name: Tag | |
uses: olegtarasov/[email protected] | |
- name: Sha | |
uses: benjlevesque/[email protected] | |
- name: Prepare note | |
run: | | |
export RELEASE_SCHEMA='{"tag":"'$GIT_TAG_NAME'","sha":"'$SHA'"}' | |
cat .github/note-template/node.md \ | |
| gomplate -d schema='env:/RELEASE_SCHEMA?type=application/json' \ | |
> node.tmp.md | |
- name: Fill note | |
run: | | |
IS_MAINNET=${{ startsWith(github.ref, 'refs/tags/v') }} | |
if [ "$IS_MAINNET" == "true" ]; then | |
cat darwinia-runtime/runtime.md >> node.md | |
cat crab-runtime/runtime.md >> node.md | |
cat node.tmp.md >> node.md | |
else | |
cat koi-runtime/runtime.md >> node.md | |
cat node.tmp.md >> node.md | |
fi | |
- name: Hash file | |
run: cd deploy && sha256sum * | tee sha256sums.txt | |
# - name: Verify | |
# run: | | |
# set -xe | |
# cat node.md | |
# ls -la deploy/ | |
# cat build/*.md | |
- name: Publish | |
uses: softprops/action-gh-release@v2 | |
with: | |
body_path: "node.md" | |
files: | | |
deploy/* | |
generate_release_notes: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: ${{ startsWith(github.ref, 'refs/tags/koi') }} |