include:
- project: parity/infrastructure/ci_cd/shared
ref: main
file: /common/ci-unified.yml
stages:
- check
- test
- build
- publish
variables:
GIT_STRATEGY: fetch
GIT_DEPTH: "100"
CARGO_INCREMENTAL: 0
CI_IMAGE: !reference [.ci-unified, variables, CI_IMAGE]
default:
cache: {}
interruptible: true
retry:
max: 2
when:
- runner_system_failure
- unknown_failure
- api_failure
.kubernetes-env:
image: $CI_IMAGE
tags:
- kubernetes-parity-build
.docker-env:
image: $CI_IMAGE
before_script:
- cargo -vV
- rustc -vV
- rustup show
- bash --version
rules:
- if: $CI_PIPELINE_SOURCE == "trigger"
- if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_REF_NAME == "master"
- if: $CI_COMMIT_REF_NAME == "tags"
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ tags:
- linux-docker
check-clippy:
stage: check
extends: .docker-env
script:
- rustup component add clippy --toolchain stable-x86_64-unknown-linux-gnu
- time cargo +stable clippy --locked -- -Dwarnings
- time cargo +stable clippy --locked -p parity-scale-codec-derive -- -Dwarnings
- time cargo +stable clippy --locked --test clippy -- -Dwarnings
check-rust-stable-no_derive_no_std:
stage: check
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable check --verbose --no-default-features --features bit-vec,bytes,generic-array
check-rust-stable-no_std-chain-error:
stage: check
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable check --verbose --no-default-features --features chain-error
check-rust-stable-no_derive:
stage: check
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable check --verbose --features bit-vec,bytes,generic-array
check-rust-stable-only_mel:
stage: check
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable check --verbose --features max-encoded-len
test-rust-stable:
stage: test
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable test --verbose --all --features bit-vec,bytes,generic-array,derive,max-encoded-len
test-rust-stable-no_derive:
stage: test
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable test --verbose --features bit-vec,bytes,generic-array
test-rust-stable-only_mel:
stage: test
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable test --verbose --features max-encoded-len
test-rust-stable-only_mel-no_default_std:
stage: test
extends: .docker-env
variables:
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
- time cargo +stable test --verbose --features max-encoded-len,std --no-default-features
bench-rust-nightly:
stage: test
extends: .docker-env
script:
- time cargo +nightly bench --features bit-vec,bytes,generic-array,derive
miri:
stage: test
extends: .docker-env
variables:
RUST_BACKTRACE: 1
MIRIFLAGS: "-Zmiri-disable-isolation"
script:
- time cargo +nightly miri test --features bit-vec,bytes,generic-array,arbitrary --release
build-no-std:
stage: test
extends: .docker-env
variables:
RUST_BACKTRACE: 1
script:
- rustup target add thumbv6m-none-eabi
- time cargo build --target thumbv6m-none-eabi --no-default-features
build-no-atomic-ptrs:
stage: test
extends: .docker-env
variables:
RUST_BACKTRACE: 1
script:
- cargo +nightly check --target bpfel-unknown-none -Zbuild-std="core,alloc" --no-default-features --features generic-array,derive,max-encoded-len,chain-error
build-linux-ubuntu-amd64:
stage: build
extends: .docker-env
rules:
- if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_REF_NAME == "master"
- if: $CI_COMMIT_REF_NAME == "tags"
script:
- cargo build --verbose --release --features bit-vec,bytes,generic-array,derive
publish-dry-run:
stage: publish
extends: .kubernetes-env
needs:
- job: check-clippy
artifacts: false
rules:
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ script:
- cargo publish -p parity-scale-codec --dry-run
publish-crate:
stage: publish
extends: .kubernetes-env
rules:
- if: $CI_COMMIT_REF_NAME =~ /^v.[0-9]+\.[0-9]+.*$/ script:
- cargo publish -p parity-scale-codec