mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-24 17:05:47 +00:00
Weekly Cronjob fetching artifacts and generating polkadot.rs file. (#1352)
* github CI action cronjob * add commit message * fix the CI yml files * binary crate for CI script with substrate-runner * update the CI script * correct the artifacts script * remove bash script
This commit is contained in:
@@ -11,3 +11,6 @@ trim_trailing_whitespace = true
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.yml]
|
||||||
|
indent_size = 2
|
||||||
|
|||||||
@@ -41,4 +41,4 @@ jobs:
|
|||||||
name: nightly-substrate-binary
|
name: nightly-substrate-binary
|
||||||
path: target/release/substrate-node
|
path: target/release/substrate-node
|
||||||
retention-days: 2
|
retention-days: 2
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ on:
|
|||||||
# Run at 8am every day, well after the new binary is built
|
# Run at 8am every day, well after the new binary is built
|
||||||
- cron: "0 8 * * *"
|
- cron: "0 8 * * *"
|
||||||
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CARGO_TERM_COLOR: always
|
CARGO_TERM_COLOR: always
|
||||||
|
|
||||||
|
|||||||
+280
-280
@@ -1,350 +1,350 @@
|
|||||||
name: Rust
|
name: Rust
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
# Run jobs when commits are pushed to
|
# Run jobs when commits are pushed to
|
||||||
# master or release-like branches:
|
# master or release-like branches:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
pull_request:
|
pull_request:
|
||||||
# Run jobs for any external PR that wants
|
# Run jobs for any external PR that wants
|
||||||
# to merge to master, too:
|
# to merge to master, too:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.ref }}-${{ github.workflow }}
|
group: ${{ github.ref }}-${{ github.workflow }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CARGO_TERM_COLOR: always
|
CARGO_TERM_COLOR: always
|
||||||
# Increase wasm test timeout from 20 seconds (default) to 1 minute.
|
# Increase wasm test timeout from 20 seconds (default) to 1 minute.
|
||||||
WASM_BINDGEN_TEST_TIMEOUT: 60
|
WASM_BINDGEN_TEST_TIMEOUT: 60
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check:
|
check:
|
||||||
name: Cargo check
|
name: Cargo check
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Install cargo-hack
|
- name: Install cargo-hack
|
||||||
uses: baptiste0928/cargo-install@v2
|
uses: baptiste0928/cargo-install@v2
|
||||||
with:
|
with:
|
||||||
crate: cargo-hack
|
crate: cargo-hack
|
||||||
version: 0.5
|
version: 0.5
|
||||||
|
|
||||||
# A basic check over all targets together. This may lead to features being combined etc,
|
# A basic check over all targets together. This may lead to features being combined etc,
|
||||||
# and doesn't test combinations of different features.
|
# and doesn't test combinations of different features.
|
||||||
- name: Cargo check all targets.
|
- name: Cargo check all targets.
|
||||||
run: cargo check --all-targets
|
run: cargo check --all-targets
|
||||||
|
|
||||||
# Next, check subxt features.
|
# Next, check subxt features.
|
||||||
# - `native` feature must always be enabled
|
# - `native` feature must always be enabled
|
||||||
# - `web` feature is always ignored.
|
# - `web` feature is always ignored.
|
||||||
# - This means, don't check --no-default-features and don't try enabling --all-features; both will fail
|
# - This means, don't check --no-default-features and don't try enabling --all-features; both will fail
|
||||||
- name: Cargo hack; check each subxt feature
|
- name: Cargo hack; check each subxt feature
|
||||||
run: cargo hack -p subxt --each-feature check --exclude-no-default-features --exclude-all-features --exclude-features web --features native
|
run: cargo hack -p subxt --each-feature check --exclude-no-default-features --exclude-all-features --exclude-features web --features native
|
||||||
|
|
||||||
# Subxt-signer has the "subxt" features enabled in the "check all targets" test. Run it on its own to
|
# Subxt-signer has the "subxt" features enabled in the "check all targets" test. Run it on its own to
|
||||||
# check it without. We can't enable subxt or web features here, so no cargo hack.
|
# check it without. We can't enable subxt or web features here, so no cargo hack.
|
||||||
- name: Cargo check subxt-signer
|
- name: Cargo check subxt-signer
|
||||||
run: |
|
run: |
|
||||||
cargo check -p subxt-signer
|
cargo check -p subxt-signer
|
||||||
cargo check -p subxt-signer --no-default-features --features sr25519,native
|
cargo check -p subxt-signer --no-default-features --features sr25519,native
|
||||||
cargo check -p subxt-signer --no-default-features --features ecdsa,native
|
cargo check -p subxt-signer --no-default-features --features ecdsa,native
|
||||||
|
|
||||||
# We can't enable web features here, so no cargo hack.
|
# We can't enable web features here, so no cargo hack.
|
||||||
- name: Cargo check subxt-lightclient
|
- name: Cargo check subxt-lightclient
|
||||||
run: cargo check -p subxt-lightclient
|
run: cargo check -p subxt-lightclient
|
||||||
|
|
||||||
# Next, check each other package in isolation.
|
# Next, check each other package in isolation.
|
||||||
- name: Cargo hack; check each feature/crate on its own
|
- name: Cargo hack; check each feature/crate on its own
|
||||||
run: cargo hack --exclude subxt --exclude subxt-signer --exclude subxt-lightclient --exclude-all-features --each-feature check --workspace
|
run: cargo hack --exclude subxt --exclude subxt-signer --exclude subxt-lightclient --exclude-all-features --each-feature check --workspace
|
||||||
|
|
||||||
# Check the parachain-example code, which isn't a part of the workspace so is otherwise ignored.
|
# Check the parachain-example code, which isn't a part of the workspace so is otherwise ignored.
|
||||||
- name: Cargo check parachain-example
|
- name: Cargo check parachain-example
|
||||||
run: cargo check --manifest-path examples/parachain-example/Cargo.toml
|
run: cargo check --manifest-path examples/parachain-example/Cargo.toml
|
||||||
|
|
||||||
wasm_check:
|
wasm_check:
|
||||||
name: Cargo check (WASM)
|
name: Cargo check (WASM)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
target: wasm32-unknown-unknown
|
target: wasm32-unknown-unknown
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
# Check WASM examples, which aren't a part of the workspace and so are otherwise missed:
|
# Check WASM examples, which aren't a part of the workspace and so are otherwise missed:
|
||||||
- name: Cargo check WASM examples
|
- name: Cargo check WASM examples
|
||||||
run: |
|
run: |
|
||||||
cargo check --manifest-path examples/wasm-example/Cargo.toml --target wasm32-unknown-unknown
|
cargo check --manifest-path examples/wasm-example/Cargo.toml --target wasm32-unknown-unknown
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
name: Cargo fmt
|
name: Cargo fmt
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Rust nightly toolchain
|
- name: Install Rust nightly toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
components: rustfmt
|
components: rustfmt
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Cargo fmt
|
- name: Cargo fmt
|
||||||
uses: actions-rs/cargo@v1.0.3
|
uses: actions-rs/cargo@v1.0.3
|
||||||
with:
|
with:
|
||||||
command: fmt
|
command: fmt
|
||||||
args: --all -- --check
|
args: --all -- --check
|
||||||
|
|
||||||
docs:
|
docs:
|
||||||
name: Check documentation and run doc tests
|
name: Check documentation and run doc tests
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Check internal documentation links
|
- name: Check internal documentation links
|
||||||
run: RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc -vv --workspace --no-deps --document-private-items
|
run: RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc -vv --workspace --no-deps --document-private-items
|
||||||
|
|
||||||
- name: Run cargo test on documentation
|
- name: Run cargo test on documentation
|
||||||
uses: actions-rs/cargo@v1.0.3
|
uses: actions-rs/cargo@v1.0.3
|
||||||
with:
|
with:
|
||||||
command: test
|
command: test
|
||||||
args: --doc
|
args: --doc
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
name: "Test (Native)"
|
name: "Test (Native)"
|
||||||
runs-on: ubuntu-latest-16-cores
|
runs-on: ubuntu-latest-16-cores
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Install cargo-nextest
|
- name: Install cargo-nextest
|
||||||
run: cargo install cargo-nextest
|
run: cargo install cargo-nextest
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
uses: actions-rs/cargo@v1.0.3
|
uses: actions-rs/cargo@v1.0.3
|
||||||
with:
|
with:
|
||||||
command: nextest
|
command: nextest
|
||||||
args: run --workspace
|
args: run --workspace
|
||||||
|
|
||||||
unstable_backend_tests:
|
unstable_backend_tests:
|
||||||
name: "Test (Unstable Backend)"
|
name: "Test (Unstable Backend)"
|
||||||
runs-on: ubuntu-latest-16-cores
|
runs-on: ubuntu-latest-16-cores
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Install cargo-nextest
|
- name: Install cargo-nextest
|
||||||
run: cargo install cargo-nextest
|
run: cargo install cargo-nextest
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
uses: actions-rs/cargo@v1.0.3
|
uses: actions-rs/cargo@v1.0.3
|
||||||
with:
|
with:
|
||||||
command: nextest
|
command: nextest
|
||||||
args: run --workspace --features unstable-backend-client
|
args: run --workspace --features unstable-backend-client
|
||||||
|
|
||||||
light_client_tests:
|
light_client_tests:
|
||||||
name: "Test (Light Client)"
|
name: "Test (Light Client)"
|
||||||
runs-on: ubuntu-latest-16-cores
|
runs-on: ubuntu-latest-16-cores
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
uses: actions-rs/cargo@v1.0.3
|
uses: actions-rs/cargo@v1.0.3
|
||||||
with:
|
with:
|
||||||
command: test
|
command: test
|
||||||
args: --release --package integration-tests --features unstable-light-client
|
args: --release --package integration-tests --features unstable-light-client
|
||||||
|
|
||||||
wasm_tests:
|
wasm_tests:
|
||||||
name: Test (WASM)
|
name: Test (WASM)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
env:
|
env:
|
||||||
# Set timeout for wasm tests to be much bigger than the default 20 secs.
|
# Set timeout for wasm tests to be much bigger than the default 20 secs.
|
||||||
WASM_BINDGEN_TEST_TIMEOUT: 300
|
WASM_BINDGEN_TEST_TIMEOUT: 300
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install wasm-pack
|
- name: Install wasm-pack
|
||||||
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
||||||
|
|
||||||
- name: Install firefox
|
- name: Install firefox
|
||||||
uses: browser-actions/setup-firefox@latest
|
uses: browser-actions/setup-firefox@latest
|
||||||
|
|
||||||
- name: Install chrome
|
- name: Install chrome
|
||||||
uses: browser-actions/setup-chrome@latest
|
uses: browser-actions/setup-chrome@latest
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Run subxt WASM tests
|
- name: Run subxt WASM tests
|
||||||
run: |
|
run: |
|
||||||
# `listen-addr` is used to configure p2p to accept websocket connections instead of TCP.
|
# `listen-addr` is used to configure p2p to accept websocket connections instead of TCP.
|
||||||
# `node-key` provides a deterministic p2p address.
|
# `node-key` provides a deterministic p2p address.
|
||||||
substrate-node --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 --listen-addr /ip4/0.0.0.0/tcp/30333/ws > /dev/null 2>&1 &
|
substrate-node --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 --listen-addr /ip4/0.0.0.0/tcp/30333/ws > /dev/null 2>&1 &
|
||||||
wasm-pack test --headless --firefox
|
wasm-pack test --headless --firefox
|
||||||
wasm-pack test --headless --chrome
|
wasm-pack test --headless --chrome
|
||||||
pkill substrate-node
|
pkill substrate-node
|
||||||
working-directory: testing/wasm-rpc-tests
|
working-directory: testing/wasm-rpc-tests
|
||||||
|
|
||||||
- name: Run subxt-lightclient WASM tests
|
- name: Run subxt-lightclient WASM tests
|
||||||
run: |
|
run: |
|
||||||
# `listen-addr` is used to configure p2p to accept websocket connections instead of TCP.
|
# `listen-addr` is used to configure p2p to accept websocket connections instead of TCP.
|
||||||
# `node-key` provides a deterministic p2p address.
|
# `node-key` provides a deterministic p2p address.
|
||||||
substrate-node --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 --listen-addr /ip4/0.0.0.0/tcp/30333/ws > /dev/null 2>&1 &
|
substrate-node --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 --listen-addr /ip4/0.0.0.0/tcp/30333/ws > /dev/null 2>&1 &
|
||||||
wasm-pack test --headless --firefox
|
wasm-pack test --headless --firefox
|
||||||
wasm-pack test --headless --chrome
|
wasm-pack test --headless --chrome
|
||||||
pkill substrate-node
|
pkill substrate-node
|
||||||
working-directory: testing/wasm-lightclient-tests
|
working-directory: testing/wasm-lightclient-tests
|
||||||
|
|
||||||
- name: Run subxt-signer WASM tests
|
- name: Run subxt-signer WASM tests
|
||||||
run: |
|
run: |
|
||||||
wasm-pack test --headless --firefox
|
wasm-pack test --headless --firefox
|
||||||
wasm-pack test --headless --chrome
|
wasm-pack test --headless --chrome
|
||||||
working-directory: signer/wasm-tests
|
working-directory: signer/wasm-tests
|
||||||
|
|
||||||
clippy:
|
clippy:
|
||||||
name: Cargo clippy
|
name: Cargo clippy
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
components: clippy
|
components: clippy
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Run clippy
|
- name: Run clippy
|
||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
with:
|
with:
|
||||||
command: clippy
|
command: clippy
|
||||||
args: --all-targets -- -D warnings
|
args: --all-targets -- -D warnings
|
||||||
machete:
|
machete:
|
||||||
name: "Check unused dependencies"
|
name: "Check unused dependencies"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use substrate-node binary
|
- name: Use substrate-node binary
|
||||||
uses: ./.github/workflows/actions/use-substrate
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
- name: Install Rust stable toolchain
|
- name: Install Rust stable toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
||||||
|
|
||||||
- name: Install cargo-machete
|
- name: Install cargo-machete
|
||||||
run: cargo install cargo-machete
|
run: cargo install cargo-machete
|
||||||
|
|
||||||
- name: Check unused dependencies
|
- name: Check unused dependencies
|
||||||
uses: actions-rs/cargo@v1.0.3
|
uses: actions-rs/cargo@v1.0.3
|
||||||
with:
|
with:
|
||||||
command: machete
|
command: machete
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
name: Update Artifacts
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch: # Allows manual triggering
|
||||||
|
schedule:
|
||||||
|
- cron: "0 0 * * 1" # weekly on Monday at 00:00 UTC
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-${{ github.workflow }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
CARGO_TERM_COLOR: always
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
name: Renew Artifacts
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# We run this (up-to-date) node locally to fetch metadata from it for the artifacts
|
||||||
|
- name: Use substrate-node binary
|
||||||
|
uses: ./.github/workflows/actions/use-substrate
|
||||||
|
|
||||||
|
- name: Install Rust stable toolchain
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
profile: minimal
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
|
||||||
|
- name: Rust Cache
|
||||||
|
uses: Swatinem/rust-cache@3cf7f8cc28d1b4e7d01e3783be10a97d55d483c8 # v2.7.1
|
||||||
|
|
||||||
|
# This starts a substrate node and runs a few subxt cli child processes to fetch metadata from it and generate code.
|
||||||
|
# In particular it generates:
|
||||||
|
# - 4 metadata (*.scale) files in the `artifacts` directory
|
||||||
|
# - a polkadot.rs file from the full metadata that is checked in integration tests
|
||||||
|
# - a polkadot.json in the `artifacts/demo_chain_specs` directory
|
||||||
|
- name: Fetch Artifacts
|
||||||
|
run: cargo build --bin artifacts
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@v5
|
||||||
|
with:
|
||||||
|
base: master
|
||||||
|
branch: update-artifacts
|
||||||
|
commit-message: Update Artifacts (auto-generated)
|
||||||
|
branch-suffix: timestamp
|
||||||
|
title: Update Artifacts (auto-generated)
|
||||||
|
body: |
|
||||||
|
This PR updates the artifacts by fetching fresh metadata from a substrate node.
|
||||||
|
It also recreates the polkadot.rs file used in the integration tests.
|
||||||
|
It was created automatically by a Weekly GitHub Action Cronjob.
|
||||||
Generated
+7
@@ -331,6 +331,13 @@ version = "0.7.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
|
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "artifacts"
|
||||||
|
version = "0.33.0"
|
||||||
|
dependencies = [
|
||||||
|
"substrate-runner",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "assert_matches"
|
name = "assert_matches"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ members = [
|
|||||||
"metadata",
|
"metadata",
|
||||||
"signer",
|
"signer",
|
||||||
"subxt",
|
"subxt",
|
||||||
|
"scripts/artifacts"
|
||||||
]
|
]
|
||||||
|
|
||||||
# We exclude any crates that would depend on non mutually
|
# We exclude any crates that would depend on non mutually
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
# # Generates the 3 metadata files in `/artifacts` and the polkadot.rs file for integration tests
|
|
||||||
#
|
|
||||||
# This script is to be run from the root of the repository: `scripts/artifacts.sh`
|
|
||||||
#
|
|
||||||
# It expects a local polkadot node to be running a JSON-RPC HTTP server at 127.0.0.1:9933
|
|
||||||
# A local polkadot node can be run via:
|
|
||||||
# ```
|
|
||||||
# git clone https://github.com/paritytech/polkadot.git
|
|
||||||
# cd polkadot
|
|
||||||
# cargo build --release
|
|
||||||
# ./target/release/polkadot --dev --tmp
|
|
||||||
# ```
|
|
||||||
|
|
||||||
# get the full metadata
|
|
||||||
cargo run --bin subxt metadata --version 15 > artifacts/polkadot_metadata_full.scale
|
|
||||||
# use it to generate polkadot.rs
|
|
||||||
cargo run --bin subxt codegen --file artifacts/polkadot_metadata_full.scale | rustfmt > testing/integration-tests/src/full_client/codegen/polkadot.rs
|
|
||||||
# generate a metadata file that only contains a few pallets that we need for our examples.
|
|
||||||
cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "Balances,Staking,System,Multisig,Timestamp,ParaInherent" > artifacts/polkadot_metadata_small.scale
|
|
||||||
# generate a metadata file that contains no pallets
|
|
||||||
cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "" > artifacts/polkadot_metadata_tiny.scale
|
|
||||||
# generate a metadata file that only contains some custom metadata
|
|
||||||
cargo run --bin generate-custom-metadata > artifacts/metadata_with_custom_values.scale
|
|
||||||
|
|
||||||
# Generate the polkadot chain spec.
|
|
||||||
cargo run --features chain-spec-pruning --bin subxt chain-spec --url wss://rpc.polkadot.io:443 --output-file artifacts/demo_chain_specs/polkadot.json --state-root-hash --remove-substitutes
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/target
|
||||||
Generated
+14
@@ -0,0 +1,14 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "artifacts"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"substrate-runner",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "substrate-runner"
|
||||||
|
version = "0.33.0"
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[package]
|
||||||
|
name = "artifacts"
|
||||||
|
authors.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
version.workspace = true
|
||||||
|
rust-version.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
repository.workspace = true
|
||||||
|
documentation.workspace = true
|
||||||
|
homepage.workspace = true
|
||||||
|
description = "Internal tool to regenerate artifacts"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
substrate-runner = { workspace = true }
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
use std::{
|
||||||
|
fs::File,
|
||||||
|
process::{Command, Stdio},
|
||||||
|
};
|
||||||
|
|
||||||
|
use substrate_runner::SubstrateNode;
|
||||||
|
|
||||||
|
/// A Script to generate artifacts that are used in the integration tests.
|
||||||
|
///
|
||||||
|
/// Run with `cargo run --bin artifacts` from the root of the repository.
|
||||||
|
fn main() {
|
||||||
|
let mut node_builder = SubstrateNode::builder();
|
||||||
|
node_builder.binary_paths(["substrate-node", "substrate"]);
|
||||||
|
|
||||||
|
// Spawn the node and retrieve a ws URL to it:
|
||||||
|
let proc = node_builder
|
||||||
|
.spawn()
|
||||||
|
.map_err(|e| e.to_string())
|
||||||
|
.expect("Could not spawn node");
|
||||||
|
let node_url = format!("ws://127.0.0.1:{}", proc.ws_port());
|
||||||
|
|
||||||
|
// Get the full metadata from the spawned substrate node
|
||||||
|
Command::make(&format!(
|
||||||
|
"cargo run --bin subxt metadata --version 15 --url {node_url}"
|
||||||
|
))
|
||||||
|
.out("artifacts/polkadot_metadata_full.scale");
|
||||||
|
|
||||||
|
// Use it to generate polkadot.rs
|
||||||
|
Command::make("cargo run --bin subxt codegen --file artifacts/polkadot_metadata_full.scale")
|
||||||
|
.pipe("rustfmt")
|
||||||
|
.out("testing/integration-tests/src/full_client/codegen/polkadot.rs");
|
||||||
|
|
||||||
|
// Generate a metadata file that only contains a few pallets that we need for our examples.
|
||||||
|
Command::make(r#"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "Balances,Staking,System,Multisig,Timestamp,ParaInherent""#)
|
||||||
|
.out("artifacts/polkadot_metadata_small.scale");
|
||||||
|
|
||||||
|
// Generate a metadata file that contains no pallets
|
||||||
|
Command::make(r#"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets """#)
|
||||||
|
.out("artifacts/polkadot_metadata_tiny.scale");
|
||||||
|
|
||||||
|
// Generate a metadata file that only contains some custom metadata
|
||||||
|
Command::make("cargo run --bin generate-custom-metadata")
|
||||||
|
.out("artifacts/metadata_with_custom_values.scale");
|
||||||
|
|
||||||
|
// Generate the polkadot chain spec.
|
||||||
|
Command::make("cargo run --features chain-spec-pruning --bin subxt chain-spec --url wss://rpc.polkadot.io:443 --output-file artifacts/demo_chain_specs/polkadot.json --state-root-hash --remove-substitutes").spawn().unwrap().wait().unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
trait CommandT {
|
||||||
|
/// Creates a new command, parsing the arg_string provided.
|
||||||
|
fn make(arg_string: &str) -> Self;
|
||||||
|
|
||||||
|
/// Pipes the output of the current command to the next command.
|
||||||
|
fn pipe(self, arg_string: &str) -> Self;
|
||||||
|
|
||||||
|
/// Writes bytes from stdout to a new file at path.
|
||||||
|
fn out(self, path: &str);
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CommandT for Command {
|
||||||
|
fn make(arg_string: &str) -> Self {
|
||||||
|
// Note: simple space splitting, no fancy parsing of e.g. quotes surrounding whitespace.
|
||||||
|
let mut parts = arg_string.split(' ');
|
||||||
|
let program = parts.next().expect("no program in command string");
|
||||||
|
let mut command = Command::new(program);
|
||||||
|
for e in parts {
|
||||||
|
command.arg(e);
|
||||||
|
}
|
||||||
|
command
|
||||||
|
}
|
||||||
|
|
||||||
|
fn pipe(mut self, arg_string: &str) -> Self {
|
||||||
|
// execute self
|
||||||
|
let old_cmd = self.stdout(Stdio::piped()).spawn().unwrap();
|
||||||
|
let mut next_cmd = Self::make(arg_string);
|
||||||
|
next_cmd.stdin(Stdio::from(old_cmd.stdout.unwrap()));
|
||||||
|
next_cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
fn out(mut self, path: &str) {
|
||||||
|
dbg!(path);
|
||||||
|
let file = File::create(path).unwrap();
|
||||||
|
self.stdout(Stdio::from(file))
|
||||||
|
.spawn()
|
||||||
|
.unwrap()
|
||||||
|
.wait()
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user