mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 02:17:58 +00:00
5647e71947
* construct_runtime: Fix generation of types behind features With the recent addition of supporting features in `construct_runtime!` there was a bug overseen. The `AllPalletsWithSystem` etc type declarations would be declared twice when a certain was enabled. The problem was that in the macro we didn't feature gate the types that should be declared when there is no feature enabled. This pull request now takes care of feature gating this type behind `all(#( not(feature) ))`. So, these types will only be enabled if no of the configured features is enabled. * Fix tests * FMT
429 lines
16 KiB
YAML
429 lines
16 KiB
YAML
# This file is part of .gitlab-ci.yml
|
|
# Here are all jobs that are executed during "test" stage
|
|
|
|
cargo-deny:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .nightly-pipeline
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- cargo deny check --hide-inclusion-graph -c ./scripts/ci/deny.toml
|
|
- rusty-cachier cache upload
|
|
after_script:
|
|
- !reference [.rusty-cachier, after_script]
|
|
- echo "___The complete log is in the artifacts___"
|
|
- cargo deny check -c ./scripts/ci/deny.toml 2> deny.log
|
|
artifacts:
|
|
name: $CI_COMMIT_SHORT_SHA
|
|
expire_in: 3 days
|
|
when: always
|
|
paths:
|
|
- deny.log
|
|
# FIXME: Temporarily allow to fail.
|
|
allow_failure: true
|
|
|
|
cargo-fmt:
|
|
stage: test
|
|
variables:
|
|
RUSTY_CACHIER_TOOLCHAIN: nightly
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- cargo +nightly fmt --all -- --check
|
|
- rusty-cachier cache upload
|
|
|
|
cargo-clippy:
|
|
stage: test
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: cargo-fmt
|
|
artifacts: false
|
|
variables:
|
|
RUSTY_CACHIER_TOOLCHAIN: nightly
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- SKIP_WASM_BUILD=1 env -u RUSTFLAGS cargo +nightly clippy --all-targets
|
|
- rusty-cachier cache upload
|
|
|
|
cargo-check-benches:
|
|
stage: test
|
|
variables:
|
|
# Override to use nightly toolchain
|
|
RUSTY_CACHIER_TOOLCHAIN: "nightly"
|
|
CI_JOB_NAME: "cargo-check-benches"
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
- .collect-artifacts
|
|
- .pipeline-stopper-artifacts
|
|
before_script:
|
|
# perform rusty-cachier operations before any further modifications to the git repo to make cargo feel cheated not so much
|
|
- !reference [.rust-info-script, script]
|
|
- !reference [.rusty-cachier, before_script]
|
|
- !reference [.pipeline-stopper-vars, script]
|
|
# merges in the master branch on PRs
|
|
- if [ $CI_COMMIT_REF_NAME != "master" ]; then
|
|
git fetch origin +master:master;
|
|
git fetch origin +$CI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME;
|
|
git checkout master;
|
|
git config user.email "ci@gitlab.parity.io";
|
|
git merge $CI_COMMIT_REF_NAME --verbose --no-edit;
|
|
fi
|
|
parallel: 2
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- mkdir -p ./artifacts/benches/$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
|
|
# this job is executed in parallel on two runners
|
|
- echo "___Running benchmarks___";
|
|
- case ${CI_NODE_INDEX} in
|
|
1)
|
|
SKIP_WASM_BUILD=1 time cargo +nightly check --benches --all;
|
|
cargo run --release -p node-bench -- ::trie::read::small --json
|
|
| tee ./artifacts/benches/$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA/::trie::read::small.json;
|
|
echo "___Uploading cache for rusty-cachier___";
|
|
rusty-cachier cache upload
|
|
;;
|
|
2)
|
|
cargo run --release -p node-bench -- ::node::import::native::sr25519::transfer_keep_alive::paritydb::small --json
|
|
| tee ./artifacts/benches/$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA/::node::import::native::sr25519::transfer_keep_alive::paritydb::small.json
|
|
;;
|
|
esac
|
|
tags:
|
|
- linux-docker-benches
|
|
|
|
node-bench-regression-guard:
|
|
# it's not belong to `build` semantically, but dag jobs can't depend on each other
|
|
# within the single stage - https://gitlab.com/gitlab-org/gitlab/-/issues/30632
|
|
# more: https://github.com/paritytech/substrate/pull/8519#discussion_r608012402
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs-no-trigger-prs-only
|
|
needs:
|
|
# this is a DAG
|
|
- job: cargo-check-benches
|
|
artifacts: true
|
|
# polls artifact from master to compare with current result
|
|
# need to specify both parallel jobs from master because of the bug
|
|
# https://gitlab.com/gitlab-org/gitlab/-/issues/39063
|
|
- project: $CI_PROJECT_PATH
|
|
job: "cargo-check-benches 1/2"
|
|
ref: master
|
|
artifacts: true
|
|
- project: $CI_PROJECT_PATH
|
|
job: "cargo-check-benches 2/2"
|
|
ref: master
|
|
artifacts: true
|
|
variables:
|
|
CI_IMAGE: "paritytech/node-bench-regression-guard:latest"
|
|
before_script: [""]
|
|
script:
|
|
- echo "------- IMPORTANT -------"
|
|
- echo "node-bench-regression-guard depends on the results of a cargo-check-benches job"
|
|
- echo "In case of this job failure, check your pipeline's cargo-check-benches"
|
|
- 'node-bench-regression-guard --reference artifacts/benches/master-*
|
|
--compare-with artifacts/benches/$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA'
|
|
after_script: [""]
|
|
|
|
cargo-check-subkey:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
- .pipeline-stopper-artifacts
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- cd ./bin/utils/subkey
|
|
- SKIP_WASM_BUILD=1 time cargo check --release
|
|
- rusty-cachier cache upload
|
|
|
|
cargo-check-try-runtime:
|
|
stage: test
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: cargo-check-subkey
|
|
artifacts: false
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- time cargo check --features try-runtime
|
|
- rusty-cachier cache upload
|
|
|
|
cargo-check-wasmer-sandbox:
|
|
stage: test
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: cargo-check-try-runtime
|
|
artifacts: false
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- time cargo check --features wasmer-sandbox
|
|
- rusty-cachier cache upload
|
|
|
|
test-deterministic-wasm:
|
|
stage: test
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: cargo-check-wasmer-sandbox
|
|
artifacts: false
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
variables:
|
|
WASM_BUILD_NO_COLOR: 1
|
|
# this variable gets overriden by "rusty-cachier environment inject", use the value as default
|
|
CARGO_TARGET_DIR: "$CI_PROJECT_DIR/target"
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
# build runtime
|
|
- cargo build --verbose --release -p kitchensink-runtime
|
|
# make checksum
|
|
- sha256sum $CARGO_TARGET_DIR/release/wbuild/kitchensink-runtime/target/wasm32-unknown-unknown/release/kitchensink_runtime.wasm > checksum.sha256
|
|
# clean up
|
|
- rm -rf $CARGO_TARGET_DIR/release/wbuild
|
|
# build again
|
|
- cargo build --verbose --release -p kitchensink-runtime
|
|
# confirm checksum
|
|
- sha256sum -c ./checksum.sha256
|
|
# clean up again, don't put release binaries into the cache
|
|
- rm -rf $CARGO_TARGET_DIR/release/wbuild
|
|
- rusty-cachier cache upload
|
|
|
|
test-linux-stable:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
- .pipeline-stopper-artifacts
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
RUST_BACKTRACE: 1
|
|
WASM_BUILD_NO_COLOR: 1
|
|
WASM_BUILD_RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
# Ensure we run the UI tests.
|
|
RUN_UI_TESTS: 1
|
|
# needed for rusty-cachier to keep cache in test-linux-stable folder and not in test-linux-stable-1/3
|
|
CI_JOB_NAME: "test-linux-stable"
|
|
parallel: 3
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
# this job runs all tests in former runtime-benchmarks, frame-staking and wasmtime tests
|
|
# tests are partitioned by nextest and executed in parallel on $CI_NODE_TOTAL runners
|
|
# node-cli is excluded until https://github.com/paritytech/substrate/issues/11321 fixed
|
|
- echo "Node index - ${CI_NODE_INDEX}. Total amount - ${CI_NODE_TOTAL}"
|
|
- time cargo nextest run --workspace
|
|
--locked
|
|
--release
|
|
--verbose
|
|
--features runtime-benchmarks
|
|
--manifest-path ./bin/node/cli/Cargo.toml
|
|
--exclude node-cli
|
|
--partition count:${CI_NODE_INDEX}/${CI_NODE_TOTAL}
|
|
# we need to update cache only from one job
|
|
- if [ ${CI_NODE_INDEX} == 1 ]; then rusty-cachier cache upload; fi
|
|
|
|
test-frame-support:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
RUST_BACKTRACE: 1
|
|
WASM_BUILD_NO_COLOR: 1
|
|
WASM_BUILD_RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
# Ensure we run the UI tests.
|
|
RUN_UI_TESTS: 1
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- time cargo test -p frame-support-test --features=frame-feature-testing,no-metadata-docs --manifest-path ./frame/support/test/Cargo.toml --test pallet # does not reuse cache 1 min 44 sec
|
|
- SUBSTRATE_TEST_TIMEOUT=1 time cargo test -p substrate-test-utils --release --verbose --locked -- --ignored timeout
|
|
- rusty-cachier cache upload
|
|
|
|
# This job runs tests that don't work with cargo-nextest in test-linux-stable
|
|
test-linux-stable-extra:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
RUST_BACKTRACE: 1
|
|
WASM_BUILD_NO_COLOR: 1
|
|
WASM_BUILD_RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
# Ensure we run the UI tests.
|
|
RUN_UI_TESTS: 1
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
# Run node-cli tests
|
|
# TODO: add to test-linux-stable-nextest after fix https://github.com/paritytech/substrate/issues/11321
|
|
- time cargo test node-cli --workspace --locked --release --verbose --features runtime-benchmarks --manifest-path ./bin/node/cli/Cargo.toml
|
|
# Run doctests
|
|
# TODO: add to test-linux-stable-nextest after fix https://github.com/nextest-rs/nextest/issues/16
|
|
- time cargo test --doc --workspace --locked --release --verbose --features runtime-benchmarks --manifest-path ./bin/node/cli/Cargo.toml
|
|
- rusty-cachier cache upload
|
|
|
|
# This job runs all benchmarks defined in the `/bin/node/runtime` once to check that there are no errors.
|
|
quick-benchmarks:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
RUST_BACKTRACE: "full"
|
|
WASM_BUILD_NO_COLOR: 1
|
|
WASM_BUILD_RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- time cargo run --release --features runtime-benchmarks -- benchmark pallet --execution wasm --wasm-execution compiled --chain dev --pallet "*" --extrinsic "*" --steps 2 --repeat 1
|
|
- rusty-cachier cache upload
|
|
|
|
test-frame-examples-compile-to-wasm:
|
|
# into one job
|
|
stage: test
|
|
variables:
|
|
RUSTY_CACHIER_TOOLCHAIN: nightly
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y"
|
|
RUST_BACKTRACE: 1
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- cd ./frame/examples/offchain-worker/
|
|
- cargo +nightly build --target=wasm32-unknown-unknown --no-default-features
|
|
- cd ../basic
|
|
- cargo +nightly build --target=wasm32-unknown-unknown --no-default-features
|
|
- rusty-cachier cache upload
|
|
|
|
test-linux-stable-int:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
- .pipeline-stopper-artifacts
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
RUST_BACKTRACE: 1
|
|
WASM_BUILD_NO_COLOR: 1
|
|
WASM_BUILD_RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
# Ensure we run the UI tests.
|
|
RUN_UI_TESTS: 1
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- WASM_BUILD_NO_COLOR=1
|
|
RUST_LOG=sync=trace,consensus=trace,client=trace,state-db=trace,db=trace,forks=trace,state_db=trace,storage_cache=trace
|
|
time cargo test -p node-cli --release --verbose --locked -- --ignored
|
|
- rusty-cachier cache upload
|
|
|
|
# more information about this job can be found here:
|
|
# https://github.com/paritytech/substrate/pull/6916
|
|
check-tracing:
|
|
stage: test
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: test-linux-stable-int
|
|
artifacts: false
|
|
variables:
|
|
RUSTY_CACHIER_TOOLCHAIN: nightly
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
- .pipeline-stopper-artifacts
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
# with-tracing must be explicitly activated, we run a test to ensure this works as expected in both cases
|
|
- time cargo +nightly test --manifest-path ./primitives/tracing/Cargo.toml --no-default-features
|
|
- time cargo +nightly test --manifest-path ./primitives/tracing/Cargo.toml --no-default-features --features=with-tracing
|
|
- rusty-cachier cache upload
|
|
|
|
# more information about this job can be found here:
|
|
# https://github.com/paritytech/substrate/pull/3778
|
|
test-full-crypto-feature:
|
|
stage: test
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: check-tracing
|
|
artifacts: false
|
|
variables:
|
|
RUSTY_CACHIER_TOOLCHAIN: nightly
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y"
|
|
RUST_BACKTRACE: 1
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- cd primitives/core/
|
|
- time cargo +nightly build --verbose --no-default-features --features full_crypto
|
|
- cd ../application-crypto
|
|
- time cargo +nightly build --verbose --no-default-features --features full_crypto
|
|
- rusty-cachier cache upload
|
|
|
|
test-wasmer-sandbox:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs-wasmer-sandbox
|
|
variables:
|
|
CI_JOB_NAME: "test-wasmer-sandbox"
|
|
parallel: 3
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- echo "Node index - ${CI_NODE_INDEX}. Total amount - ${CI_NODE_TOTAL}"
|
|
- time cargo nextest run --release --features runtime-benchmarks,wasmer-sandbox,disable-ui-tests --partition count:${CI_NODE_INDEX}/${CI_NODE_TOTAL}
|
|
- if [ ${CI_NODE_INDEX} == 1 ]; then rusty-cachier cache upload; fi
|
|
|
|
cargo-check-macos:
|
|
stage: test
|
|
extends: .test-refs-no-trigger
|
|
before_script:
|
|
- !reference [.rust-info-script, script]
|
|
script:
|
|
- SKIP_WASM_BUILD=1 time cargo check --release
|
|
tags:
|
|
- osx
|
|
|
|
check-rustdoc:
|
|
stage: test
|
|
variables:
|
|
RUSTY_CACHIER_TOOLCHAIN: nightly
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs
|
|
variables:
|
|
SKIP_WASM_BUILD: 1
|
|
RUSTDOCFLAGS: "-Dwarnings"
|
|
script:
|
|
- rusty-cachier snapshot create
|
|
- time cargo +nightly doc --workspace --all-features --verbose --no-deps
|
|
- rusty-cachier cache upload
|