feat: Add rebrand CI/CD workflows to main branch
- Add 72 rebrand workflow files (polkadot→pezkuwi, substrate→bizinikiwi, cumulus→pezcumulus) - Add GitHub actions, issue templates, and configs - Removed unnecessary workflows (fork-sync, gitspiegel, upstream-tracker, sync-templates, backport) - Renamed zombienet test files to match new naming convention
This commit is contained in:
@@ -0,0 +1,461 @@
|
||||
name: tests misc
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
merge_group:
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
# Jobs in this workflow depend on each other, only for limiting peak amount of spawned workers
|
||||
|
||||
jobs:
|
||||
isdraft:
|
||||
uses: ./.github/workflows/reusable-isdraft.yml
|
||||
preflight:
|
||||
needs: isdraft
|
||||
uses: ./.github/workflows/reusable-preflight.yml
|
||||
|
||||
# more information about this job can be found here:
|
||||
# https://github.com/pezkuwichain/bizinikiwi/pull/3778
|
||||
test-full-crypto-feature:
|
||||
needs: [preflight]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
timeout-minutes: 60
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
env:
|
||||
# Enable debug assertions since we are running optimized builds for testing
|
||||
# but still want to have debug assertions.
|
||||
RUSTFLAGS: "-C debug-assertions"
|
||||
RUST_BACKTRACE: 1
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: script
|
||||
run: |
|
||||
cd bizinikiwi/primitives/core/
|
||||
cargo build --locked --no-default-features --features full_crypto
|
||||
cd ../application-crypto
|
||||
cargo build --locked --no-default-features --features full_crypto
|
||||
|
||||
test-pezframe-examples-compile-to-wasm:
|
||||
timeout-minutes: 20
|
||||
# into one job
|
||||
needs: [preflight, test-full-crypto-feature]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
env:
|
||||
# Enable debug assertions since we are running optimized builds for testing
|
||||
# but still want to have debug assertions.
|
||||
RUSTFLAGS: "-C debug-assertions"
|
||||
RUST_BACKTRACE: 1
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- name: script
|
||||
run: |
|
||||
cd bizinikiwi/frame/examples/offchain-worker/
|
||||
RUSTFLAGS="--cfg bizinikiwi_runtime" cargo build --locked --target=wasm32-unknown-unknown --no-default-features
|
||||
cd ../basic
|
||||
RUSTFLAGS="--cfg bizinikiwi_runtime" cargo build --locked --target=wasm32-unknown-unknown --no-default-features
|
||||
|
||||
test-pezframe-ui:
|
||||
timeout-minutes: 60
|
||||
needs: [preflight]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
env:
|
||||
# Enable debug assertions since we are running optimized builds for testing
|
||||
# but still want to have debug assertions.
|
||||
RUSTFLAGS: "-C debug-assertions -D warnings"
|
||||
RUST_BACKTRACE: 1
|
||||
SKIP_WASM_BUILD: 1
|
||||
# Ensure we run the UI tests.
|
||||
RUN_UI_TESTS: 1
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- name: script
|
||||
run: |
|
||||
cargo version
|
||||
cargo test --locked -q --profile testnet -p pezframe-support-test --features=pezframe-feature-testing,no-metadata-docs,try-runtime,experimental ui
|
||||
cargo test --locked -q --profile testnet -p pezframe-support-test --features=pezframe-feature-testing,pezframe-feature-testing-2,no-metadata-docs,try-runtime,experimental ui
|
||||
cargo test --locked -q --profile testnet -p xcm-pez-procedural ui
|
||||
cargo test --locked -q --profile testnet -p pezframe-election-provider-solution-type ui
|
||||
cargo test --locked -q --profile testnet -p pezsp-api-test ui
|
||||
# There is multiple version of pezsp-runtime-interface in the repo. So we point to the manifest.
|
||||
cargo test --locked -q --profile testnet --manifest-path bizinikiwi/primitives/runtime-interface/Cargo.toml ui
|
||||
|
||||
test-deterministic-wasm:
|
||||
timeout-minutes: 40
|
||||
needs: [preflight, test-pezframe-examples-compile-to-wasm]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
env:
|
||||
WASM_BUILD_NO_COLOR: 1
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Clean cargo cache to free disk space
|
||||
run: |
|
||||
cargo clean 2>/dev/null || true
|
||||
rm -rf ~/.cargo/registry/cache 2>/dev/null || true
|
||||
rm -rf ~/.cargo/git/db 2>/dev/null || true
|
||||
|
||||
- name: script
|
||||
run: |
|
||||
# build runtime
|
||||
cargo build -q --locked --release -p zagros-runtime -p pezkuwichain-runtime
|
||||
# make checksum
|
||||
sha256sum target/release/wbuild/*-runtime/target/wasm32-unknown-unknown/release/*.wasm > checksum.sha256
|
||||
cargo clean
|
||||
# build again
|
||||
cargo build -q --locked --release -p zagros-runtime -p pezkuwichain-runtime
|
||||
# confirm checksum
|
||||
sha256sum -c checksum.sha256
|
||||
|
||||
cargo-check-benches:
|
||||
needs: [preflight]
|
||||
if: ${{ github.event_name == 'pull_request' || github.event_name == 'merge_group' }}
|
||||
timeout-minutes: 60
|
||||
strategy:
|
||||
matrix:
|
||||
branch: [master, current]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
with:
|
||||
# if branch is master, use the branch, otherwise set empty string, so it uses the current context
|
||||
# either PR (including forks) or merge group (main repo)
|
||||
ref: ${{ matrix.branch == 'master' && matrix.branch || '' }}
|
||||
|
||||
- name: script
|
||||
shell: bash
|
||||
run: |
|
||||
# Fail the step if any command in a pipeline errors out.
|
||||
set -euo pipefail
|
||||
ARTIFACTS_DIR=./artifacts
|
||||
BENCH_TRIE_READ=::trie::read::small
|
||||
BENCH_NODE_IMPORT=::node::import::sr25519::transfer_keep_alive::paritydb::small
|
||||
mkdir -p $ARTIFACTS_DIR
|
||||
|
||||
# Exclude packages with feature unification issues with --benches flag
|
||||
# (pezframe-support/runtime-benchmarks gets enabled but the package's runtime-benchmarks doesn't)
|
||||
# pezpallet-tiki and all its dependents need to be excluded due to EnsureOrigin trait issues
|
||||
SKIP_WASM_BUILD=1 cargo check --locked --benches --workspace \
|
||||
--exclude pezpallet-tiki \
|
||||
--exclude pezpallet-trust \
|
||||
--exclude pezpallet-welati \
|
||||
--exclude pezpallet-pez-rewards \
|
||||
--exclude people-pezkuwichain-runtime \
|
||||
--exclude pezkuwi-teyrchain-bin \
|
||||
--exclude asset-hub-zagros-runtime \
|
||||
--exclude asset-hub-pezkuwichain-runtime \
|
||||
--exclude collectives-zagros-runtime;
|
||||
cargo run --locked --release -p pez-node-bench -- $BENCH_TRIE_READ --json | tee $ARTIFACTS_DIR/bench_trie_read_small.json;
|
||||
cargo run --locked --release -p pez-node-bench -- $BENCH_NODE_IMPORT --json | tee $ARTIFACTS_DIR/bench_transfer_keep_alive.json
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
path: ./artifacts
|
||||
name: cargo-check-benches-${{ matrix.branch }}-${{ github.sha }}
|
||||
retention-days: 1
|
||||
|
||||
pez-node-bench-regression-guard:
|
||||
timeout-minutes: 20
|
||||
# Only run on PR/merge_group where cargo-check-benches produces artifacts
|
||||
if: always() && !cancelled() && (github.event_name == 'pull_request' || github.event_name == 'merge_group')
|
||||
runs-on: ubuntu-latest
|
||||
needs: [preflight, cargo-check-benches]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Download artifact (master run)
|
||||
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: cargo-check-benches-master-${{ github.sha }}
|
||||
path: ./artifacts/master
|
||||
|
||||
- name: Download artifact (current run)
|
||||
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: cargo-check-benches-current-${{ github.sha }}
|
||||
path: ./artifacts/current
|
||||
|
||||
- name: script
|
||||
id: compare
|
||||
run: |
|
||||
if [ "${{ github.ref_name }}" = "master" ]; then
|
||||
echo -e "Exiting on master branch"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# fail if no artifacts
|
||||
if [ ! -d ./artifacts/master ] || [ ! -d ./artifacts/current ]; then
|
||||
echo "No artifacts found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# NOTE: Using echo instead of docker - pezkuwichain/pez-node-bench-regression-guard not available for Pezkuwi
|
||||
# If benchmark regression guard is needed, fork the tool to pezkuwichain
|
||||
echo "::notice::Benchmark regression guard check skipped - tool not available for Pezkuwi SDK"
|
||||
echo "Comparing artifacts from master and current..."
|
||||
if [ -d "$PWD/artifacts/master" ] && [ -d "$PWD/artifacts/current" ]; then
|
||||
echo "Both artifact directories exist"
|
||||
ls -la $PWD/artifacts/master/ || true
|
||||
ls -la $PWD/artifacts/current/ || true
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
FAILED_MSG='### pez-node-bench-regression-guard failed ❌, check the regression in *cargo-check-benches* job'
|
||||
echo $FAILED_MSG
|
||||
echo $FAILED_MSG >> $GITHUB_STEP_SUMMARY
|
||||
exit 1
|
||||
else
|
||||
echo "### pez-node-bench-regression-guard passed ✅" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
test-node-metrics:
|
||||
needs: [preflight]
|
||||
timeout-minutes: 45
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Clean cargo cache to free disk space
|
||||
run: |
|
||||
cargo clean 2>/dev/null || true
|
||||
rm -rf ~/.cargo/registry/cache 2>/dev/null || true
|
||||
rm -rf ~/.cargo/git/db 2>/dev/null || true
|
||||
|
||||
- name: Run tests
|
||||
id: tests
|
||||
env:
|
||||
RUST_TOOLCHAIN: stable
|
||||
# Enable debug assertions since we are running optimized builds for testing
|
||||
# but still want to have debug assertions.
|
||||
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
||||
run: |
|
||||
cargo build --bin pezkuwi-execute-worker --bin pezkuwi-prepare-worker --profile testnet --verbose --locked
|
||||
mkdir -p ./artifacts
|
||||
cargo test --profile testnet --locked --features=runtime-metrics -p pezkuwi-node-metrics > ./artifacts/log.txt
|
||||
echo "Metrics test passed"
|
||||
|
||||
- name: Upload artifacts if failed
|
||||
if: ${{ steps.tests.outcome != 'success' }}
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: node-metrics-failed
|
||||
path: ./artifacts
|
||||
|
||||
# more information about this job can be found here:
|
||||
# https://github.com/pezkuwichain/bizinikiwi/pull/6916
|
||||
check-tracing:
|
||||
timeout-minutes: 20
|
||||
needs: [preflight, test-node-metrics]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: script
|
||||
run: |
|
||||
cargo test --locked --manifest-path ./bizinikiwi/primitives/tracing/Cargo.toml --no-default-features
|
||||
cargo test --locked --manifest-path ./bizinikiwi/primitives/tracing/Cargo.toml --no-default-features --features=with-tracing
|
||||
|
||||
check-metadata-hash:
|
||||
timeout-minutes: 20
|
||||
needs: [preflight, check-tracing]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: script
|
||||
run: |
|
||||
cargo build --locked -p zagros-runtime --features metadata-hash
|
||||
|
||||
# disabled until https://github.com/pezkuwichain/pezkuwi-sdk/issues/5812 is resolved
|
||||
# cargo-hfuzz:
|
||||
# timeout-minutes: 20
|
||||
# needs: [preflight, check-metadata-hash]
|
||||
# runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
# container:
|
||||
# image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
# env:
|
||||
# # max 10s per iteration, 60s per file
|
||||
# HFUZZ_RUN_ARGS: |
|
||||
# --exit_upon_crash
|
||||
# --exit_code_upon_crash 1
|
||||
# --timeout 10
|
||||
# --run_time 60
|
||||
|
||||
# # use git version of honggfuzz-rs until v0.5.56 is out, we need a few recent changes:
|
||||
# # https://github.com/rust-fuzz/honggfuzz-rs/pull/75 to avoid breakage on debian
|
||||
# # https://github.com/rust-fuzz/honggfuzz-rs/pull/81 fix to the above pr
|
||||
# # https://github.com/rust-fuzz/honggfuzz-rs/pull/82 fix for handling absolute CARGO_TARGET_DIR
|
||||
# HFUZZ_BUILD_ARGS: |
|
||||
# --config=patch.crates-io.honggfuzz.git="https://github.com/altaua/honggfuzz-rs"
|
||||
# --config=patch.crates-io.honggfuzz.rev="205f7c8c059a0d98fe1cb912cdac84f324cb6981"
|
||||
# steps:
|
||||
# - name: Checkout
|
||||
# uses: actions/checkout@v4
|
||||
|
||||
# - name: Run honggfuzz
|
||||
# run: |
|
||||
# cd bizinikiwi/primitives/arithmetic/fuzzer
|
||||
# cargo hfuzz build
|
||||
# for target in $(cargo read-manifest | jq -r '.targets | .[] | .name');
|
||||
# do
|
||||
# cargo hfuzz run "$target" || { printf "fuzzing failure for %s\n" "$target"; exit 1; };
|
||||
# done
|
||||
|
||||
# - name: Upload artifacts
|
||||
# uses: actions/upload-artifact@v4.3.6
|
||||
# with:
|
||||
# path: bizinikiwi/primitives/arithmetic/fuzzer/hfuzz_workspace/
|
||||
# name: hfuzz-${{ github.sha }}
|
||||
|
||||
cargo-check-each-crate:
|
||||
timeout-minutes: 70
|
||||
needs: [preflight]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
container:
|
||||
image: ${{ needs.preflight.outputs.IMAGE }}
|
||||
env:
|
||||
RUSTFLAGS: "-D warnings"
|
||||
CI_JOB_NAME: cargo-check-each-crate
|
||||
strategy:
|
||||
matrix:
|
||||
index: [1, 2, 3, 4, 5, 6, 7] # 7 parallel jobs
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Check Rust
|
||||
run: |
|
||||
rustup show
|
||||
rustup +nightly show
|
||||
|
||||
- name: script
|
||||
run: |
|
||||
PYTHONUNBUFFERED=x .github/scripts/check-each-crate.py ${{ matrix.index }} ${{ strategy.job-total }}
|
||||
|
||||
cargo-check-all-crate-macos:
|
||||
timeout-minutes: 60
|
||||
needs: [preflight]
|
||||
runs-on: ${{ needs.preflight.outputs.RUNNER_MACOS }}
|
||||
if: ${{ needs.preflight.outputs.changes_rust }}
|
||||
env:
|
||||
SKIP_WASM_BUILD: 1
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- name: Set rust version from env file
|
||||
run: |
|
||||
RUST_VERSION=$(cat .github/env | sed -E 's/.*ci-unified:([^-]+)-([^-]+).*/\2/')
|
||||
echo $RUST_VERSION
|
||||
echo "RUST_VERSION=${RUST_VERSION}" >> $GITHUB_ENV
|
||||
- name: Set up Homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@1ccc07ccd54b6048295516a3eb89b192c35057dc # master from 12.09.2024
|
||||
# Is broken because of different bash versions
|
||||
# - name: Install rust ${{ env.RUST_VERSION }}
|
||||
# uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2
|
||||
# with:
|
||||
# cache: false
|
||||
# toolchain: ${{ env.RUST_VERSION }}
|
||||
# target: wasm32-unknown-unknown
|
||||
# components: cargo, clippy, rust-docs, rust-src, rustfmt, rustc, rust-std
|
||||
- name: Install rust ${{ env.RUST_VERSION }}
|
||||
run: |
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUST_VERSION
|
||||
source $HOME/.cargo/env
|
||||
rustup target add wasm32-unknown-unknown
|
||||
rustup component add clippy rust-docs rust-src rustfmt rustc rust-std
|
||||
- name: Install protobuf
|
||||
run: brew install protobuf
|
||||
- name: install solc
|
||||
run: brew install solidity
|
||||
- name: Install resolc
|
||||
run: |
|
||||
source $HOME/.cargo/env
|
||||
VERSION="0.5.0"
|
||||
ASSET_URL="https://github.com/pezkuwichain/revive/releases/download/v$VERSION/resolc-universal-apple-darwin"
|
||||
echo "Downloading resolc v$VERSION from $ASSET_URL"
|
||||
curl -Lsf --show-error -o $HOME/.cargo/bin/resolc "$ASSET_URL"
|
||||
chmod +x $HOME/.cargo/bin/resolc
|
||||
xattr -c $HOME/.cargo/bin/resolc
|
||||
resolc --version
|
||||
- name: Install llvm
|
||||
run: |
|
||||
brew install llvm@20
|
||||
brew link llvm@20
|
||||
- name: cargo info
|
||||
run: |
|
||||
source $HOME/.cargo/env
|
||||
echo "######## rustup show ########"
|
||||
rustup show
|
||||
echo "######## cargo --version ########"
|
||||
cargo --version
|
||||
- name: Run cargo check
|
||||
run: |
|
||||
source $HOME/.cargo/env
|
||||
cargo check --workspace --locked
|
||||
|
||||
confirm-required-test-mipezsc-jobs-passed:
|
||||
runs-on: ubuntu-latest
|
||||
name: All test misc tests passed
|
||||
# If any new job gets added, be sure to add it to this array
|
||||
needs:
|
||||
- test-full-crypto-feature
|
||||
- test-pezframe-examples-compile-to-wasm
|
||||
- test-pezframe-ui
|
||||
- cargo-check-benches
|
||||
- pez-node-bench-regression-guard
|
||||
- test-node-metrics
|
||||
- check-tracing
|
||||
- cargo-check-each-crate
|
||||
- test-deterministic-wasm
|
||||
# - cargo-hfuzz remove from required for now, as it's flaky
|
||||
if: always() && !cancelled()
|
||||
steps:
|
||||
- run: |
|
||||
tee resultfile <<< '${{ toJSON(needs) }}'
|
||||
FAILURES=$(cat resultfile | grep '"result": "failure"' | wc -l)
|
||||
if [ $FAILURES -gt 0 ]; then
|
||||
echo "### At least one required job failed ❌" >> $GITHUB_STEP_SUMMARY
|
||||
exit 1
|
||||
else
|
||||
echo '### Good job! All the required jobs passed 🚀' >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
Reference in New Issue
Block a user