Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Vendor all dependencies? #1523
I'm having a bit of trouble getting reproducible builds with CoreDNS, which makes tracking down issues much harder.
I have a build that I made 5 days ago and worked just fine, but the build I'm making today have broken the config we used.
Most of the pain comes from the custom build process that CoreDNS uses with its makefile, which does
There are already a bunch of dependencies checked in into the vendor folder, my question is why not vendor all dependencies? That way building coredns would basically just be
We can't just use one of the tagged releases because we add external plugins so we need to rebuild CoreDNS, and the
I'd love to hear about how people have addressed those kinds of problems as well, maybe I'm not approaching this the right way.
The change caused similar breakage as you describe in the continuous integration tests when an external plugin (forward) was included by default in the coredns Makefile. The temporary fix (#1435) was to ignore the failure of the step in the Makefile. This had the effect of not re-getting coredns/coredns, which you already have at correct version if you are building from a branch. IMO, it seems like Go should know this and not be confused, but maybe there is ambiguity there and I'm only seeing one case. Since then, forward has been moved into coredns/coredns, so its no longer an external plugin.
[ Quoting <email@example.com> in "Re: [coredns/coredns] Vendor all de..." ]
You make a good point about the difficulty that external plugins represent. However, they can be vendored too for custom builds, if all dependencies live in `./vendor` there should be no issues to build coredns. What do you think?
this would mean that all current existing, external plugins, don't compile anymore. Go vendoring is very much a work in progress and has some very rough edges. In this case we (core CoreDNS) should make it easy for external plugin developers even if this means it will be harder for CoreDNS itself.