Skip to content
check.yml 6.68 KiB
Newer Older
cargo-clippy:
  stage: check
  extends:
    - .docker-env
    - .common-refs
  script:
    - SKIP_WASM_BUILD=1 env -u RUSTFLAGS cargo clippy --all-targets --locked --workspace
  # fixme!
  allow_failure: true

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:
    - cargo install zepter --locked --version 0.10.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

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:
    # - !reference [.rusty-cachier, 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

spellcheck:
  stage: check
  extends:
    - .kubernetes-env
    - .common-refs
  script:
    - cargo spellcheck --version
    # compare with the commit parent to the PR, given it's from a default branch
    - git fetch origin +${CI_DEFAULT_BRANCH}:${CI_DEFAULT_BRANCH}
    - echo "___Spellcheck is going to check your diff___"
    - cargo spellcheck list-files -vvv $(git diff --diff-filter=AM --name-only $(git merge-base ${CI_COMMIT_SHA} ${CI_DEFAULT_BRANCH} -- :^bridges))
    - time cargo spellcheck check -vvv --cfg=.gitlab/spellcheck.toml --checkers hunspell --code 1
      $(git diff --diff-filter=AM --name-only $(git merge-base ${CI_COMMIT_SHA} ${CI_DEFAULT_BRANCH} -- :^bridges))
  allow_failure: true

# 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:
    - cargo install --locked --version 0.10.0 -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
  allow_failure: true # Experimental

# 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-polkadot:
  stage: check
  extends:
    - .docker-env
    - .test-pr-refs
    - .check-runtime-migration
  variables:
    NETWORK: "polkadot"
  allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107

check-runtime-migration-kusama:
  stage: check
  extends:
    - .docker-env
    - .test-pr-refs
    - .check-runtime-migration
  variables:
    NETWORK: "kusama"
  allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107

check-runtime-migration-westend:
  stage: check
  extends:
    - .docker-env
    - .test-pr-refs
    - .check-runtime-migration
  variables:
    NETWORK: "westend"
  allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107

check-runtime-migration-rococo:
  stage: check
  extends:
    - .docker-env
    - .test-pr-refs
    - .check-runtime-migration
  variables:
    NETWORK: "rococo"
  allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107

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