mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 00:37:57 +00:00
73a65711e8
* fix: construct_runtime multiple features * Update frame/support/procedural/src/construct_runtime/mod.rs Co-authored-by: Bastian Köcher <git@kchr.de>
436 lines
17 KiB
YAML
436 lines
17 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-check-benches
|
|
- .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
|
|
- |
|
|
export BASE=$(curl -s -H "Authorization: Bearer ${GITHUB_PR_TOKEN}" https://api.github.com/repos/paritytech/substrate/pulls/${$CI_COMMIT_REF_NAME} | jq .base.ref)
|
|
- if [ $CI_COMMIT_REF_NAME != "master" ]; then
|
|
git fetch origin +${BASE}:${BASE};
|
|
git fetch origin +$CI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME;
|
|
git checkout ${BASE};
|
|
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 --locked --benches --all;
|
|
cargo run --locked --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 --locked --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 --locked --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 --locked --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 --locked --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 --locked --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 --locked --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 --locked -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
|
|
- time cargo test --locked -p frame-support-test --features=frame-feature-testing,frame-feature-testing-2,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 --locked --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 --locked --target=wasm32-unknown-unknown --no-default-features
|
|
- cd ../basic
|
|
- cargo +nightly build --locked --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 --locked --manifest-path ./primitives/tracing/Cargo.toml --no-default-features
|
|
- time cargo +nightly test --locked --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 --locked --verbose --no-default-features --features full_crypto
|
|
- cd ../application-crypto
|
|
- time cargo +nightly build --locked --verbose --no-default-features --features full_crypto
|
|
- rusty-cachier cache upload
|
|
|
|
test-wasmer-sandbox:
|
|
stage: test
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs-wasmer-sandbox
|
|
variables:
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
RUST_BACKTRACE: 1
|
|
WASM_BUILD_NO_COLOR: 1
|
|
WASM_BUILD_RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
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 --locked --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 --locked --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 --locked --workspace --all-features --verbose --no-deps
|
|
- rusty-cachier cache upload
|