CI/CD Pipeline

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-dev for 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.