feat: Vendor pezkuwi-subxt and pezkuwi-zombienet-sdk into monorepo

- Add pezkuwi-subxt crates to vendor/pezkuwi-subxt
- Add pezkuwi-zombienet-sdk crates to vendor/pezkuwi-zombienet-sdk
- Convert git dependencies to path dependencies
- Add vendor crates to workspace members
- Remove test/example crates from vendor (not needed for SDK)
- Fix feature propagation issues detected by zepter
- Fix workspace inheritance for internal dependencies
- All 606 crates now in workspace
- All 6919 internal dependency links verified correct
- No git dependencies remaining
This commit is contained in:
2025-12-22 23:31:24 +03:00
parent 4c8f281051
commit 70ddb6516f
386 changed files with 76759 additions and 36 deletions
+97
View File
@@ -0,0 +1,97 @@
name: Cargo Build & Test
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-Dwarnings"
jobs:
build:
name: Zombienet SDK - latest
runs-on: ubuntu-latest
strategy:
matrix:
toolchain:
- stable
# TODO 24-02-08: Disable nightly due to tkaitchuck/aHash#200.
#- nightly
steps:
# https://github.com/jlumbroso/free-disk-space
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: install_deps
run: sudo apt-get update && sudo apt-get install protobuf-compiler
- name: Init nigthly install for fmt
run: rustup update nightly && rustup default nightly && rustup component add rustfmt
- name: Check format
run: cargo +nightly fmt --check --all
- name: Init install
run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} && rustup component add clippy
- name: Fetch cache
uses: Swatinem/rust-cache@a95ba195448af2da9b00fb742d14ffaaf3c21f43 # v2.7.0
with:
shared-key: "zombie-cache"
- name: Clippy
# disable needless_lifetimes until we align the version with polakdot-sdk
run: cargo clippy --all-targets --all-features -- -A clippy::needless_lifetimes
- name: Build
run: cargo build
- name: Tests
run: cargo test --workspace -- --skip ci_k8s
# TODO: fix and re-enable
# coverage:
# name: Zombienet SDK - coverage
# needs: build
# runs-on: ubuntu-20.04
# if: github.event_name == 'pull_request'
# permissions:
# issues: write
# pull-requests: write
# steps:
# - uses: actions/checkout@v3
# # https://github.com/jlumbroso/free-disk-space
# - name: Free Disk Space (Ubuntu)
# uses: jlumbroso/free-disk-space@main
# with:
# tool-cache: false
# - name: Fetch cache
# uses: Swatinem/rust-cache@a95ba195448af2da9b00fb742d14ffaaf3c21f43 # v2.7.0
# with:
# shared-key: "zombie-cache"
# - name: Install latest nextest release
# uses: taiki-e/install-action@nextest
# - name: Install cargo-llvm-cov
# uses: taiki-e/install-action@cargo-llvm-cov
# - name: Collect coverage data
# run: cargo llvm-cov nextest --workspace --exclude zombienet-sdk --test-threads 1 --lcov --output-path lcov.info
# - name: Report code coverage
# uses: Nef10/lcov-reporter-action@v0.4.0
# with:
# lcov-file: lcov.info
# pr-number: ${{ github.event.pull_request.number }}
@@ -0,0 +1,206 @@
name: Integration test
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
RUN_IN_CONTAINER: 1
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: 1
GHA_CLUSTER_SERVER_ADDR: "https://kubernetes.default:443"
CARGO_TERM_COLOR: always
RUSTFLAGS: "-Dwarnings"
BASE_IMAGE: docker.io/paritytech/ci-unified:bullseye-1.88.0-2025-06-27-v202506301118
RUN_IN_CI: "1"
RUST_LOG: "zombienet_orchestrator=debug,zombienet_provider=debug"
CARGO_TARGET_DIR: /tmp/target
jobs:
build-tests:
runs-on: ubuntu-latest
timeout-minutes: 60
container:
image: docker.io/paritytech/ci-unified:bullseye-1.88.0-2025-06-27-v202506301118
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0
with:
cache-on-failure: true
- name: Build tests
run: |
cargo build --tests --keep-going --locked
mkdir -p artifacts
cd artifacts
find /tmp/target/debug/deps/ -maxdepth 1 -name "smoke-*" ! -name "*.d" -exec mv {} $(pwd)/smoke \;
find /tmp/target/debug/deps/ -maxdepth 1 -name "smoke_native-*" ! -name "*.d" -exec mv {} $(pwd)/smoke_native \;
cd ..
tar cvfz artifacts.tar.gz artifacts
- name: Upload artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: zombienet-tests-${{ github.sha }}
path: artifacts.tar.gz
k8s-integration-test-smoke:
runs-on: ubuntu-latest
needs: build-tests
timeout-minutes: 60
container:
image: docker.io/paritytech/ci-unified:bullseye-1.88.0-2025-06-27-v202506301118
steps:
- name: Download artifacts
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: zombienet-tests-${{ github.sha }}
path: /tmp
- name: script
timeout-minutes: 45
run: |
export ZOMBIE_K8S_CI_NAMESPACE=$(cat /data/namespace)
export ZOMBIE_PROVIDER="k8s"
cd /tmp
ls -la
tar xvfz artifacts.tar.gz
./artifacts/smoke --nocapture
- name: dump logs
if: always()
run: |
export ZOMBIE_K8S_CI_NAMESPACE=$(cat /data/namespace)
mkdir -p /tmp/zombie-1/logs
# Install kubectl if not available
if ! command -v kubectl &> /dev/null; then
echo "Installing kubectl..."
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl /usr/local/bin/
fi
echo "Listing pods in namespace $ZOMBIE_K8S_CI_NAMESPACE..."
kubectl get pods -n "$ZOMBIE_K8S_CI_NAMESPACE" -o wide || true
for pod in $(kubectl get pods -n "$ZOMBIE_K8S_CI_NAMESPACE" -o jsonpath='{.items[*].metadata.name}' 2>/dev/null || true); do
echo "Dumping logs for pod: $pod"
kubectl logs -n "$ZOMBIE_K8S_CI_NAMESPACE" "$pod" --all-containers=true > "/tmp/zombie-1/logs/${pod}.log" 2>&1 || true
done
find /tmp/zombie* -name "*.log" -type f ! -regex '.*/[0-9]+\.log' -exec cp {} /tmp/zombie-1/logs/ \; 2>/dev/null || true
echo "Collected logs:"
ls -la /tmp/zombie-1/logs/ || true
- name: upload logs
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: zombienet-logs-${{ github.job }}-${{ github.sha }}
path: |
/tmp/zombie-1/logs/*
docker-integration-test-smoke:
runs-on: ubuntu-latest
needs: build-tests
timeout-minutes: 60
steps:
- name: Download artifacts
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: zombienet-tests-${{ github.sha }}
path: /tmp
- name: Install dependencies
run: |
sudo apt-get -y update
sudo apt-get -y install wget
# Manually download and install the OpenSSL 1.1 library
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
- name: script
timeout-minutes: 45
run: |
export ZOMBIE_PROVIDER="docker"
cd /tmp
ls -la
tar xvfz artifacts.tar.gz
./artifacts/smoke --nocapture
- name: dump logs
if: always()
run: |
mkdir -p /tmp/zombie-1/logs
for container in $(docker ps -a --filter "name=zombie" --format "{{.Names}}" 2>/dev/null || true); do
echo "Dumping logs for container: $container"
docker logs "$container" > "/tmp/zombie-1/logs/${container}.log" 2>&1 || true
done
find /tmp/zombie* -name "*.log" -type f ! -regex '.*/[0-9]+\.log' -exec cp {} /tmp/zombie-1/logs/ \; 2>/dev/null || true
ls -la /tmp/zombie-1/logs/ || true
- name: upload logs
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: zombienet-logs-${{ github.job }}-${{ github.sha }}
path: |
/tmp/zombie-1/logs/*
native-integration-test-smoke:
runs-on: ubuntu-latest
needs: build-tests
timeout-minutes: 60
container:
image: docker.io/paritytech/ci-unified:bullseye-1.88.0-2025-06-27-v202506301118
steps:
- name: Download artifacts
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: zombienet-tests-${{ github.sha }}
path: /tmp
- name: Download bins
shell: bash
run: |
for bin in polkadot polkadot-execute-worker polkadot-prepare-worker polkadot-omni-node polkadot-parachain; do
echo "downloading $bin";
curl -L -o /tmp/$bin https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2503-1/$bin;
chmod 755 /tmp/$bin;
done
ls -ltr /tmp
export PATH=/tmp:$PATH
echo $PATH
- name: script
run: |
export PATH=/tmp:$PATH
echo $PATH
# mv artifacts.tar.gz /tmp
cd /tmp
ls -la
tar xvfz artifacts.tar.gz
export ZOMBIE_PROVIDER="native"
./artifacts/smoke_native --nocapture
# cargo test --test smoke-native -- --nocapture
- name: collect logs
if: always()
run: |
mkdir -p /tmp/zombie-1/logs
find /tmp/zombie* -name "*.log" -type f ! -regex '.*/[0-9]+\.log' -exec cp {} /tmp/zombie-1/logs/ \; 2>/dev/null || true
ls -la /tmp/zombie-1/logs/ || true
- name: upload logs
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: zombienet-logs-${{ github.job }}-${{ github.sha }}
path: |
/tmp/zombie-1/logs/*
@@ -0,0 +1,62 @@
name: Cargo Create Docs
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-Dwarnings"
jobs:
build-rust-doc:
name: Zombienet SDK - Rust Docs
runs-on: ubuntu-latest
strategy:
matrix:
toolchain:
# TODO 24-02-08: Disable nightly due to tkaitchuck/aHash#200.
#- nightly
- stable
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Init nigthly install for fmt
run: rustup update nightly && rustup default nightly && rustup component add rustfmt
- name: Check format
run: cargo +nightly fmt --check --all
- name: Init install
run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} && rustup component add clippy
- name: install_deps
run: sudo apt-get update && sudo apt-get install protobuf-compiler
- name: Create docs
run: |
cargo doc --no-deps
echo "<meta http-equiv=\"refresh\" content=\"0; url=zombienet_sdk\">" > target/doc/index.html
- name: Move docs
run: |
mkdir -p ./doc
mv ./target/doc/* ./doc
git config user.email "github-action@users.noreply.github.com"
git config user.name "GitHub Action"
git config user.password "${{ secrets.GH_PAGES_TOKEN }}"
git checkout --orphan gh-pages
mkdir to_delete
shopt -s extglob
mv !(to_delete) ./to_delete
mv ./to_delete/doc/* .
rm -rf ./to_delete
git add --all
git commit -m "Documentation"
shell: bash # Necessary for `shopt` to work
- run: git push -f origin gh-pages:gh-pages
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
@@ -0,0 +1,52 @@
name: File server build & image publish
run-name: Deploy file server ${{ github.ref }}
on:
push:
branches:
- main
paths:
- "Cargo.toml"
- "crates/file-server/**"
workflow_dispatch: {}
env:
PROJECT_ID: "parity-zombienet"
GCR_REGISTRY: "europe-west3-docker.pkg.dev"
GCR_REPOSITORY: "zombienet-public-images"
jobs:
build_and_push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup gcloud CLI
uses: google-github-actions/setup-gcloud@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db # v3.0.1
with:
service_account_key: ${{ secrets.GCP_SA_KEY }}
project_id: ${{ env.PROJECT_ID }}
export_default_credentials: true
- name: Login to GCP
uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Artifact registry authentication
run: |
gcloud auth configure-docker ${{ env.GCR_REGISTRY }}
- name: Build, tag, and push image to GCP Artifact registry
id: build-image
env:
IMAGE: "${{ env.GCR_REGISTRY }}/${{ env.PROJECT_ID }}/${{ env.GCR_REPOSITORY }}/zombienet-file-server"
run: |
docker build -t $IMAGE:${{ github.sha }} -f ./crates/file-server/Dockerfile .
docker tag $IMAGE:${{ github.sha }} $IMAGE:latest
docker push --all-tags $IMAGE
echo "image=$IMAGE:${{ github.sha }}" >> $GITHUB_OUTPUT
echo "image=$IMAGE:latest" >> $GITHUB_OUTPUT
@@ -0,0 +1,26 @@
name: Publish to crates.io
on:
release:
types: [published]
jobs:
check-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Rust Cache
uses: Swatinem/rust-cache@a95ba195448af2da9b00fb742d14ffaaf3c21f43 # v2.7.0
with:
save-if: ${{ github.ref == 'refs/heads/main' }}
- name: install parity-publish
run: cargo install parity-publish@0.10.6 --locked -q
- name: parity-publish check
run: parity-publish --color always check --allow-unpublished
# TODO: remove dry-run once we confirm everything works as expected
- name: parity-publish dry-run
run: parity-publish --color always apply --dry-run
@@ -0,0 +1,67 @@
name: Release bin for zombie-cli
on:
push:
tags:
- 'v*.*.*'
jobs:
build:
strategy:
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: macos-latest
target: aarch64-apple-darwin
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Build release binary
run: cargo build --release --bin zombie-cli --target ${{ matrix.target }}
- name: Package binary
run: |
mkdir -p dist
cp target/${{ matrix.target }}/release/zombie-cli dist/zombie-cli-${{ matrix.target }}
- name: Upload artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: zombie-cli-${{ matrix.os }}-${{ matrix.target }}-${{ github.ref_name }}
path: dist/*
release:
runs-on: ubuntu-latest
needs: build
steps:
- name: Download artifacts
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
path: artifacts
- name: Generate checksums
run: |
cd artifacts
sha256sum * > checksums.txt
- name: Create Release
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3
with:
files: |
artifacts/**/*
artifacts/checksums.txt
generate_release_notes: true
draft: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,31 @@
name: Spellcheck
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
spellcheck:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Install Rust
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1.0.0
with:
toolchain: stable
- name: Install cargo-spellcheck
run: |
sudo apt-get install libclang-dev
export LIBCLANG_PATH=/usr/lib/llvm-18/lib/
cargo install cargo-spellcheck
- name: Run cargo-spellcheck
run: cargo spellcheck