[CI]Chaostest suite initiation (#5793)

* Initiate chaostest cli test suite: singlenodeheight on one dev node
    Added chaostest stages in CI
    Added new docker/k8s resources and environments to CI
    Added new chaos-only tag to gitlab-ci.yml

* Update .maintain/chaostest/src/commands/singlenodeheight/index.js

Co-authored-by: Max Inden <mail@max-inden.de>

* change nameSpace to namespace(one word)

* update chaos ci job to match template

* rename build-pr ci stage to docker [chaos:basic]

* test gitlab-ci [chaos:basic]

* Update .gitlab-ci.yml

* add new build-chaos-only condition

* add *default-vars to singlenodeheight [chaos:basic]

* change build-only to build-rules on substrate jobs [chaos:basic]

* test and change when:on_success to when:always [chaos:basic]

* resolve conflicts and test [chaos:basic]

Co-authored-by: Max Inden <mail@max-inden.de>
Co-authored-by: Denis Pisarev <denis.pisarev@parity.io>
This commit is contained in:
HarryHong
2020-07-23 18:53:55 +08:00
committed by GitHub
parent e15fb6da2e
commit 36e312088e
26 changed files with 6903 additions and 11 deletions
+121 -11
View File
@@ -26,6 +26,8 @@ stages:
- test
- build
- post-build-test
- docker
- chaos
- publish
- deploy
- flaming-fir
@@ -64,12 +66,6 @@ default:
- rustup show
- cargo --version
- sccache -s
only:
- master
- /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
- schedules
- web
- /^[0-9]+$/ # PRs
retry:
max: 2
when:
@@ -80,6 +76,14 @@ default:
tags:
- linux-docker
.docker-env-only: &docker-env-only
only:
- master
- /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
- schedules
- web
- /^[0-9]+$/ # PRs
.build-only: &build-only
only:
- master
@@ -87,6 +91,27 @@ default:
- /^pre-v[0-9]+\.[0-9]+-[0-9a-f]+$/
- web
.build-rules: &build-rules
rules:
- if: '$DEPLOY_TAG'
when: never
- if: $CI_COMMIT_REF_NAME=="master"
when: always
- if: $CI_PIPELINE_SOURCE=="web"
when: always
- if: $CI_COMMIT_REF_NAME=~ /^v[0-9]+\.[0-9]+.*$/
when: always
- if: $CI_COMMIT_REF_NAME=~ /^pre-v[0-9]+\.[0-9]+-[0-9a-f]+$/
when: always
- if: '$CI_COMMIT_MESSAGE =~ /\[chaos:(basic|medium|large)\]/ && $CI_COMMIT_REF_NAME=~ /^[0-9]+$/' # i.e add [chaos:basic] in commit message to trigger
when: always
- when: never
.chaos-only: &chaos-only
only:
variables:
- '$CI_COMMIT_MESSAGE =~ /\[chaos:(basic|medium|large)\]/ && $CI_COMMIT_REF_NAME=~ /^[0-9]+$/' # i.e add [chaos:basic] in commit message to trigger
#### stage: .pre
skip-if-draft:
@@ -96,6 +121,10 @@ skip-if-draft:
only:
- /^[0-9]+$/ # Pull requests
script:
- echo "Commit message is ${CI_COMMIT_MESSAGE}"
- echo "Ref is ${CI_COMMIT_REF_NAME}"
- echo "pipeline source is ${CI_PIPELINE_SOURCE}"
- echo "deploy tag is ${DEPLOY_TAG}"
- ./.maintain/gitlab/skip_if_draft.sh
#### stage: check
@@ -149,6 +178,7 @@ test-dependency-rules:
cargo-audit:
stage: test
<<: *docker-env
<<: *docker-env-only
except:
- /^[0-9]+$/
script:
@@ -158,6 +188,7 @@ cargo-audit:
cargo-deny:
stage: test
<<: *docker-env
<<: *docker-env-only
only:
- schedules
- tags
@@ -177,6 +208,7 @@ cargo-deny:
cargo-check-benches:
stage: test
<<: *docker-env
<<: *docker-env-only
script:
- BUILD_DUMMY_WASM_BINARY=1 time cargo +nightly check --benches --all
- cargo run --release -p node-bench -- ::node::import::native::sr25519::transfer_keep_alive::paritydb::small
@@ -186,6 +218,7 @@ cargo-check-benches:
cargo-check-subkey:
stage: test
<<: *docker-env
<<: *docker-env-only
except:
- /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
script:
@@ -217,6 +250,7 @@ test-deterministic-wasm:
test-linux-stable: &test-linux
stage: test
<<: *docker-env
<<: *docker-env-only
variables:
<<: *default-vars
# Enable debug assertions since we are running optimized builds for testing
@@ -235,6 +269,7 @@ test-linux-stable: &test-linux
unleash-check:
stage: test
<<: *docker-env
<<: *docker-env-only
only:
- master
- tags
@@ -246,6 +281,7 @@ test-frame-examples-compile-to-wasm:
# into one job
stage: test
<<: *docker-env
<<: *docker-env-only
variables:
<<: *default-vars
# Enable debug assertions since we are running optimized builds for testing
@@ -289,6 +325,7 @@ test-linux-stable-int:
check-web-wasm:
stage: test
<<: *docker-env
<<: *docker-env-only
except:
- /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
script:
@@ -308,6 +345,7 @@ check-web-wasm:
test-full-crypto-feature:
stage: test
<<: *docker-env
<<: *docker-env-only
variables:
<<: *default-vars
# Enable debug assertions since we are running optimized builds for testing
@@ -328,6 +366,7 @@ cargo-check-macos:
stage: test
# shell runner on mac ignores the image set in *docker-env
<<: *docker-env
<<: *docker-env-only
script:
- BUILD_DUMMY_WASM_BINARY=1 time cargo check --release
- sccache -s
@@ -356,6 +395,7 @@ check-polkadot-companion-status:
check-polkadot-companion-build:
stage: build
<<: *docker-env
<<: *docker-env-only
needs:
- job: test-linux-stable-int
artifacts: false
@@ -368,6 +408,7 @@ check-polkadot-companion-build:
test-browser-node:
stage: build
<<: *docker-env
<<: *docker-env-only
needs:
- job: check-web-wasm
artifacts: false
@@ -383,15 +424,12 @@ build-linux-substrate: &build-binary
stage: build
<<: *collect-artifacts
<<: *docker-env
<<: *build-only
<<: *build-rules
needs:
- job: test-linux-stable
artifacts: false
before_script:
- mkdir -p ./artifacts/substrate/
except:
variables:
- $DEPLOY_TAG
script:
- WASM_BUILD_NO_COLOR=1 time cargo build --release --verbose
- mv ./target/release/substrate ./artifacts/substrate/.
@@ -411,7 +449,10 @@ build-linux-substrate: &build-binary
build-linux-subkey: &build-subkey
<<: *build-binary
stage: build
<<: *collect-artifacts
<<: *docker-env
<<: *build-only
needs:
- job: cargo-check-subkey
artifacts: false
@@ -441,6 +482,7 @@ build-macos-subkey:
build-rust-doc-release:
stage: build
<<: *docker-env
<<: *docker-env-only
allow_failure: true
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}-doc"
@@ -474,6 +516,73 @@ trigger-contracts-ci:
- master
- schedules
#### stage: docker
docker-build-chaos: &docker-build-chaos
<<: *chaos-only
stage: docker
needs:
- job: build-linux-substrate
image: docker:stable
tags:
- kubernetes-parity-build
variables:
<<: *default-vars
DOCKER_HOST: tcp://localhost:2375
DOCKER_DRIVER: overlay2
PRODUCT: substrate
DOCKERFILE: $PRODUCT.Dockerfile
CONTAINER_IMAGE: paritypr/$PRODUCT
environment:
name: parity-chaosnet
services:
- docker:dind
before_script:
- test "$DOCKER_CHAOS_USER" -a "$DOCKER_CHAOS_TOKEN"
|| ( echo "no docker credentials provided"; exit 1 )
- docker login -u "$DOCKER_CHAOS_USER" -p "$DOCKER_CHAOS_TOKEN"
- docker info
script:
- cd ./artifacts/$PRODUCT/
- VERSION="ci-${CI_COMMIT_SHORT_SHA}"
- echo "${PRODUCT} version = ${VERSION}"
- test -z "${VERSION}" && exit 1
- docker build
--build-arg VCS_REF="${CI_COMMIT_SHA}"
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
--tag $CONTAINER_IMAGE:$VERSION
--file $DOCKERFILE .
- docker push $CONTAINER_IMAGE:$VERSION
after_script:
- docker logout
#### stage: chaos
chaos-test-singlenodeheight:
<<: *chaos-only
stage: chaos
image: parity/chaostools:latest
needs:
- job: docker-build-chaos
tags:
- parity-chaos
variables:
<<: *default-vars
PRODUCT: substrate
DOCKERFILE: $PRODUCT.Dockerfile
CONTAINER_IMAGE: paritypr/$PRODUCT
KEEP_NAMESPACE: 0
NAMESPACE: "substrate-ci-${CI_COMMIT_SHORT_SHA}-${CI_PIPELINE_ID}"
VERSION: "ci-${CI_COMMIT_SHORT_SHA}"
interruptible: true
environment:
name: parity-chaosnet
script:
- cd ./.maintain/chaostest
- npm link
- chaostest spawn dev -i $CONTAINER_IMAGE:$VERSION
- chaostest singlenodeheight -h 30
after_script:
- chaostest clean
#### stage: publish
.build-push-docker-image: &build-push-docker-image
@@ -596,6 +705,7 @@ publish-draft-release:
publish-to-crates-io:
stage: publish
<<: *docker-env
<<: *docker-env-only
only:
- /^ci-release-.*$/
- /^v[0-9]+\.[0-9]+\.[0-9]+.*$/