check.yml 5.34 KiB
Newer Older
cargo-clippy:
  stage: check
  extends:
    - .docker-env
    - .common-refs
    - .pipeline-stopper-artifacts
  script:
    - SKIP_WASM_BUILD=1 env -u RUSTFLAGS cargo clippy --all-targets --locked --workspace

check-try-runtime:
  stage: check
  extends:
    - .docker-env
    - .common-refs
  script:
    - time cargo check --locked --all --features try-runtime
    # this is taken from cumulus
    # Check that parachain-template will compile with `try-runtime` feature flag.
    - time cargo check --locked -p parachain-template-node --features try-runtime
    # add after https://github.com/paritytech/substrate/pull/14502 is merged
    # experimental code may rely on try-runtime and vice-versa
    - time cargo check --locked --features try-runtime,experimental

cargo-fmt-manifest:
  stage: check
  extends:
    - .docker-env
    - .common-refs
  script:
Oliver Tale-Yazdi's avatar
Oliver Tale-Yazdi committed
    - cargo install zepter --locked --version 0.11.0 -q -f --no-default-features && zepter --version
    - echo "👉 Hello developer! If you see this CI check failing then it means that one of the your changes in a Cargo.toml file introduced ill-formatted or unsorted features. Please take a look at 'docs/STYLE_GUIDE.md#manifest-formatting' to find out more."
    - zepter format features --check
  allow_failure: true # Experimental

Alexander Samusev's avatar
Alexander Samusev committed
# FIXME
.cargo-deny-licenses:
  stage: check
  extends:
    - .docker-env
    - .test-pr-refs
  variables:
    CARGO_DENY_CMD: "cargo deny --all-features check licenses -c ./substrate/scripts/ci/deny.toml"
  script:
    - $CARGO_DENY_CMD --hide-inclusion-graph
  after_script:
    - echo "___The complete log is in the artifacts___"
    - $CARGO_DENY_CMD 2> deny.log
    - if [ $CI_JOB_STATUS != 'success' ]; then
      echo 'Please check license of your crate or add an exception to scripts/ci/deny.toml';
      fi
  allow_failure: true
  artifacts:
    name: $CI_COMMIT_SHORT_SHA
    expire_in: 3 days
    when: always
    paths:
      - deny.log

# from substrate
# not sure if it's needed in monorepo
check-dependency-rules:
  stage: check
  extends:
    - .kubernetes-env
    - .test-refs-no-trigger-prs-only
  variables:
    CI_IMAGE: "paritytech/tools:latest"
  allow_failure: true
  script:
    - cd substrate/
    - ../.gitlab/ensure-deps.sh

test-rust-features:
  stage: check
  extends:
    - .kubernetes-env
    - .test-refs-no-trigger-prs-only
  script:
    - git clone
      --depth=1
      --branch="master"
      https://github.com/paritytech/pipeline-scripts
    - bash ./pipeline-scripts/rust-features.sh .

job-starter:
  stage: check
  image: paritytech/tools:latest
  extends:
    - .kubernetes-env
    - .common-refs
  allow_failure: true
  script:
    - echo ok

test-rust-feature-propagation:
  stage: check
  extends:
    - .kubernetes-env
    - .test-pr-refs
  script:
Oliver Tale-Yazdi's avatar
Oliver Tale-Yazdi committed
    - cargo install --locked --version 0.11.1 -q -f zepter && zepter --version
    - echo "👉 Hello developer! If you see this CI check failing then it means that one of the crates is missing a feature for one of its dependencies. The output below tells you which feature needs to be added for which dependency to which crate. You can do this by modifying the Cargo.toml file. For more context see the MR where this check was introduced https://github.com/paritytech/substrate/pull/14660"
    - zepter lint propagate-feature --feature try-runtime --left-side-feature-missing=ignore --workspace --feature-enables-dep="try-runtime:frame-try-runtime" --locked
    - zepter lint propagate-feature --feature runtime-benchmarks --left-side-feature-missing=ignore --workspace --feature-enables-dep="runtime-benchmarks:frame-benchmarking" --locked
    - zepter lint propagate-feature --feature std --left-side-feature-missing=ignore --workspace --locked

# More info can be found here: https://github.com/paritytech/polkadot/pull/5865
.check-runtime-migration:
  stage: check
  extends:
    - .docker-env
    - .test-pr-refs
  script:
    - |
      export RUST_LOG=remote-ext=debug,runtime=debug
      echo "---------- Running try-runtime for ${NETWORK} ----------"
      time cargo install --locked --git https://github.com/paritytech/try-runtime-cli --rev a93c9b5abe5d31a4cf1936204f7e5c489184b521
      time cargo build --release --locked -p "$NETWORK"-runtime --features try-runtime
      time try-runtime \
          --runtime ./target/release/wbuild/"$NETWORK"-runtime/target/wasm32-unknown-unknown/release/"$NETWORK"_runtime.wasm \
          on-runtime-upgrade --checks=pre-and-post live --uri wss://${NETWORK}-try-runtime-node.parity-chains.parity.io:443

check-runtime-migration-westend:
  stage: check
  extends:
    - .docker-env
    - .test-pr-refs
    - .check-runtime-migration
  variables:
    NETWORK: "westend"

check-runtime-migration-rococo:
  stage: check
Alexander Samusev's avatar
Alexander Samusev committed
  # DAG
  needs:
    - job: check-runtime-migration-westend
      artifacts: false
  extends:
    - .docker-env
    - .test-pr-refs
    - .check-runtime-migration
  variables:
    NETWORK: "rococo"

find-fail-ci-phrase:
  stage: check
  variables:
    CI_IMAGE: "paritytech/tools:latest"
    ASSERT_REGEX: "FAIL-CI"
    GIT_DEPTH: 1
  extends:
    - .kubernetes-env
    - .test-pr-refs
  script:
    - set +e
    - rg --line-number --hidden --type rust --glob '!{.git,target}' "$ASSERT_REGEX" .; exit_status=$?
    - if [ $exit_status -eq 0 ]; then
      echo "$ASSERT_REGEX was found, exiting with 1";
      exit 1;
      else
      echo "No $ASSERT_REGEX was found, exiting with 0";
      exit 0;
      fi