Tests parallelized (#10452)
* tests splitted, phase 1 * typo * fix wrong launch commands * typos * rearrangements * use `nproc` function for threads * use nproc for threads * let theads be auto, build-andriod no more in regular run * split val chain and cargo check * renamed some files * wrong phase * check rust files before test jobs * lint error * rust files modivied var * test except changes * add rust_changes except * lint error * fixes * .gitlab-ci.yml can't be excluded * pipeline shouldn't start * pipeline must go * pipeline must go 2 * pipeline must go 3 * pipeline must go 4 * pipeline must go 5 * pipeline must go 6 * pipeline must go 7 * pipeline must not go 1 * pipeline must go 8 * avoid skippng tests yet, reintroducing them after the caching * test theory * parallelized cargo check with combusting helicopters * less uploads * alias for cargo checks * nice template
This commit is contained in:
parent
4320c9bc4f
commit
82a148a99b
@ -24,8 +24,7 @@ variables:
|
||||
- tags
|
||||
- schedules
|
||||
|
||||
|
||||
.collect_artifacts: &collect_artifacts
|
||||
.collect_artifacts: &collect_artifacts
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}_${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}"
|
||||
when: on_success
|
||||
@ -33,34 +32,66 @@ variables:
|
||||
paths:
|
||||
- artifacts/
|
||||
|
||||
test-linux:
|
||||
stage: test
|
||||
variables:
|
||||
RUN_TESTS: all
|
||||
script:
|
||||
- scripts/gitlab/test-all.sh
|
||||
.docker-cache-status: &docker-cache-status
|
||||
dependencies: []
|
||||
before_script:
|
||||
- sccache -s
|
||||
after_script:
|
||||
- sccache -s
|
||||
tags:
|
||||
- linux-docker
|
||||
|
||||
test-audit:
|
||||
|
||||
cargo-check 0 3:
|
||||
stage: test
|
||||
<<: *docker-cache-status
|
||||
script:
|
||||
- time cargo check --target $CARGO_TARGET --locked --no-default-features
|
||||
|
||||
cargo-check 1 3:
|
||||
stage: test
|
||||
<<: *docker-cache-status
|
||||
script:
|
||||
- time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --no-default-features
|
||||
|
||||
cargo-check 2 3:
|
||||
stage: test
|
||||
<<: *docker-cache-status
|
||||
script:
|
||||
- time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --features "mio"
|
||||
|
||||
cargo-audit:
|
||||
stage: test
|
||||
script:
|
||||
- set -e
|
||||
- set -u
|
||||
- cargo audit
|
||||
tags:
|
||||
- linux-docker
|
||||
|
||||
validate-chainspecs:
|
||||
stage: test
|
||||
<<: *docker-cache-status
|
||||
script:
|
||||
- ./scripts/gitlab/validate-chainspecs.sh
|
||||
|
||||
test-cpp:
|
||||
stage: build
|
||||
<<: *docker-cache-status
|
||||
script:
|
||||
- ./scripts/gitlab/test-cpp.sh
|
||||
|
||||
test-linux:
|
||||
stage: build
|
||||
<<: *docker-cache-status
|
||||
script:
|
||||
- ./scripts/gitlab/test-linux.sh
|
||||
|
||||
build-linux: &build-linux
|
||||
stage: build
|
||||
only: *releaseable_branches
|
||||
<<: *docker-cache-status
|
||||
script:
|
||||
- scripts/gitlab/build-unix.sh
|
||||
- sccache -s
|
||||
- scripts/gitlab/build-linux.sh
|
||||
<<: *collect_artifacts
|
||||
tags:
|
||||
- linux-docker
|
||||
|
||||
build-linux-i386:
|
||||
<<: *build-linux
|
||||
@ -88,7 +119,7 @@ build-darwin:
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
script:
|
||||
- scripts/gitlab/build-unix.sh
|
||||
- scripts/gitlab/build-linux.sh
|
||||
tags:
|
||||
- rust-osx
|
||||
<<: *collect_artifacts
|
||||
@ -203,14 +234,12 @@ publish-docs:
|
||||
- linux-docker
|
||||
|
||||
build-android:
|
||||
stage: optional
|
||||
stage: build
|
||||
image: parity/rust-android:gitlab-ci
|
||||
variables:
|
||||
CARGO_TARGET: armv7-linux-androideabi
|
||||
dependencies: []
|
||||
script:
|
||||
- scripts/gitlab/build-unix.sh
|
||||
- scripts/gitlab/build-linux.sh
|
||||
tags:
|
||||
- linux-docker
|
||||
allow_failure: true
|
||||
<<: *collect_artifacts
|
||||
|
@ -1,7 +1,9 @@
|
||||
#!/bin/bash
|
||||
echo "________Running rust_changes.sh________"
|
||||
set -e # fail on any error
|
||||
set -u # treat unset variables as error
|
||||
|
||||
echo "__________Checking if Rust files were changed__________"
|
||||
git log --graph --oneline --decorate=short -n 10
|
||||
|
||||
case ${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}} in
|
||||
@ -26,5 +28,3 @@ then
|
||||
fi
|
||||
|
||||
rustup show
|
||||
|
||||
exec ./test.sh
|
17
scripts/gitlab/test-cpp.sh
Executable file
17
scripts/gitlab/test-cpp.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
echo "________Running test-cpp.sh________"
|
||||
set -e # fail on any error
|
||||
set -u # treat unset variables as error
|
||||
#use nproc `linux only
|
||||
THREADS=$(nproc)
|
||||
|
||||
echo "________Running the C++ example________"
|
||||
DIR=parity-clib/examples/cpp/build
|
||||
mkdir -p $DIR
|
||||
cd $DIR
|
||||
cmake ..
|
||||
make -j $THREADS
|
||||
# Note: we don't try to run the example because it tries to sync Kovan, and we don't want
|
||||
# that to happen on CI
|
||||
cd -
|
||||
rm -rf $DIR
|
12
scripts/gitlab/test-linux.sh
Executable file
12
scripts/gitlab/test-linux.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
echo "________Running test-linux.sh________"
|
||||
set -e # fail on any error
|
||||
set -u # treat unset variables as error
|
||||
|
||||
FEATURES="json-tests,ci-skip-tests"
|
||||
OPTIONS="--release"
|
||||
#use nproc `linux only
|
||||
THREADS=$(nproc)
|
||||
|
||||
echo "________Running Parity Full Test Suite________"
|
||||
time cargo test $OPTIONS --features "$FEATURES" --locked --all --target $CARGO_TARGET -- --test-threads $THREADS
|
@ -1,7 +1,12 @@
|
||||
#!/usr/bin/env sh
|
||||
#!/bin/bash
|
||||
set -e # fail on any error
|
||||
set -u # treat unset variables as error
|
||||
echo "________Running validate_chainspecs.sh________"
|
||||
|
||||
ERR=0
|
||||
cargo build --release -p chainspec
|
||||
|
||||
echo "________Validate chainspecs________"
|
||||
time cargo build --release -p chainspec
|
||||
|
||||
for spec in ethcore/res/*.json; do
|
||||
if ! ./target/release/chainspec "$spec"; then ERR=1; fi
|
79
test.sh
79
test.sh
@ -1,79 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Running Parity Full Test Suite
|
||||
echo "________Running test.sh________"
|
||||
|
||||
FEATURES="json-tests,ci-skip-tests"
|
||||
OPTIONS="--release"
|
||||
VALIDATE=1
|
||||
THREADS=8
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
validate () {
|
||||
if [ "$VALIDATE" -eq "1" ]
|
||||
then
|
||||
echo "________Validate build________"
|
||||
time cargo check $@ --locked --no-default-features
|
||||
time cargo check $@ --locked --manifest-path util/io/Cargo.toml --no-default-features
|
||||
time cargo check $@ --locked --manifest-path util/io/Cargo.toml --features "mio"
|
||||
|
||||
# Validate chainspecs
|
||||
echo "________Validate chainspecs________"
|
||||
time ./scripts/validate_chainspecs.sh
|
||||
else
|
||||
echo "# not validating due to \$VALIDATE!=1"
|
||||
fi
|
||||
}
|
||||
|
||||
cpp_test () {
|
||||
case $CARGO_TARGET in
|
||||
(x86_64-unknown-linux-gnu)
|
||||
# Running the C++ example
|
||||
echo "________Running the C++ example________"
|
||||
DIR=parity-clib/examples/cpp/build
|
||||
mkdir -p $DIR
|
||||
cd $DIR
|
||||
cmake ..
|
||||
make -j $THREADS
|
||||
# Note: we don't try to run the example because it tries to sync Kovan, and we don't want
|
||||
# that to happen on CI
|
||||
cd -
|
||||
rm -rf $DIR
|
||||
;;
|
||||
(*)
|
||||
echo "________Skipping the C++ example________"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
cargo_test () {
|
||||
echo "________Running Parity Full Test Suite________"
|
||||
git submodule update --init --recursive
|
||||
time cargo test $OPTIONS --features "$FEATURES" --locked --all $@ -- --test-threads $THREADS
|
||||
}
|
||||
|
||||
|
||||
if [ "$CARGO_TARGET" ]
|
||||
then
|
||||
validate --target $CARGO_TARGET
|
||||
else
|
||||
validate
|
||||
fi
|
||||
|
||||
test "${RUN_TESTS}" = "all" && cpp_test
|
||||
|
||||
if [ "$CARGO_TARGET" ]
|
||||
then
|
||||
|
||||
case "${RUN_TESTS}" in
|
||||
(cargo|all)
|
||||
cargo_test --target $CARGO_TARGET $@
|
||||
;;
|
||||
('')
|
||||
cargo_test --no-run --target $CARGO_TARGET $@
|
||||
;;
|
||||
esac
|
||||
else
|
||||
cargo_test $@
|
||||
fi
|
Loading…
Reference in New Issue
Block a user