本页介绍了如何管理存储在 Artifact Registry 中的打包 Go 模块。
准备工作
- 如果目标代码库不存在,请创建新代码库。选择 Go 作为代码库格式。
- 验证您是否拥有访问代码库所需的权限。
- (可选)为 gcloud 命令配置默认值。
- 安装 Go 1.15 或更高版本。
安装 package-go-module gcloud CLI 插件:
gcloud components install package-go-module
配置 Go 以通过 Artifact Registry 进行身份验证。
所需的角色
如需获得管理模块所需的权限,请让管理员向您授予代码库的以下 IAM 角色:
-
查看模块:
Artifact Registry Reader (
roles/artifactregistry.reader
) -
下载或安装模块:
Artifact Registry 读取者 (
roles/artifactregistry.reader
) -
向代码库添加模块:
Artifact Registry Writer (
roles/artifactregistry.writer
) -
删除模块:
Artifact Registry Repository Administrator (
roles/artifactregistry.repoAdmin
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
上传模块
仓库模式:标准
如需打包模块并将其上传到代码库,请运行以下命令:
gcloud artifacts go upload --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --module-path=MODULE_PATH \ --version=VERSION \ --source=SOURCE_LOCATION
替换以下内容:
- 将 PROJECT 替换为 Google Cloud 项目 ID。
- 将 REPOSITORY 替换为 文件包。
- LOCATION 替换为代码库的单区域或多区域位置。
- 将 MODULE_PATH 替换为模块路径。例如:
example.com/foo
请参阅 Go 模块参考文档 。 - VERSION,其中包含模块的语义版本,格式为
vX.Y.Z
,其中X
是主要版本,Y
是次要版本,Z
是补丁版本。 - 将 SOURCE_LOCATION 替换为 Go 根目录的路径
模块。如果省略
--source
标志,则默认为当前目录。
系统会将该模块上传到 Artifact Registry。
如需详细了解如何创建 Go 模块,请参阅 教程。
上传新模块版本
仓库模式:标准
要将新版模块上传到默认项目、仓库和 在配置了默认值的情况下, 使用新版本号运行以下命令:
gcloud artifacts go upload \ --module-path=MODULE_PATH \ --version=VERSION \ --source=SOURCE_LOCATION
将 VERSION 替换为更新模块的版本。例如:
要上传路径为 example.com/foo
的模块的版本 0.1.1
,请运行
以下命令:
gcloud artifacts go upload \ --module-path=example.com/foo \ --version=v0.1.1 \ --source=SOURCE_LOCATION
如需将模块标记为预发布版本,请在 VERSION 后面添加短划线,然后附加模块的预发布标识符:
gcloud artifacts go upload \ --module-path=MODULE_PATH \ --version=VERSION-PRE_RELEASE_IDENTIFIERS \ --source=SOURCE_LOCATION
将 PRE_RELEASE_IDENTIFIERS 替换为以英文句点分隔的 ASCII 字母数字
字符和连字符。例如,如需上传路径为 example.com/foo
且由 alpha.x.12m.5
标识的模块的预发布版本,请运行以下命令:
gcloud artifacts go upload \ --module-path=example.com/foo \ --version=v1.0.0-alpha.x.12m.5 \ --source=SOURCE_LOCATION
上传新的主要版本
代码库模式:标准
主要版本不向后兼容之前的版本。为防止
用户无法导入破坏性更改,v1
之后的主要版本必须
模块路径与先前版本不同从 v2
开始,主要版本会添加到模块路径的末尾。
例如,example.com/foo
的 v2.0.0
的模块路径为 example.com/foo/v2
。
建议的最佳实践是在 v1
之后开发主要版本,并在以主要版本后缀命名的单独目录中进行开发。
如需在配置默认值后,将路径为 example.com/foo
的模块的新主要版本 2.0.0
上传到默认项目、代码库和位置,请运行以下命令:
gcloud artifacts go upload --module-path=example.com/foo/v2 --version=v2.0.0
列出模块
代码库模式:标准
运行以下命令,以检查默认上传的 Go 模块 创建项目、代码库和位置时 已配置默认值:
gcloud artifacts packages list
输出将如下所示:
Listing items under project my-project, location us-west1, repository my-repo. PACKAGE CREATE_TIME UPDATE_TIME example.com/foo 2022-06-03T20:43:39 2022-06-20T20:37:40
查看模块版本详情
代码库模式:标准
运行以下命令以查看模块的默认版本 创建项目、代码库和位置时 已配置默认值:
gcloud artifacts versions list --package=MODULE_PATH
输出将如下所示:
Listing items under project my-project, location us-west1, repository my-repo, package example.com/foo. VERSION DESCRIPTION CREATE_TIME UPDATE_TIME v0.1.0 2022-06-03T20:43:39 2022-06-03T20:43:39 v0.1.1 2022-06-20T20:37:40 2022-06-20T20:37:40
将模块用作依赖项
仓库模式:标准
如需导入存储在 Artifact Registry 中的模块,您需要指示“Go” 查找来自 Artifact Registry 的依赖项并绕过校验和 数据库。按照说明设置身份验证和 Go 为 Go 设置身份验证中的说明。
如果您使用短期凭据对 Artifact Registry 进行身份验证,则需要运行以下命令来刷新 OAuth 令牌:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@latest refresh
如果您的模块还没有
go.mod
文件,请更改目录到模块的文件夹,然后运行go mod init
以为您的软件包创建go.mod
文件。go mod init MODULE_PATH
将 MODULE_PATH 替换为所存储模块的模块路径 Artifact Registry请参阅 Go 模块参考文档 。
如需要求存储在 Artifact Registry 中的模块版本,请修改
go.mod
文件,使其如下所示:module example.com/bar go 1.19 require example.com/foo v0.1.0
替换以下内容:
example.com/foo
是必需模块的模块路径v0.1.0
是存储在 Artifact Registry 中的版本
在
main.go
的import
部分中照常添加模块路径 文件。例如,如需导入存储在 Artifact Registry 中的路径为
example.com/foo
的模块,您的导入部分可能如下所示:package main import ( foo "example.com/foo" ) func main() { ... }
运行
go mod tidy
以下载依赖项:go mod tidy
照常运行模块:
go run .
Artifact Registry 中存储的模块会下载并用作 依赖项。
删除打包的 Go 模块
仓库模式:标准
您可以删除软件包及其所有版本,也可以删除特定版本。
- 删除文件包后,您无法撤消此操作。
在删除软件包或软件包版本之前,请确认您已在其中告知或解决任何重要依赖项。
如需删除软件包,请按如下所述操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
选择要删除的软件包。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]
地点
如需删除软件包的版本,请按如下所述操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
点击一个软件包以查看它的版本。
选择您要删除的版本。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts versions delete VERSION \
--package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] \
[--async]
地点
后续步骤
- 试用 Go 快速入门。
- 下载与模块或版本关联的个别文件,而无需使用 Go 命令。