How To Use GoCenter with Golang 1.13

 

UPDATE: As of May 1, 2021 – GoCenter central repository has been sunset and all features deprecated. For more information on the sunsetting of the centers read the deprecation blog post

 

You may have heard that Golang version 1.13 was released this month. We’re excited for the newest features and want to make you aware of a few changes that may impact your builds. Most of all, we want to let you know some best practices for using these powerful new Golang features with GoCenter.

Go Modules Win

Ever since Go introduced modules in Golang 1.11, the Go community has been busy building up the module ecosystem. Developers have been working with proxies such as GoCenter to download versioned go modules

With Golang 1.13, support for Go modules is enabled by default, Although new installations of the Go client automatically set a default Google-hosted proxy you can override it and use a Go module proxy of your choice such as GoCenter. Did you know:

  • GoCenter now hosts over 260,000 versioned go modules and is still rapidly growing.
  • GoCenter can help accelerate your Go application build times.
  • GoCenter provides rich data about Go modules through a powerful UI that helps you find the modules you need.
  • GoCenter stays up-to-date for Golang and provides innovations of its own.

Best Practices for GoCenter with Golang 1.13

Here’s what you need for GoCenter to work best with Golang 1.13.

GOPROXY for GoCenter

To use GoCenter as your proxy for versioned go modules, set the GOPROXY environment variable to the GoCenter URL:

$ export GOPROXY=https://gocenter.io

If you’re new to Golang you’ve just installed version 1.13, you’ll have to change the GOPROXY setting from the default to what’s shown above. If you were already using GoCenter, updating to Golang 1.13 won’t change your existing settings, so there’s nothing more you need to do.

New features in Golang 1.13 permit you to specify in GOPROXY multiple proxies separated by commas, and also a direct mode to download modules directly from the source. But GoCenter’s automatic inclusion of Go modules means you should not need to use these when proxying with GoCenter.

Checksum DB Support

From version 1.13 of Golang, go get performs authentication of modules through an auditable checksum database that Google maintains at sum.golang.org. Installing version 1.13 sets this checksum DB URL by default in the GOSUMDB environment variable.

GoCenter helps accelerate your builds by proxying sum.golang.org. If your GOPROXY is set for GoCenter, you don’t need to change anything — you’re already validating your modules through GoCenter! 

Private Go Module Repositories

GoCenter is for proxying Go modules that are shared through a public source repository (e.g., Github). Golang 1.13 has also introduced some environment variables, notably GOPRIVATE, for bypassing the proxy and checksum validation to download module versions from private repositories. You can read about how to use them in the Golang documentation.

Version Validation

With version 1.13, using the right suffix for your Go modules is very important. The go command now performs additional validation on the requested version string, and if a module isn’t in compliance with semantic import versioning a go get will fail. So a pseudo version of your module that loaded without issues before Golang 1.13 may fail now.

Go For More

For more information about GoCenter and to get your questions answered about the Golang 1.13 updates – join our Slack channel! Then continue to explore JFrog GoCenter and be a part of a growing community of Go module authors. Build fast with us and be part of the Liquid Software Revolution!