Just a bit preamble to introduce myself and the context of my query: I began studying Go round 6 years in the past as a pure facet undertaking language. At first of final 12 months, I really received employed in an organization which works primarily with Go for his or her backend initiatives. They began with it years earlier than go modules had been a factor and every thing was managed through the
GOPATH. They developed an superior customized bundle administration instrument which integrates nice of their automation system, manages mirrors of dependencies and helps creating license abstract exports. However now, we need to migrate to go modules as a substitute of utilizing the
I did some investigation on the way it may very well be potential to create a customized dependency administration system together with go modules and it got here out to be fairly troublesome and hacky. I adopted the strategy to place packages into the
vendor/ listing, which is then utilized by the go toolchain to seek for exterior packages. However this additionally signifies that it’s essential manually create and handle the
go.mod file, which is absolutely not an incredible expertise and in addition feels prefer it might break at any time.
I do know that some initiatives like cockroach use customized construct instruments like bazel. However we really actually like to make use of to have the ability to construct our initiatives merely with the nice go toolchain and don’t actually intention to dive deep into customized construct options.
Now, if you’re working with go at an organization, how do you handle your dependencies? Do you merely use
go get? Do you might have a customized dependency supervisor and if sure, how does it work? What are your mirroring and offline construct methods?
Thanks very a lot upfront on your responses.
go get and
go mod vendor are the first approach and the toolchain pleased path.
Dependency administration in massive firm initiatives is a important side of making certain easy growth, coordination, and supply. It entails dealing with the relationships and interactions between varied parts, groups, and exterior dependencies