CI/CD update

Brian Behlendorf <bbehlendorf@...>

Hi TSC.  I want to provide an update that extends Dave's quick update last week regarding the CI/CD task force, especially as new details have emerged and a few decisions made. (For the rest of us: Continuous Integration / Continuous Delivery, basically automated builds and tests).

A bit of background: currently, Hyperledger's staff and the budget for this line item go towards the IT team at the Linux Foundation, who provide a standard Hyperledger CI/CD infrastructure defined in 2016 and evolved since then, which is used by Fabric, Cello and Explorer.  As other new projects came in, they chose not to use this infrastructure, and the TSC didn't object to projects solving that their own way.  There are some other related spending for npm pro, DockerHub, nexus, etc.


However, it's clear the TSC and folks who care about CI/CD would like to find a way to more systematically support other projects' choices for CI/CD, within the current budget, or even a larger budget if we can justify it vs other priorities to the Governing Board.  Meanwhile, the Fabric team have expressed high dissatisfaction with the way Jenkins currently works.  Internally it's been determined that the Linux Foundation generally wants to get out of the hosting-of-CI/CD-business in the long term anyways, though providing informed pointers or optimized pricing might still be of interest.


As a result, there are two tracks of work happening in the CI/CD task force:


1) Fix the current CI/CD pipeline needs - either host Jenkins elsewhere than LFIT+Vexxhost, or move to an alternative pipeline system.  Ry Jones is the HL staff point on this.  Be expeditious about this as slow build/test is currently very painful.


2) Come up with a strategy to define a common CI/CD system that all projects can plug into, benefit from shared resources and architecture, and then divide out the HL-supplied budget in some fair way to be determined, and allow others to contribute compute resources or dollars to provide additional build/test capacity.  Take the time to do this right.  Dave Huseby is point on this.


Note that 1 and 2 may lead to the same choice for new CI/CD platform, but as they have different stakeholders and time horizons, it was decided by the task force to not require solving both at the same time, and be open to the prospect that the solution for track 1 would be a candidate for track 2.


In track 1, Brett at IBM and Ry have worked together to review alternatives, both alternative build minions or master hosts for Jenkins, or alternatives to Jenkins entirely.  Brett then gave a presentation (now uploaded to the wiki) at a Fabric Maintainers call this week.  As you can see, it accumulated as goals many of the things that people had cited as desirable in track 2, such as "maintainable by the community".  While CircleCI is a leading candidate, there are questions we (HL staff, me) have to resolve on pricing, and it does require a move off of Gerrit to Github.  The Fabric maintainers have now decided they're happy to move off of Gerrit and onto Github, so that handles one dependency, and there should be a conversation started soon with maintainers for Explorer and Cello.  Separately I'll be looking at the pricing quote for CircleCI and talking with other projects at the LF about what path they're using.  We also have a suggestion to look at Azure Pipelines from another LF project, something Brett sounds interested in pursuing.  

Will TSC approval be required for a chosen solution for track 1, or if the Task Force members decide on a solution, and it fits within current budget parameters, and HL staff approve, can it go forward?  I think that's appropriate as it's a lateral move, but don't want anyone surprised.


In track 2, there was a proposal and lots of discussion back in March on a TSC call, some of which continued in the committee discussion, but it hasn't converged on much yet.  I believe most participants from other projects pulled back after more urgency was felt around track 1, but some of that thinking made it into the goals for 1.  Once 1 is decided, that will free up bandwidth and focus for track 2, and ultimately a new recommendation to the TSC.

If anyone has further questions or wants to join the conversation, please join #cicd on RocketChat or the calls on Fridays at 12:30pm ET, as noted in the Hyperledger Community Calendar, and follow the wiki space for CI/CD.

In the original discussion that led to the formation of the task force, it was called for that there would be a report back in mid-June, which is now what's coming back.  More time is needed before a full recommendation back will be ready - at least a few more months it seems.  Though during that window we can probably address track 1 and then have a solid community-wide discussion about the recommendation for the rest of the projects.



Brian Behlendorf
Executive Director, Hyperledger
Twitter: @brianbehlendorf

Join { to automatically receive all group messages.