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 generation by `cargo doc`
- Docker build (debug + release)
- Full check for "master" (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 artifacts for "master"
- Code coverage (tarpauline or grcow)
- 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 artifacts
- 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 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.
Proposal
GitLab CI notation description of the Pipeline:
Graphical representation: