Project Plan - Optimising the pipelines using GitHub Actions for Caliper and Caliper-Benchmarks

Project Plan - Optimising the pipelines using GitHub Actions for Caliper and Caliper-Benchmarks

Abstract

The goal of this project is to optimise how Caliper and Caliper-Benchmarks verify PRs and publish artifacts using Github Actions and to improve how testing is done to ensure that the artifacts to be published actually work as expected.

 


Mentor and Mentee

 

Mentor

@d_kelsey

(Discord: NorfolkAndChance #6513)

Mentee

@Rinish Sam

(Discord: CaptainIRS#2752)




Communication Channel

Discord + Email + GitHub

 

 


Plan

Initial Objectives

Follow Caliper tutorial and document the experience
Follow Caliper-benchmarks and document the experience
Document the Azure pipelines used in Caliper
Port UnitTests Stage to GitHub Actions
Raise GitHub issues describing remaining work

 

Caliper Github will be used to define and track the work for this project (And will include shadow issues for the Caliper benchmarks repo). The epics will track the overall project and themes. There are 3 themes. 

  • Migrate (Migrate Caliper build to github actions)

  • Optimize (Optimize the builds for caliper and caliper-benchmarks)

  • Enhance (enhance the builds with new features for caliper and caliper-benchmarks)

 

Migrate

Port to GitHub Actions for
Unit Tests (PR caliper#1364)
Integration Tests (PR caliper#1376
Disable Azure Pipelines for (PR caliper#1382
Unit Tests
Integration Tests
Publish to GitHub Actions (PR caliper#1384
Stable release
Unstable release

Optimize

Caliper
PR Verification
Investigate possibility of testing only what has changed (PR caliper#1421)
Investigate options for caching node modules across workflows ()
Implement caching for node modules (PR caliper#1406)
Investigate options for caching docker images (see comment)
Implement caching of docker images (draft PR caliper#1419)
Setup GitHub actions for docs in the gh-pages branch (PR caliper#1424)
On merge
Investigate whether Unit Tests should be run on merge (see comment)
Caliper Benchmarks
Investigate whether whole benchmark suite has to be run for all changes (PR caliper-benchmarks#226)
Investigate caching of docker images (see comment)
Investigate caching of caliper install (PR caliper-benchmarks#225)

Enhance

(Stretch

Goal)

Migrate the repository to npm workspaces (PR caliper#1394)
Migrate Fabric integration tests to test-network (PRs caliper#1410 and caliper#1414)
Remove channel and chaincode operations from Fabric v1 connector (PR caliper#1411)
Test docker images as part of a PR pipeline
Include node.js dependency checker as part of a PR pipeline
Investigate publishing to local npm and testing in progress
Investigate replacing current publish process with a more GitHub centric approach
Publish to ghcr.io
Refine release process
Implement automatic version bump
Document the process of creating a stable release
Improve integration tests
Investigate a better way to setup Fabric during workflows (possibly leverage services in GitHub actions)
Investigate ways to cover more of Caliper's capability
Cleanup the 3 Fabric packages
Re-enable Java in Caliper Benchmarks
Add license checking in caliper-benchmarks
Other miscellaneous enhancements
Update dependencies and deliver package-lock.json files in progress
Create and publish Code Coverage reports (PR caliper#1428)
Add GitHub actions for security scanning
CodeQL
npm audit
Dependabot
Investigate nightly builds
Discord notifications of build failure using webhooks
eslint improvements across all of Caliper

 


Current PRs

GitHub Pull Request List
GitHub Pull Request List

Epic Issues

GitHub Issue List

Ongoing Issues

GitHub Issue List

(WIP)