Fix artifact uploading (#1355) #4097
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: calamari integration test | |
on: | |
push: | |
branches: [manta] | |
pull_request: | |
branches: [manta] | |
types: [opened, reopened, synchronize, labeled] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
POLKADOT_BINARY: https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-v1.7.0/polkadot | |
POLKADOT_EXECUTE: https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-v1.7.0/polkadot-execute-worker | |
POLKADOT_PREPARE: https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-v1.7.0/polkadot-prepare-worker | |
ZOMBIENET_BINARY: https://github.com/paritytech/zombienet/releases/download/v1.3.106/zombienet-linux-x64 | |
jobs: | |
print-rust-versions: | |
if: contains(github.event.pull_request.labels.*.name, 'A-calamari') | |
runs-on: ubuntu-20.04 | |
container: | |
image: paritytech/ci-linux:production | |
outputs: | |
rustc-stable: ${{ steps.get-rust-versions.outputs.stable }} | |
rustc-nightly: ${{ steps.get-rust-versions.outputs.nightly }} | |
env: | |
CARGO_TERM_COLOR: always | |
steps: | |
- id: get-rust-versions | |
run: | | |
echo "::set-output name=stable::$(rustc +stable --version)" | |
echo "::set-output name=nightly::$(rustc +nightly --version)" | |
build-node-current: | |
timeout-minutes: 120 | |
if: contains(github.event.pull_request.labels.*.name, 'A-calamari') | |
runs-on: ubuntu-20.04 | |
env: | |
CARGO_TERM_COLOR: always | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18.12.x | |
- name: install sccache | |
env: | |
SCCACHE_RELEASE_URL: https://github.com/mozilla/sccache/releases/download | |
SCCACHE_VERSION: v0.5.3 | |
run: | | |
sudo apt update && sudo apt install -y curl | |
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl | |
mkdir -p $HOME/.local/bin | |
curl -L "$SCCACHE_RELEASE_URL/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz | |
mv -f $SCCACHE_FILE/sccache $HOME/.local/bin/sccache | |
chmod +x $HOME/.local/bin/sccache | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
- name: cache sccache | |
uses: actions/cache@v2 | |
continue-on-error: false | |
with: | |
path: /home/runner/.cache/sccache | |
key: sccache-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
sccache- | |
- name: start sccache server | |
run: sccache --start-server | |
- name: init | |
shell: bash | |
run: | | |
sudo apt update | |
sudo apt install -y pkg-config libssl-dev protobuf-compiler git clang curl | |
protoc --version | |
curl -s https://sh.rustup.rs -sSf | sh -s -- -y | |
source ${HOME}/.cargo/env | |
rustup toolchain install 1.74.0 | |
rustup default 1.74.0 | |
rustup target add wasm32-unknown-unknown | |
- name: cache cargo | |
uses: Swatinem/rust-cache@v2 | |
- name: build | |
env: | |
RUST_BACKTRACE: full | |
RUSTC_WRAPPER: sccache | |
SCCACHE_CACHE_SIZE: 2G | |
SCCACHE_DIR: /home/runner/.cache/sccache | |
run: | | |
source ${HOME}/.cargo/env | |
RUSTC_BOOTSTRAP=1 cargo build --profile production --verbose | |
- name: stop sccache server | |
run: sccache --stop-server || true | |
- if: always() | |
name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: manta | |
path: target/production/manta | |
calamari-integration-test: | |
if: contains(github.event.pull_request.labels.*.name, 'A-calamari') | |
needs: [build-node-current] | |
runs-on: runtime-integration-test | |
timeout-minutes: 240 | |
container: | |
image: ubuntu:20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
chain-spec: | |
- id: calamari-dev | |
expected: | |
block-count: | |
relay: 25 | |
para: 6 | |
peer-count: | |
relay: 7 | |
para: 4 | |
steps: | |
- name: Install Node.js, NPM and Yarn | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- run: | | |
mkdir -p $HOME/.local/share/calamari-pc | |
mkdir -p $HOME/.local/bin | |
echo "${HOME}/.local/bin" >> $GITHUB_PATH | |
- name: fetch manta | |
uses: actions/download-artifact@v4 | |
with: | |
name: manta | |
- name: mv and chmod manta | |
run: | | |
mv $GITHUB_WORKSPACE/manta $HOME/.local/bin/ | |
chmod +x $HOME/.local/bin/manta | |
ls -ahl $GITHUB_WORKSPACE/ | |
ls -ahl $HOME/.local/bin/ | |
- name: fetch and chmod polkadot | |
shell: bash | |
run: | | |
apt update && apt install -y curl jq wget git | |
curl -L -o $HOME/.local/bin/polkadot ${{ env.POLKADOT_BINARY }} | |
curl -L -o $HOME/.local/bin/polkadot-execute-worker ${{ env.POLKADOT_EXECUTE }} | |
curl -L -o $HOME/.local/bin/polkadot-prepare-worker ${{ env.POLKADOT_PREPARE }} | |
chmod +x $HOME/.local/bin/polkadot | |
chmod +x $HOME/.local/bin/polkadot-execute-worker | |
chmod +x $HOME/.local/bin/polkadot-prepare-worker | |
ls -ahl $HOME/.local/bin/ | |
$HOME/.local/bin/polkadot --version | |
- name: Install dasel cli | |
run: | | |
curl -sSLf "$(curl -sSLf https://api.github.com/repos/tomwright/dasel/releases/latest | grep browser_download_url | grep linux_amd64 | grep -v .gz | cut -d\" -f 4)" -L -o $HOME/dasel && chmod +x $HOME/dasel | |
$HOME/dasel --version | |
- id: create-chainspec | |
shell: bash | |
run: | | |
jq --version | |
manta build-spec --chain ${{ matrix.chain-spec.id }} --disable-default-bootnode --raw > $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-spec.json | |
jq \ | |
--sort-keys \ | |
--arg name "calamari testnet ${GITHUB_SHA:0:7}" \ | |
--arg id ${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7} \ | |
--arg relay_chain rococo-local-${GITHUB_SHA:0:7} \ | |
'. | | |
.name = $name | | |
.id = $id | | |
.relay_chain = $relay_chain | | |
.telemetryEndpoints = [["/dns/api.telemetry.manta.systems/tcp/443/x-parity-wss/%2Fsubmit%2F", 0]] | |
' $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-spec.json > $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7}-spec.json | |
ls -ahl $HOME/.local/share/calamari-pc/ | |
echo "::set-output name=short-sha::${GITHUB_SHA:0:7}" | |
manta export-state --chain $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7}-spec.json > $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-state.json || true | |
- uses: borales/[email protected] | |
- uses: actions/checkout@v2 | |
with: | |
repository: Manta-Network/Manta | |
path: Manta | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.chain-spec.id }}-state.json | |
path: /home/runner/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-state.json | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.chain-spec.id }}-spec.json | |
path: /home/runner/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-spec.json | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.chain-spec.id }}-${{ steps.create-chainspec.outputs.short-sha }}-spec.json | |
path: /home/runner/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${{ steps.create-chainspec.outputs.short-sha }}-spec.json | |
- name: create launch config | |
run: | | |
ls -ahl $GITHUB_WORKSPACE/Manta | |
cd $GITHUB_WORKSPACE | |
$HOME/dasel put -t string -v $HOME/.local/bin/polkadot -r toml \ | |
-f $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml \ | |
'.relaychain.default_command' | |
$HOME/dasel put -t string -v $HOME/.local/bin/manta -r toml \ | |
-f $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml \ | |
'.parachains.[0].collators.[0].command' | |
cat $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.chain-spec.id }}-${{ steps.create-chainspec.outputs.short-sha }}-launch-config.json | |
path: /home/runner/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${{ steps.create-chainspec.outputs.short-sha }}-launch-config.json | |
- name: fetch and chmod zombienet | |
shell: bash | |
run: | | |
cd $GITHUB_WORKSPACE | |
mkdir -p ./zombienet-tool | |
curl -L -o $GITHUB_WORKSPACE/zombienet-tool/zombienet ${{ env.ZOMBIENET_BINARY }} | |
cd $GITHUB_WORKSPACE/zombienet-tool | |
chmod +x zombienet | |
./zombienet version | |
- uses: actions/checkout@v2 | |
with: | |
repository: Manta-Network/Dev-Tools | |
path: dev-tools-rococo | |
- uses: actions/checkout@v2 | |
with: | |
repository: Manta-Network/Dev-Tools | |
path: dev-tools-calamari | |
- name: Setup yarn | |
run: npm install -g yarn | |
- name: Install pm2 | |
run: npm install -g pm2 | |
- name: launch testnet | |
shell: bash | |
run: | | |
cd $GITHUB_WORKSPACE/zombienet-tool | |
pm2 start ./zombienet --name zombienet \ | |
--output $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stdout.log \ | |
--error $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stderr.log \ | |
-- spawn --provider native $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml | |
- name: init measure-block-time rococo | |
run: | | |
cd $GITHUB_WORKSPACE/dev-tools-rococo/measure-block-time | |
yarn install | |
pm2 start index.js \ | |
--name measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }} \ | |
--output $GITHUB_WORKSPACE/measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }}-stdout.log \ | |
--error $GITHUB_WORKSPACE/measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }}-stderr.log \ | |
--no-autorestart \ | |
-- \ | |
--address=ws://127.0.0.1:9911 | |
- name: init measure-block-time calamari | |
run: | | |
cd $GITHUB_WORKSPACE/dev-tools-calamari/measure-block-time | |
yarn install | |
pm2 start index.js \ | |
--name measure-block-time-${{ matrix.chain-spec.id }} \ | |
--output $GITHUB_WORKSPACE/measure-block-time-${{ matrix.chain-spec.id }}-stdout.log \ | |
--error $GITHUB_WORKSPACE/measure-block-time-${{ matrix.chain-spec.id }}-stderr.log \ | |
--no-autorestart \ | |
-- \ | |
--address=ws://127.0.0.1:9921 | |
- uses: actions/checkout@v2 | |
with: | |
repository: Manta-Network/Manta | |
path: Manta | |
- name: run test suites | |
run: | | |
sleep 120 | |
cd $GITHUB_WORKSPACE/Manta/tests | |
yarn install | |
yarn | |
yarn correctness_test --address=ws://127.0.0.1:9921 --exit | |
yarn performance_test --address=ws://127.0.0.1:9921 --exit | |
- name: check if target block is finalized | |
run: | | |
cd $GITHUB_WORKSPACE/dev-tools-calamari/check-finalized-block | |
yarn install | |
yarn | |
node index.js --para_address=ws://127.0.0.1:9921 --relay_address=ws://127.0.0.1:9911 --target_block=${{ matrix.chain-spec.expected.block-count.para }} | |
if [ $? == 1 ]; then echo "Failed to finalize the target block - ${{ matrix.chain-spec.expected.block-count.para }}"; exit 1; fi | |
- name: stop testnet | |
run: | | |
cd $GITHUB_WORKSPACE/zombienet-tool | |
pm2 stop measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }} | |
pm2 stop measure-block-time-${{ matrix.chain-spec.id }} | |
pm2 stop zombienet | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: zombienet-for-${{ matrix.chain-spec.id }}-stdout.log | |
path: $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stdout.log | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: zombienet-for-${{ matrix.chain-spec.id }}-stderr.log | |
path: $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stderr.log | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }}-stdout.log | |
path: $GITHUB_WORKSPACE/measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }}-stdout.log | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }}-stderr.log | |
path: $GITHUB_WORKSPACE/measure-block-time-rococo-relay-for-${{ matrix.chain-spec.id }}-stderr.log | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: measure-block-time-${{ matrix.chain-spec.id }}-stdout.log | |
path: $GITHUB_WORKSPACE/measure-block-time-${{ matrix.chain-spec.id }}-stdout.log | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: measure-block-time-${{ matrix.chain-spec.id }}-stderr.log | |
path: $GITHUB_WORKSPACE/measure-block-time-${{ matrix.chain-spec.id }}-stderr.log | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: block-time-rococo-relay-for-${{ matrix.chain-spec.id }}.json | |
path: $GITHUB_WORKSPACE/block-time-rococo.json | |
- if: always() | |
name: test - calamari alice peered successfully | |
run: | | |
cd $GITHUB_WORKSPACE/zombienet-tool/ | |
./zombienet -f -p native test $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.zndsl | |
- name: append manta-pay storage | |
shell: bash | |
run: | | |
wget -P $GITHUB_WORKSPACE/Manta/tests/data https://manta-ops.s3.amazonaws.com/integration-tests-data/storage.json | |
mv $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7}-spec.json $GITHUB_WORKSPACE/Manta/tests/data/fork.json | |
cd $GITHUB_WORKSPACE/Manta/tests | |
yarn install | |
yarn | |
node append_storage.js calamari | |
cd ../../ | |
mv $GITHUB_WORKSPACE/Manta/tests/data/fork.json $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7}-spec.json | |
$HOME/dasel put -t string -v $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7}-spec.json -r toml \ | |
-f $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml \ | |
'.parachains.[0].chain_spec_path' | |
$HOME/dasel delete -r toml \ | |
-f $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml \ | |
'.parachains.[0].chain' | |
- name: launch testnet | |
shell: bash | |
run: | | |
cd $GITHUB_WORKSPACE/zombienet-tool/ | |
pm2 start ./zombienet --name zombienet \ | |
--output $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stdout.log \ | |
--error $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stderr.log \ | |
-- spawn --provider native $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml | |
- name: run stress test | |
run: | | |
sleep 720 | |
cd $GITHUB_WORKSPACE/Manta/tests | |
yarn install | |
yarn | |
yarn stress_benchmark_test --address=ws://127.0.0.1:9921 --exit | |
- name: stop testnet | |
run: | | |
cd $GITHUB_WORKSPACE/zombienet-tool | |
pm2 stop zombienet | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.chain-spec.id }}-alice-stress.log | |
path: $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stdout.log | |
- name: launch testnet | |
shell: bash | |
run: | | |
cd $GITHUB_WORKSPACE/zombienet-tool | |
pm2 start ./zombienet --name zombienet \ | |
--output $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stdout.log \ | |
--error $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stderr.log \ | |
-- spawn --provider native $GITHUB_WORKSPACE/Manta/zombienet/tests/0001-block-production.toml | |
- name: run farming test | |
run: | | |
sleep 120 | |
cd $GITHUB_WORKSPACE/Manta/tests | |
yarn install | |
yarn | |
yarn test_farming --address=ws://127.0.0.1:9921 --exit | |
- name: stop testnet | |
run: | | |
cd $GITHUB_WORKSPACE/zombienet-tool | |
pm2 stop zombienet | |
- if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.chain-spec.id }}-alice-stress.log | |
path: $GITHUB_WORKSPACE/zombienet-for-${{ matrix.chain-spec.id }}-stdout.log | |
docker-image-test: | |
timeout-minutes: 120 | |
if: contains(github.event.pull_request.labels.*.name, 'A-calamari') | |
needs: [build-node-current] | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
runtime: | |
- name: calamari | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v3 | |
- name: fetch manta | |
uses: actions/download-artifact@v4 | |
with: | |
name: manta | |
- name: build docker image | |
run: | | |
mv manta docker/manta | |
cd docker/ | |
chmod +x manta | |
GIT_TAG=${{ github.event.release.tag_name }} | |
BINARY_NAME=manta | |
ln -s ${{ matrix.runtime.name }}.Dockerfile Dockerfile | |
docker build \ | |
--build-arg PARA_BINARY_REF=${GIT_TAG} \ | |
--build-arg PARA_BINARY_URL=manta \ | |
--tag ${{ matrix.runtime.name }} ./ | |
- name: run docker image | |
run: | | |
sudo docker run -p 9944:9944 -p 9945:9945 -d ${{ matrix.runtime.name }} --unsafe-rpc-external -- --unsafe-rpc-external > docker_id.log | |
sleep 60 | |
- name: Show log | |
run: | | |
echo "Get the docker container ID:" | |
image_id=`cat docker_id.log` | |
echo $image_id | |
echo "Adjusting permissions so we can access docker logs..." | |
sudo cat /var/lib/docker/containers/${image_id}/${image_id}-json.log | |
- uses: actions/checkout@v2 | |
with: | |
repository: Manta-Network/Dev-Tools | |
path: dev-tools | |
- name: check if target block is finalized | |
run: | | |
cd dev-tools/check-finalized-block | |
npm install -g yarn | |
yarn install | |
yarn | |
node index.js --para_address=ws://127.0.0.1:9944 --relay_address=ws://127.0.0.1:9945 --target_block=6 | |
if [ $? == 1 ]; then echo "Failed to finalize the target block - 6"; exit 1; fi |