Golang packaging: Difference between revisions

From wikinotes
Line 49: Line 49:
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Package Management -->
</blockquote><!-- Package Management -->
= Publishing Modules =
<blockquote>
== Public Modules ==
<blockquote>
All published packages are public by default.<br>
You can <code>retract</code> package versions if you discovered a mistake.<br>
Official package publishing instructions [https://go.dev/doc/modules/publishing here].
Release Preparation
<syntaxhighlight lang="bash">
go mod tidy
go test
git tag v0.0.1
git push origin v0.0.1
</syntaxhighlight>
Publishing your package
<syntaxhighlight lang="bash">
# adds your package to the index
go list
# add specific module-version to a specific-index
GOPROXY=proxy.golang.org \
  go list \
  -m example.com/mymodule@v0.1.0
</syntaxhighlight>
</blockquote><!-- Public Packages -->
== Private Modules ==
<blockquote>
Go executables are installed/built from src.<br>
You'll need to add your package to <code>$GOPRIVATE</code> envvar to stop it from being indexed.<br>
While unset <code>$GONOPROXY</code> and <code>$GONOSUMDB</code>, will fall back on <code>$GOPRIVATE</code>.<br>
Otherwise you'll want to set these to prevent your packages from getting added to the index.
</blockquote><!-- Private Packages -->
</blockquote><!-- Creating Packages -->

Revision as of 14:00, 19 June 2022

Documentation

private modules https://go.dev/ref/mod#private-modules
module proxies https://go.dev/ref/mod#module-proxy
module cache https://go.dev/ref/mod#module-cache

Locations

go module index https://index.golang.org/index
go checksum index https://sum.golang.org/

Locations

~/go/bin default $GOBIN path, where go executables are installed

OS Package Management

Installing Packages

# golang < 1.18
go get -u example.com/x/foo

# golang >= 1.18
go install example.com/x/foo@latest

Uninstalling Packages

# there doesn't seem to be a managed way of doing this
rm ${GOBIN:=~/go/bin}/tool-to-delete