CI/CD update
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.
Thanks,
Brian
-- Brian Behlendorf Executive Director, Hyperledger bbehlendorf@... Twitter: @brianbehlendorf