/
Requirements
Requirements
Support for Existing Setups
- Support the existing Jenkins and Gerrit setup that the Fabric team uses.
- Support the existing Gitlab-CI setup used for Indy and Ursa while they transition to the new system.
- Automatically driven by the PR process with build results gating PR merges.
New Capabilities
- Support Kubernetes clusters for test net creation, monitoring, destruction.
- Profiling capabilities for unit tests and pipeline steps.
- Must be self-service so that teams have full control over their part of the available resources.
Iroha
Support for Existing Setups:
- Jenkins:
- ability to self-manage plugins, credentials, job parameters
- start and restart build feature for maintainers
- Multiplatform/multiarchitecture builds:
- Linux x86_64, armv7 (hard to find large RAM instances), armv8
- Windows x86_64
- MacOS x86_64
- Multi compilers:
- gcc5, gcc7, clang6, Apple clang (on macos), Visual C++ (windows)
- Instead of compiling on a native platform cross-compilation can be used (but it hurts):
- Requires a list of specific-version dependencies for each platform
- Compiling dependencies for other dependencies
- ~ 2-2.5GB RAM per compilation thread (currently builds are running on one-off AWS EC2 instances (c5.2xlarge))
- Uploading artifacts to DockerHub and our Nexus repository (debug builds, etc)
Fabric
Support for Existing Setups:
- Gerrit
- Jenkins
- Gerrit integration and automatic and manual trigger of CR builds (reverify, VerifyBuild, etc)
- Freestyle and pipeline jobs
- Self-maintained package images for build environment
- ...
- Multiarchitecture/Multiplatform
- Linux x86, s390x - build and test
- Windows - build x86_64
- macOS - build x86_64
- Docker
- Compose - Samples, BYFN, EYFN
- Compose - Fabric Test
- Services - Fabric (CouchDB, ZooKeeper, Kafka, Chaincode)
- Nexus, maven, docker hub, GitHub for publishing
General Forward Looking Requirements
- Support for declarative, multi-project CI pipeline in the style of gitlab-ci and concourse
- Pipeline declaration defines flow and dependencies for jobs
- CI system responsible for setting up dependencies defined in the pipeline
- Project repo responsible for defining and implementing the logic of a build job
- Project responsible for placing artifacts into output location managed by CI system
- Simple pipeline status overview
- At a glance "CI radiator" support
- Support for gated commit promotion through gates
- Commits to a branch trigger test gates, on success, commit is merged forward to trigger next gate
- Failed tests prevent promotion; promotion failures motivate maintainers to fix problems
- Access to k8s cluster for "network" testing
- Access to unpublished/snapshot container images
- Mechanisms to populate volumes from build system for use by the network
- Ability to run jobs that use docker and docker compose (KubeVirt or similar are options)
, multiple selections available,
Related content
2023 Q1 Hyperledger Fabric
2023 Q1 Hyperledger Fabric
More like this
Sovrin resource migration
Sovrin resource migration
More like this
2022 Q1 Hyperledger Fabric
2022 Q1 Hyperledger Fabric
More like this
Support Hyperledger Fabric 3 in Fablo
Support Hyperledger Fabric 3 in Fablo
More like this
Contributor Meetings 2022
Contributor Meetings 2022
More like this
2022 Q3 Hyperledger Fabric
2022 Q3 Hyperledger Fabric
More like this