Golang packaging: Difference between revisions
From wikinotes
Line 49: | Line 49: | ||
Official package publishing instructions [https://go.dev/doc/modules/publishing here]. | Official package publishing instructions [https://go.dev/doc/modules/publishing here]. | ||
Release Preparation | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
go mod tidy | go mod tidy | ||
go test | go test | ||
git tag v0.0.1 | git tag v0.0.1 | ||
git push origin v0.0.1 | git push origin v0.0.1 | ||
</syntaxhighlight> | |||
# | Publishing your package | ||
go list | <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> | </syntaxhighlight> | ||
</blockquote><!-- Public Packages --> | </blockquote><!-- Public Packages --> |
Revision as of 13:22, 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 Packages
Install Executable
Starting in golang-1.18,
go install
is used to install executables.go install github.com/appliedgocode/goman@latest # install latest goman executablePublic Packages
All published packages are public by default.
You canretract
package versions if you discovered a mistake.
Official package publishing instructions here.Release Preparation
go mod tidy go test git tag v0.0.1 git push origin v0.0.1Publishing your package
# 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.0Private Packages
Go executables are installed/built from src.
You'll need to add your package to$GOPRIVATE
envvar to stop it from being indexed.
While unset$GONOPROXY
and$GONOSUMDB
, will fall back on$GOPRIVATE
.
Otherwise you'll want to set these to prevent your packages from getting added to the index.
Project Requirements
Module Requirements
See also go.mod file .
go mod graph # show requirements tree go mod tidy # ensure go.mod matches src go mod vendor # go get ... # add requirement to go.modVendoring