Leipzig Gophers
blog

🔗Meetup #8 wrap-up

🔗 Anatomy of a Go module proxy

The Go packaging story started many years ago with GO15VENDOREXPERIMENT and a myriad of tools for managing dependencies. And, annoyingly GOPATH was one of the main obstactles for people getting started with Go. Since Go 1.11, we have experimental support for Go modules.

A new component related to modules is the module proxy. A bit of history, internals and pitfalls has been compiled by klingtnet into a great talk.

Go Module Proxy - Internals and Pitfalls. The repository for can be found at golang-leipzig/module-proxy-november-meetup.

Proxies are great, as they lower the load on source repository hosts and can prevent events like left-pad (2016). However, there is a slight potential information leak when the Go tools contact proxy.golang.org - the GOPRIVATE environment variable can help.

Advantages, implementations and the proxy protocal details can be found in the slides.

Also, thanks klingtnet for liberating an slightly strange zip implementation from the depths of the Go module proxy implementation!

🔗 Pull Request Deployment

Everyone needs this. When a change to a codebase is made, how great would it be to just see that single change, e.g. for a given pull request? That’s what this pull request deployment tool does. While the tool itself is tied to company context, panzerdev condensed the workings of the tool into these slides:

Motivation:

  • Code changes in a branch should be tested in isolation based on latest master
  • Testing of not yet approved changes shouldn’t change shared datasource (DB)
  • Multiple code changes shouldn’t share a datasource (DB) simultaniously
  • Should be gone after merge without leftover junk

Read the slides, get inspired, join us next time - and: automate all the things!

🔗 Misc

Go.dev is a companion website to golang.org. Golang.org is the home of the open source project and distribution, while go.dev is the hub for Go users providing centralized and curated resources from across the Go ecosystem.