CI/CD Pipeline
Requirements
Functional
Full check of Pull Requests
Static analysis via `cargo check` and `cargo clippy`
Builds via `cargo build` and `cargo build --release`
Tests via `cargo test` and `cargo bench`
Documentation spell-check by `cargo spell-check`
Documentation generation by `cargo doc`
Docker debug build (Dockerfile.debug)
Docker release build (Dockerfile)
Full check for the main branch (it is
iroha2-devfor now)Static analysis via `cargo check` and `cargo clippy`
Builds via `cargo build` and `cargo build --release`
Tests via `cargo test` and `cargo bench`
Regression comparison of `cargo bench` results via `criterion` and automatic issues creation if found (without pipeline failure)
Documentation generation by `cargo doc`
Docker build (debug + release)
Publishing of artefacts for "tags"
Code coverage (tarpauline)
Benchmarks results as HTML (better to be also deployed as a static page) via criterion https://bheisler.github.io/criterion.rs/book/user_guide/html_report.html
Builds via `cargo build --release` as GitHub artefacts
Builds via `cargo publish` as Crates.io crate
Documentation publishing on docs.rs (better to be also deployed as a static page) via `cargo publish`
Docker image publish to hub.docker.com (with the latest tag)
Additional testing for "master"
Deployment on K8S cluster via https://kompose.io/
Run of integration tests (TBD by Iroha team)
Automatic issue creation on fails
Non-Functional
Keep build time for Pull Requests less than 10 minutes
Keep independent jobs parallel (builds for different profiles and platforms, tests and documentation, etc.)
Environments
Staging
On-demand self-deploy public environment with static address for demo purposes.
Testing
CI deployed private environment without static address for automatic tests and benchmarks.