forked from paritytech/parity-bridges-common
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add CI for monorepo (paritytech#1145)
* Add CI for monorepo * fix frame tests * Format features Signed-off-by: Oliver Tale-Yazdi <[email protected]> * add note for skipping tests and disable test-linux-stable-all * Fix tests and compile issues (paritytech#1152) * Fix feature dependant import Signed-off-by: Oliver Tale-Yazdi <[email protected]> * Bump test timeout Signed-off-by: Oliver Tale-Yazdi <[email protected]> * Remove feature gate Signed-off-by: Oliver Tale-Yazdi <[email protected]> * Add resolver 2 Signed-off-by: Oliver Tale-Yazdi <[email protected]> * Remove old lockfile Signed-off-by: Oliver Tale-Yazdi <[email protected]> * Format features Signed-off-by: Oliver Tale-Yazdi <[email protected]> --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]> * Fix check-dependency-rules Signed-off-by: Oliver Tale-Yazdi <[email protected]> * rm test-runtime Signed-off-by: Oliver Tale-Yazdi <[email protected]> * Actually fix script Signed-off-by: Oliver Tale-Yazdi <[email protected]> * enable cargo-check-each-crate-macos * Run check-each-crate on 6 machines (paritytech#1163) --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: Oliver Tale-Yazdi <[email protected]>
- Loading branch information
Showing
157 changed files
with
4,970 additions
and
18,573 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# | ||
# An auto defined `clippy` feature was introduced, | ||
# but it was found to clash with user defined features, | ||
# so was renamed to `cargo-clippy`. | ||
# | ||
# If you want standard clippy run: | ||
# RUSTFLAGS= cargo clippy | ||
[target.'cfg(feature = "cargo-clippy")'] | ||
rustflags = [ | ||
"-Aclippy::all", | ||
"-Dclippy::correctness", | ||
"-Aclippy::if-same-then-else", | ||
"-Aclippy::clone-double-ref", | ||
"-Dclippy::complexity", | ||
"-Aclippy::zero-prefixed-literal", # 00_1000_000 | ||
"-Aclippy::type_complexity", # raison d'etre | ||
"-Aclippy::nonminimal-bool", # maybe | ||
"-Aclippy::borrowed-box", # Reasonable to fix this one | ||
"-Aclippy::too-many-arguments", # (Turning this on would lead to) | ||
"-Aclippy::unnecessary_cast", # Types may change | ||
"-Aclippy::identity-op", # One case where we do 0 + | ||
"-Aclippy::useless_conversion", # Types may change | ||
"-Aclippy::unit_arg", # styalistic. | ||
"-Aclippy::option-map-unit-fn", # styalistic | ||
"-Aclippy::bind_instead_of_map", # styalistic | ||
"-Aclippy::erasing_op", # E.g. 0 * DOLLARS | ||
"-Aclippy::eq_op", # In tests we test equality. | ||
"-Aclippy::while_immutable_condition", # false positives | ||
"-Aclippy::needless_option_as_deref", # false positives | ||
"-Aclippy::derivable_impls", # false positives | ||
"-Aclippy::stable_sort_primitive", # prefer stable sort | ||
"-Aclippy::extra-unused-type-parameters", # stylistic | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
# This is the default config used by nextest. It is embedded in the binary at | ||
# build time. It may be used as a template for .config/nextest.toml. | ||
|
||
[store] | ||
# The directory under the workspace root at which nextest-related files are | ||
# written. Profile-specific storage is currently written to dir/<profile-name>. | ||
dir = "target/nextest" | ||
|
||
# This section defines the default nextest profile. Custom profiles are layered | ||
# on top of the default profile. | ||
[profile.default] | ||
# "retries" defines the number of times a test should be retried. If set to a | ||
# non-zero value, tests that succeed on a subsequent attempt will be marked as | ||
# non-flaky. Can be overridden through the `--retries` option. | ||
# Examples | ||
# * retries = 3 | ||
# * retries = { backoff = "fixed", count = 2, delay = "1s" } | ||
# * retries = { backoff = "exponential", count = 10, delay = "1s", jitter = true, max-delay = "10s" } | ||
retries = 5 | ||
|
||
# The number of threads to run tests with. Supported values are either an integer or | ||
# the string "num-cpus". Can be overridden through the `--test-threads` option. | ||
# test-threads = "num-cpus" | ||
|
||
test-threads = 20 | ||
|
||
# The number of threads required for each test. This is generally used in overrides to | ||
# mark certain tests as heavier than others. However, it can also be set as a global parameter. | ||
threads-required = 1 | ||
|
||
# Show these test statuses in the output. | ||
# | ||
# The possible values this can take are: | ||
# * none: no output | ||
# * fail: show failed (including exec-failed) tests | ||
# * retry: show flaky and retried tests | ||
# * slow: show slow tests | ||
# * pass: show passed tests | ||
# * skip: show skipped tests (most useful for CI) | ||
# * all: all of the above | ||
# | ||
# Each value includes all the values above it; for example, "slow" includes | ||
# failed and retried tests. | ||
# | ||
# Can be overridden through the `--status-level` flag. | ||
status-level = "pass" | ||
|
||
# Similar to status-level, show these test statuses at the end of the run. | ||
final-status-level = "flaky" | ||
|
||
# "failure-output" defines when standard output and standard error for failing tests are produced. | ||
# Accepted values are | ||
# * "immediate": output failures as soon as they happen | ||
# * "final": output failures at the end of the test run | ||
# * "immediate-final": output failures as soon as they happen and at the end of | ||
# the test run; combination of "immediate" and "final" | ||
# * "never": don't output failures at all | ||
# | ||
# For large test suites and CI it is generally useful to use "immediate-final". | ||
# | ||
# Can be overridden through the `--failure-output` option. | ||
failure-output = "immediate" | ||
|
||
# "success-output" controls production of standard output and standard error on success. This should | ||
# generally be set to "never". | ||
success-output = "never" | ||
|
||
# Cancel the test run on the first failure. For CI runs, consider setting this | ||
# to false. | ||
fail-fast = true | ||
|
||
# Treat a test that takes longer than the configured 'period' as slow, and print a message. | ||
# See <https://nexte.st/book/slow-tests> for more information. | ||
# | ||
# Optional: specify the parameter 'terminate-after' with a non-zero integer, | ||
# which will cause slow tests to be terminated after the specified number of | ||
# periods have passed. | ||
# Example: slow-timeout = { period = "60s", terminate-after = 2 } | ||
slow-timeout = { period = "60s" } | ||
|
||
# Treat a test as leaky if after the process is shut down, standard output and standard error | ||
# aren't closed within this duration. | ||
# | ||
# This usually happens in case of a test that creates a child process and lets it inherit those | ||
# handles, but doesn't clean the child process up (especially when it fails). | ||
# | ||
# See <https://nexte.st/book/leaky-tests> for more information. | ||
leak-timeout = "100ms" | ||
|
||
[profile.default.junit] | ||
# Output a JUnit report into the given file inside 'store.dir/<profile-name>'. | ||
# If unspecified, JUnit is not written out. | ||
|
||
path = "junit.xml" | ||
|
||
# The name of the top-level "report" element in JUnit report. If aggregating | ||
# reports across different test runs, it may be useful to provide separate names | ||
# for each report. | ||
report-name = "substrate" | ||
|
||
# Whether standard output and standard error for passing tests should be stored in the JUnit report. | ||
# Output is stored in the <system-out> and <system-err> elements of the <testcase> element. | ||
store-success-output = false | ||
|
||
# Whether standard output and standard error for failing tests should be stored in the JUnit report. | ||
# Output is stored in the <system-out> and <system-err> elements of the <testcase> element. | ||
# | ||
# Note that if a description can be extracted from the output, it is always stored in the | ||
# <description> element. | ||
store-failure-output = true | ||
|
||
# This profile is activated if MIRI_SYSROOT is set. | ||
[profile.default-miri] | ||
# Miri tests take up a lot of memory, so only run 1 test at a time by default. | ||
test-threads = 1 | ||
|
||
# Mutual exclusion of tests with `cargo build` invocation as a lock to avoid multiple | ||
# simultaneous invocations clobbering each other. | ||
[test-groups] | ||
serial-integration = { max-threads = 1 } | ||
|
||
# Running UI tests sequentially | ||
# More info can be found here: https://github.com/paritytech/ci_cd/issues/754 | ||
[[profile.default.overrides]] | ||
filter = 'test(/(^ui$|_ui|ui_)/)' | ||
test-group = 'serial-integration' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
# 🔒 PROTECTED: Changes to locks-review-team should be approved by the current locks-review-team | ||
locks-review-team: locks-review | ||
team-leads-team: polkadot-review | ||
action-review-team: ci | ||
|
||
rules: | ||
- name: CI files | ||
check_type: changed_files | ||
condition: | ||
include: ^\.gitlab-ci\.yml|^docker/.*|^\.github/.*|^\.gitlab/.*|^\.config/nextest.toml|^\.cargo/.* | ||
exclude: ^./gitlab/pipeline/zombienet.yml$ | ||
min_approvals: 2 | ||
teams: | ||
- ci | ||
- release-engineering | ||
|
||
- name: Audit rules | ||
check_type: changed_files | ||
condition: | ||
include: ^polkadot/runtime\/(kusama|polkadot|common)\/.*|^polkadot/primitives/src\/.+\.rs$|^substrate/primitives/.*|^substrate/frame/.* | ||
exclude: ^polkadot/runtime\/(kusama|polkadot)\/src\/weights\/.+\.rs$|^substrate\/frame\/.+\.md$ | ||
all_distinct: | ||
- min_approvals: 1 | ||
teams: | ||
- locks-review | ||
- min_approvals: 1 | ||
teams: | ||
- polkadot-review | ||
- min_approvals: 2 | ||
teams: | ||
- srlabs | ||
|
||
- name: Core developers | ||
check_type: changed_files | ||
condition: | ||
include: .* | ||
# excluding files from 'Runtime files' and 'CI files' rules | ||
exclude: ^polkadot/runtime/(kusama|polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/assets/(asset-hub-kusama|asset-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/bridge-hubs/(bridge-hub-kusama|bridge-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/collectives/collectives-polkadot/src/[^/]+\.rs$|^cumulus/parachains/common/src/[^/]+\.rs$|^substrate/frame/(?!.*(nfts/.*|uniques/.*|babe/.*|grandpa/.*|beefy|merkle-mountain-range/.*|contracts/.*|election|nomination-pools/.*|staking/.*|aura/.*))|^polkadot/runtime/(kusama|polkadot)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^(?!.*\.dic$|.*spellcheck\.toml$)scripts/ci/.*|^\.github/.* | ||
min_approvals: 2 | ||
teams: | ||
- core-devs | ||
|
||
# cumulus | ||
- name: Runtime files cumulus | ||
check_type: changed_files | ||
condition: ^cumulus/parachains/runtimes/assets/(asset-hub-kusama|asset-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/bridge-hubs/(bridge-hub-kusama|bridge-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/collectives/collectives-polkadot/src/[^/]+\.rs$|^cumulus/parachains/common/src/[^/]+\.rs$ | ||
all_distinct: | ||
- min_approvals: 1 | ||
teams: | ||
- locks-review | ||
- min_approvals: 1 | ||
teams: | ||
- polkadot-review | ||
|
||
# if there are any changes in the bridges subtree (in case of backport changes back to bridges repo) | ||
- name: Bridges subtree files | ||
check_type: changed_files | ||
condition: ^cumulus/bridges/.* | ||
min_approvals: 1 | ||
teams: | ||
- bridges-core | ||
|
||
# substrate | ||
|
||
- name: FRAME coders substrate | ||
check_type: changed_files | ||
condition: | ||
include: ^substrate/frame/(?!.*(nfts/.*|uniques/.*|babe/.*|grandpa/.*|beefy|merkle-mountain-range/.*|contracts/.*|election|nomination-pools/.*|staking/.*|aura/.*)) | ||
all: | ||
- min_approvals: 2 | ||
teams: | ||
- core-devs | ||
- min_approvals: 1 | ||
teams: | ||
- frame-coders | ||
|
||
prevent-review-request: | ||
teams: | ||
- core-devs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# name: Check D labels | ||
# disabled in favor of pr-custom-review | ||
|
||
# on: | ||
# pull_request: | ||
# types: [labeled, opened, synchronize, unlabeled] | ||
# paths: | ||
# - cumulus/primitives/** | ||
# - polkadot/runtime/polkadot/** | ||
# - polkadot/runtime/kusama/** | ||
# - polkadot/runtime/common/** | ||
# - polkadot/primitives/src/** | ||
# - substrate/frame/** | ||
# - substrate/primitives/** | ||
|
||
# jobs: | ||
# check-labels: | ||
# runs-on: ubuntu-latest | ||
# steps: | ||
# - name: Pull image | ||
# env: | ||
# IMAGE: paritytech/ruled_labels:0.4.0 | ||
# run: docker pull $IMAGE | ||
|
||
# - name: Check labels | ||
# env: | ||
# IMAGE: paritytech/ruled_labels:0.4.0 | ||
# MOUNT: /work | ||
# GITHUB_PR: ${{ github.event.pull_request.number }} | ||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
# API_BASE: https://api.github.com/repos | ||
# REPO: ${{ github.repository }} | ||
# RULES_PATH: labels/ruled_labels | ||
# CHECK_SPECS: specs_cumulus.yaml | ||
# run: | | ||
# echo "REPO: ${REPO}" | ||
# echo "GITHUB_PR: ${GITHUB_PR}" | ||
# # Clone repo with labels specs | ||
# git clone https://github.com/paritytech/labels | ||
# # Fetch the labels for the PR under test | ||
# labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",") | ||
|
||
# if [ -z "${labels}" ]; then | ||
# docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags audit --no-label | ||
# fi | ||
|
||
# labels_args=${labels: :-1} | ||
# printf "Checking labels: %s\n" "${labels_args}" | ||
|
||
# # Prevent the shell from splitting labels with spaces | ||
# IFS="," | ||
|
||
# # --dev is more useful to debug mode to debug | ||
# docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags audit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
name: Check labels | ||
|
||
on: | ||
pull_request: | ||
types: [labeled, opened, synchronize, unlabeled] | ||
|
||
jobs: | ||
check-labels: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Pull image | ||
env: | ||
IMAGE: paritytech/ruled_labels:0.4.0 | ||
run: docker pull $IMAGE | ||
|
||
- name: Check labels | ||
env: | ||
IMAGE: paritytech/ruled_labels:0.4.0 | ||
MOUNT: /work | ||
GITHUB_PR: ${{ github.event.pull_request.number }} | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
API_BASE: https://api.github.com/repos | ||
REPO: ${{ github.repository }} | ||
RULES_PATH: labels/ruled_labels | ||
CHECK_SPECS: "[DRAFT]specs_monorepo.yaml" | ||
run: | | ||
echo "REPO: ${REPO}" | ||
echo "GITHUB_PR: ${GITHUB_PR}" | ||
# Clone repo with labels specs | ||
echo "Cloning repo with labels specs" | ||
# Temporary, before https://github.com/paritytech/labels/pull/29 is not merged | ||
git clone https://github.com/paritytech/labels | ||
cd labels | ||
git fetch origin the-right-joyce-monorepo-labels | ||
git checkout the-right-joyce-monorepo-labels | ||
cd .. | ||
# Fetch the labels for the PR under test | ||
echo "Fetch the labels for $API_BASE/${REPO}/pulls/${GITHUB_PR}" | ||
labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",") | ||
echo "Labels: ${labels}" | ||
if [ -z "${labels}" ]; then | ||
echo "No labels found, checking without them" | ||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --no-label | ||
fi | ||
labels_args=${labels: :-1} | ||
printf "Checking labels: %s\n" "${labels_args}" | ||
# Prevent the shell from splitting labels with spaces | ||
IFS="," | ||
# --dev is more useful to debug mode to debug | ||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags PR |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
name: Rustfmt check | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
types: [opened, synchronize, reopened, ready_for_review] | ||
|
||
jobs: | ||
quick_check: | ||
strategy: | ||
matrix: | ||
os: ["ubuntu-latest"] | ||
runs-on: ${{ matrix.os }} | ||
container: | ||
image: paritytech/ci-unified:bullseye-1.70.0-2023-05-23-v20230706 | ||
steps: | ||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | ||
|
||
- name: Cargo fmt | ||
run: cargo +nightly fmt --all -- --check |
Oops, something went wrong.