Skip to content

Add CheckMetadataHash signed extension #799

Add CheckMetadataHash signed extension

Add CheckMetadataHash signed extension #799

Workflow file for this run

name: build and test notee client and node
on:
workflow_dispatch:
push:
branches: [ master, sgx-master ]
tags:
- '[0-9]+.[0-9]+.[0-9]+'
pull_request:
branches: [ master, sgx-master ]
# schedule:
# - cron: '42 3 * * *'
env:
CARGO_TERM_COLOR: always
IPFS_ADD_URL: "https://ipfs.infura.io:5001/api/v0/add"
IPFS_API_KEY: ${{ secrets.IPFS_API_KEY }}
ENCOINTER_CLIENT: "../target/release/encointer-client-notee"
VERBOSE: ${{ github.events.input.verbose }}
SUBWASM_VERSION: 0.14.1
jobs:
cancel_previous_runs:
name: Cancel Previous Runs
runs-on: ubuntu-20.04
steps:
- uses: styfle/[email protected]
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install protoc
run: sudo apt-get install protobuf-compiler
# With rustup's nice new toml format, we just need to run rustup show to install the toolchain
# https://github.com/actions-rs/toolchain/issues/126#issuecomment-782989659
- name: Setup Rust toolchain
run: rustup show
- name: Cache Rust Dependecies
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
enclave/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: cargo build --release
- name: Upload node
uses: actions/upload-artifact@v3
with:
name: encointer-node-notee-${{ github.sha }}
path: target/release/encointer-node-notee
- name: Upload CLI client
uses: actions/upload-artifact@v3
with:
name: encointer-client-notee-${{ github.sha }}
path: target/release/encointer-client-notee
build-try-runtime-and-benchmarks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install protoc
run: sudo apt-get install protobuf-compiler
# With rustup's nice new toml format, we just need to run rustup show to install the toolchain
# https://github.com/actions-rs/toolchain/issues/126#issuecomment-782989659
- name: Setup Rust toolchain
run: rustup show
- name: Cache Rust Dependecies
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
enclave/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: cargo build --release --features try-runtime,runtime-benchmarks
- name: Upload node
uses: actions/upload-artifact@v3
with:
name: encointer-node-notee-try-runtime-and-benchmarks-${{ github.sha }}
path: target/release/encointer-node-notee
- name: Upload CLI client
uses: actions/upload-artifact@v3
with:
name: encointer-client-notee-try-runtime-and-benchmarks-${{ github.sha }}
path: target/release/encointer-client-notee
build-runtimes:
name: Build Runtimes
runs-on: ubuntu-latest
strategy:
matrix:
runtime: ["encointer-node-notee"]
steps:
- uses: actions/checkout@v3
- name: Cache target dir
uses: actions/cache@v3
with:
path: "${{ github.workspace }}/runtime/target"
key: srtool-target-${{ matrix.runtime }}-${{ github.sha }}
restore-keys: |
srtool-target-${{ matrix.runtime }}-
srtool-target-
- name: Srtool build
id: srtool_build
uses: chevdor/[email protected]
with:
image: paritytech/srtool
tag: 1.74.0
chain: ${{ matrix.runtime }}
runtime_dir: runtime
- name: Summary
run: |
echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.runtime }}-srtool-digest.json
cat ${{ matrix.runtime }}-srtool-digest.json
echo "Compact Runtime: ${{ steps.srtool_build.outputs.wasm }}"
echo "Compressed Runtime: ${{ steps.srtool_build.outputs.wasm_compressed }}"
# We now get extra information thanks to subwasm
- name: Install subwasm
run: |
wget https://github.com/chevdor/subwasm/releases/download/v${{ env.SUBWASM_VERSION }}/subwasm_linux_amd64_v${{ env.SUBWASM_VERSION }}.deb
sudo dpkg -i subwasm_linux_amd64_v${{ env.SUBWASM_VERSION }}.deb
subwasm --version
- name: Show Runtime information
shell: bash
run: |
subwasm info ${{ steps.srtool_build.outputs.wasm }}
subwasm info ${{ steps.srtool_build.outputs.wasm_compressed }}
subwasm --json info ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-info.json
subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-compressed-info.json
- name: Extract the metadata
shell: bash
run: |
subwasm meta ${{ steps.srtool_build.outputs.wasm }}
subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json
# This is unsupported it wants to diff the metadata with a running chain. i.e. wss://kusama-<matrix.chain>-rpc.parity.io
# - name: Check the metadata diff
# shell: bash
# run: |
# subwasm diff ${{ steps.srtool_build.outputs.wasm }} --chain-b ${{ matrix.chain }} > ${{ matrix.chain }}-diff.txt
# cat ${{ matrix.chain }}-diff.txt
- name: Upload ${{ matrix.runtime }} srtool json
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.runtime }}-srtool-json-${{ github.sha }}
path: |
${{ matrix.runtime }}-srtool-digest.json
${{ matrix.runtime }}-info.json
${{ matrix.runtime }}-compressed-info.json
${{ matrix.runtime }}-metadata.json
# ${{ matrix.runtime }}-diff.txt
- name: Upload ${{ matrix.runtime }} runtime
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.runtime }}-runtime-${{ github.sha }}
path: |
${{ steps.srtool_build.outputs.wasm }}
${{ steps.srtool_build.outputs.wasm_compressed }}
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install protoc
run: sudo apt-get install protobuf-compiler
# With rustup's nice new toml format, we just need to run rustup show to install the toolchain
# https://github.com/actions-rs/toolchain/issues/126#issuecomment-782989659
- name: Setup Rust toolchain
run: rustup show
- name: Cache Rust Dependecies
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
enclave/target
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
- name: cargo test
run: cargo test --all
check:
name: Rust check ${{ matrix.check }} (${{ matrix.rust-target }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest ]
rust: [ stable ]
rust-target: [ x86_64-unknown-linux-gnu ]
check: [ +nightly fmt --all -- --check, clippy -p encointer-client-notee ]
env:
RUST_BACKTRACE: full
RUSTV: ${{ matrix.rust }}
TARGET: ${{ matrix.rust-target }}
steps:
- name: Install nightly toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt
- name: Checkout
uses: actions/checkout@v3
- name: Install protoc
run: sudo apt-get install protobuf-compiler
# With rustup's nice new toml format, we just need to run rustup show to install the toolchain
# https://github.com/actions-rs/toolchain/issues/126#issuecomment-782989659
- name: Setup Rust toolchain
run: rustup show
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.rust-target }}-${{ matrix.check }}
- name: ${{ matrix.check }}
run: cargo ${{ matrix.check }}
cargo-toml-fmt:
runs-on: ubuntu-latest
container: "tamasfe/taplo:0.7.0-alpine"
steps:
- uses: actions/checkout@v3
- name: Run Taplo fmt
run: taplo fmt --check
- name: Fail-fast; cancel other jobs
if: failure()
uses: andymckay/[email protected]
integration-test:
name: ${{ matrix.test }}
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
test: [ test_bootstrap_demo_community.sh, test_bot_community.sh, test_register_business.sh ]
steps:
- uses: actions/checkout@v3
- name: download build artifacts
uses: actions/download-artifact@v3
with:
name: encointer-node-notee-${{ github.sha }}
- name: download build artifacts
uses: actions/download-artifact@v3
with:
name: encointer-client-notee-${{ github.sha }}
- name: fix permissions of artifacts and move to original folder
run: |
chmod +x encointer-node-notee
chmod +x encointer-client-notee
mkdir -p target/release
mv encointer-*-notee target/release
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.7
- name: install py dependencies
run: ./scripts/install_python_deps.sh
- name: Set up ipfs
uses: ibnesayeed/setup-ipfs@master
with:
run_daemon: true
- name: start dev node
run:
./target/release/encointer-node-notee --tmp --dev --enable-offchain-indexing true --rpc-methods unsafe &
- name: start faucet service
run: |
cd client
python faucet.py &
- name: start phase accelerator service
run: |
cd client
python phase.py --idle-blocks 3 &
- name: Test ${{ matrix.test }}
working-directory: ./scripts/ci
run: source ./init_env.sh && ./${{ matrix.test }}
release:
name: Draft Release
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs: [build, unit-tests, check, integration-test]
outputs:
release_url: ${{ steps.create-release.outputs.html_url }}
asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
steps:
- uses: actions/checkout@v3
- name: Download Encointer Node
uses: actions/download-artifact@v3
with:
name: encointer-node-notee-${{ github.sha }}
- name: Download Encointer Client
uses: actions/download-artifact@v3
with:
name: encointer-client-notee-${{ github.sha }}
- name: Create required package.json
run: test -f package.json || echo '{}' >package.json
- name: Changelog
uses: scottbrenner/generate-changelog-action@master
id: Changelog
- name: Display structure of downloaded files
run: ls -R
working-directory: .
- name: Release
id: create-release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
body: |
${{ steps.Changelog.outputs.changelog }}
draft: true
files: |
encointer-node-notee
encointer-client-notee
publish-runtimes:
name: Publish Runtimes
runs-on: ubuntu-latest
needs: [release, build-runtimes]
strategy:
matrix:
runtime: ["encointer-node-notee"]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
- name: Set up Ruby 3
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
- name: Get runtime version
id: get-runtime-ver
run: |
ls
ls "${{ matrix.runtime }}-runtime-${{ github.sha }}"
runtime_ver="$(ruby -e 'require "./scripts/github/lib.rb"; puts get_runtime()')"
echo "Found version: >$runtime_ver<"
echo "runtime_ver={$runtime_ver}" >> $GITHUB_OUTPUT
- name: Upload compact ${{ matrix.runtime }} wasm
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.asset_upload_url }}
asset_path: "${{ matrix.runtime }}-runtime-${{ github.sha }}/encointer_node_notee_runtime.compact.wasm"
asset_name: encointer_node_notee_runtime-v${{ steps.get-runtime-ver.outputs.runtime_ver }}.compact.wasm
asset_content_type: application/wasm
- name: Upload compressed ${{ matrix.runtime }} wasm
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.asset_upload_url }}
asset_path: "${{ matrix.runtime }}-runtime-${{ github.sha }}/encointer_node_notee_runtime.compact.compressed.wasm"
asset_name: encointer_node_notee_runtime-v${{ steps.get-runtime-ver.outputs.runtime_ver }}.compact.compressed.wasm
asset_content_type: application/wasm