forgejo-federation/docs/content/doc/usage/packages/go.en-us.md
KN4CK3R 5968c63a11
Add Go package registry (#24687)
Fixes #7608

This PR adds a Go package registry usable with the Go proxy protocol.

![grafik](https://github.com/go-gitea/gitea/assets/1666336/328feb5c-3df2-4f9d-8eae-fe3126d14c37)
2023-05-14 23:38:40 +08:00

2.5 KiB

date title slug weight draft toc menu
2023-05-10T00:00:00+00:00 Go Packages Repository go 45 false false
sidebar
parent name weight identifier
packages Go 45 go

Go Packages Repository

Publish Go packages for your user or organization.

Table of Contents

{{< toc >}}

Publish a package

To publish a Go package perform a HTTP PUT operation with the package content in the request body. You cannot publish a package if a package of the same name and version already exists. You must delete the existing package first. The package must follow the documented structure.

PUT https://gitea.example.com/api/packages/{owner}/go/upload
Parameter Description
owner The owner of the package.

To authenticate to the package registry, you need to provide [custom HTTP headers or use HTTP Basic authentication]({{< relref "doc/development/api-usage.en-us.md#authentication" >}}):

curl --user your_username:your_password_or_token \
     --upload-file path/to/file.zip \
     https://gitea.example.com/api/packages/testuser/go/upload

If you are using 2FA or OAuth use a [personal access token]({{< relref "doc/development/api-usage.en-us.md#authentication" >}}) instead of the password.

The server responds with the following HTTP Status codes.

HTTP Status Code Meaning
201 Created The package has been published.
400 Bad Request The package is invalid.
409 Conflict A package with the same name exist already.

Install a package

To install a Go package instruct Go to use the package registry as proxy:

# use latest version
GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_name}
# or
GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_name}@latest
# use specific version
GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_name}@{package_version}
Parameter Description
owner The owner of the package.
package_name The package name.
package_version The package version.

If the owner of the packages is private you need to provide credentials.

More information about the GOPROXY environment variable and how to protect against data leaks can be found in the documentation.