Skip to content

Latest commit

 

History

History
64 lines (39 loc) · 4.05 KB

CONTRIBUTING.md

File metadata and controls

64 lines (39 loc) · 4.05 KB

Contributing

We welcome contributions to the Hyperledger Fabric Project in many forms, and there's always plenty to do!

Please visit the contributors guide in the docs to learn how to make contributions to this exciting project.

Folder Structure

This repo is structured as a monorepo using Rush. Why a monorepo? There are multiple npm modules that are published from this repo, including end to end tests, and tooling. It is siginficant easier to manager within one repo - and Rush has proven to provide excellent support for management of issues such as different depenency versions.

The standard Rush convetions are followed as much as possible, deviation only coming with publishing and broad release version control. This deviation is to fit in with the existing Hyperledger Fabric release process - and some of these features in Rush are still evolving. This current Rush configuration is also not meant to be the final configuration; happy to enterain changes to improve the structure

Categories

The following Rush categories are used - and are seen as top level folders

  • apis contains the fabric-contract-api and fabric-shim-api modules
  • tools contains a set of scripts for build tooling (evolved from the build folder that existed previoulsy)
  • libraries contains the fabric-shim and fabric-shim-crypto modules
  • docker contains the scripts and dockerfile for the nodeenv image
  • docs contains the apidocs building scripts

Pre-requisites

  • node v10.15.2 (npm v6.4.1) => recommend to use nvm
  • rush => npm install -g @microsoft/rush

Note that npm v6 has some bugs that mean adding new depencies etc are not properly picked up. Longer term we should consider moving to yarn or pnpm. However in practice this isn't a serious problem and has been possible to be worked around by issuing rm ./common/config/rush/npm-shrinkwrap.json and then rush update

Using the repo

  • Clone the repo, and ensure you are using node10.
  • rush install to get the main linking setup, and check rush is installed correctly.
  • rush update is needed to ensure evertyhing is correctly linked and updated.

At this point the repo is fully ready for use and running tests, etc. A full sequence of build-test that would equivalent to the CI pipeline would be

  • rush rebuild will run the linting, and unit tests across the codebase, as well as building the docker images, and jsdoc API docs
  • rush start-verdaccio will start verdaccio
  • rush start-fabric will start the test fabric ready for running FV tests
  • rush test:fv will run the fv tests, ensure that both the fabric and verdaccio have already been started
  • rush test:e2e to run e2e tests across the repos

For more specific purposes during development the following are useful.

  • rush publish --include-all --pack --release-folder ./tarballs --publish If you want to get a set of .tar.gz files of the node modules to use for local testing this command will put them into the tarballs directory
  • rush rebuild --to fvtests to run the unit tests for the core modules, but not the docker or jsdoc
  • rush rebuild --to fabric-contract-api to build, lint and run just the fabric-contract-api

Where are the log files?

Each individual module will write out logs files to it's own directory.

Code of Conduct Guidelines

See our Code of Conduct Guidelines.

Maintainers

Should you have any questions or concerns, please reach out to one of the project's Maintainers.

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.