Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ default:
# exclude cargo-check-benches from such runs
.test-refs-check-benches:
rules:
- if: $CI_COMMIT_REF_NAME == "master" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $CI_IMAGE =~ /staging$/
- if: $CI_COMMIT_REF_NAME == "master" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $CI_IMAGE =~ /staging$/
when: never
- if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_PIPELINE_SOURCE == "schedule"
Expand Down Expand Up @@ -313,10 +313,25 @@ cancel-pipeline-test-linux-stable-int:
needs:
- job: test-linux-stable-int

cancel-pipeline-cargo-check-subkey:
cancel-pipeline-cargo-check-each-crate-1:
extends: .cancel-pipeline-template
needs:
- job: cargo-check-subkey
- job: "cargo-check-each-crate 1/2"

cancel-pipeline-cargo-check-each-crate-2:
extends: .cancel-pipeline-template
needs:
- job: "cargo-check-each-crate 2/2"

cancel-pipeline-cargo-check-each-crate-macos-1:
extends: .cancel-pipeline-template
needs:
- job: "cargo-check-each-crate-macos 1/2"

cancel-pipeline-cargo-check-each-crate-macos-2:
extends: .cancel-pipeline-template
needs:
- job: "cargo-check-each-crate-macos 2/2"

cancel-pipeline-check-tracing:
extends: .cancel-pipeline-template
Expand Down
2 changes: 1 addition & 1 deletion frame/contracts/proc-macro/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ proc-macro = true
[dependencies]
proc-macro2 = "1"
quote = "1"
syn = "1.0.98"
syn = { version = "1.0.98", features = ["full"] }

[dev-dependencies]

Expand Down
33 changes: 33 additions & 0 deletions scripts/ci/gitlab/check-each-crate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bash

## A script that checks each workspace crate individually.
## It's relevant to check workspace crates individually because otherwise their compilation problems
## due to feature misconfigurations won't be caught, as exemplified by
## https://github.com/paritytech/substrate/issues/12705

set -Eeu -o pipefail
shopt -s inherit_errexit

set -x

target_group="$1"
groups_total="$2"

readarray -t workspace_crates < <(\
cargo tree --workspace --depth 0 | \
awk '{ if (length($1) == 0 || substr($1, 1, 1) == "[") { skip } else { print $1 } }'
)

crates_total=${#workspace_crates[*]}
crates_per_group=$(( (crates_total / groups_total) + (crates_total % groups_total > 0) ))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the > 0 doing here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a comment in 53f28d5


group=1
for ((i=0; i < crates_total; i += crates_per_group)); do
if [ $group -eq "$target_group" ]; then
for crate in "${workspace_crates[@]:$i:$crates_per_group}"; do
cargo check --locked --release -p "$crate"
done
break
fi
group=$(( group + 1 ))
done
3 changes: 0 additions & 3 deletions scripts/ci/gitlab/pipeline/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,6 @@ build-linux-substrate:
variables:
# this variable gets overriden by "rusty-cachier environment inject", use the value as default
CARGO_TARGET_DIR: "$CI_PROJECT_DIR/target"
needs:
- job: cargo-check-subkey
artifacts: false
before_script:
- mkdir -p ./artifacts/subkey
- !reference [.rusty-cachier, before_script]
Expand Down
60 changes: 32 additions & 28 deletions scripts/ci/gitlab/pipeline/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,24 +133,8 @@ node-bench-regression-guard:
--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
Expand Down Expand Up @@ -393,6 +377,9 @@ test-full-crypto-feature:

test-wasmer-sandbox:
stage: test
needs:
- job: cargo-check-wasmer-sandbox
artifacts: false
extends:
- .docker-env
- .test-refs-wasmer-sandbox
Expand All @@ -409,18 +396,6 @@ test-wasmer-sandbox:
- 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]
variables:
SKIP_WASM_BUILD: 1
script:
- time cargo check --locked --release
tags:
- osx

check-rustdoc:
stage: test
variables:
Expand All @@ -435,3 +410,32 @@ check-rustdoc:
- rusty-cachier snapshot create
- time cargo +nightly doc --locked --workspace --all-features --verbose --no-deps
- rusty-cachier cache upload

.cargo-check-each-crate_template: &cargo-check-each-crate_template
stage: test
extends:
- .docker-env
- .test-refs
parallel: 2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will not work for a mac runner, we have only one currently

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm alright, I'll refactor this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed parallel for Mac runners in the newer commits


cargo-check-each-crate:
<<: *cargo-check-each-crate_template
variables:
# $CI_JOB_NAME is set manually so that rusty-cachier can share the cache for all
# "cargo-check-each-crate I/N" jobs
CI_JOB_NAME: cargo-check-each-crate
before_script:
- !reference [.rust-info-script, script]
- !reference [.rusty-cachier, before_script]
script:
- rusty-cachier snapshot create
- ./scripts/ci/gitlab/check-each-crate.sh "$CI_NODE_INDEX" "$CI_NODE_TOTAL"
# need to update cache only from one job
- if [ "$CI_NODE_INDEX" == 1 ]; then rusty-cachier cache upload; fi

cargo-check-each-crate-macos:
<<: *cargo-check-each-crate_template
script:
- ./scripts/ci/gitlab/check-each-crate.sh "$CI_NODE_INDEX" "$CI_NODE_TOTAL"
tags:
- osx