如何从工件注册表(GCP)下载 jar?

Posted

技术标签:

【中文标题】如何从工件注册表(GCP)下载 jar?【英文标题】:How to download jar from artifact registry (GCP)? 【发布时间】:2021-10-25 19:13:59 【问题描述】:

我有一个 maven Artifact Registry,并且能够在 pom.xml 中添加依赖项并获取 jar。

我有另一个用例,我想只使用 CLI 下载 jar,您可以使用其他外部 maven 存储库轻松完成此操作,例如 curl https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-runtime/0.7.0-incubating/iceberg-spark-runtime-0.7.0-incubating.jar --output temp.jar

我没有看到有关如何执行此操作的任何说明。

【问题讨论】:

【参考方案1】:

基于此打开的feature request,Artifact Registry 似乎尚不存在上述功能(此功能请求目前没有 ETA)。但是,您可以尝试实现云构建自动化,不仅将构建的工件保存在 Artifact Registry 中,还可以将它们存储在 Google Cloud Storage 或其他存储库中;因此您可以轻松访问 JAR(因为 Cloud Storage 支持直接下载)。

为此,您需要integrate Cloud Build with Artifact Registry。文档页面包含使用 Maven 项目与 Cloud Build 和 Artifact Registry 的说明。另外,您可以配置 Cloud Build 来存储构建的artifacts in Cloud Storage。

这两个集成都是通过Cloud Build configuration file 配置的。在此文件中,定义了构建项目的步骤,包括与其他无服务器服务的集成。这种集成将涉及定义一个目标 Maven 存储库:

steps:
- name: gcr.io/cloud-builders/mvn
  args: ['deploy']

以及将工件部署到 Cloud Storage 的位置:

artifacts:
  objects:
    location: [STORAGE_LOCATION]
    paths: [[ARTIFACT_PATH],[ARTIFACT_PATH], ...]

【讨论】:

这些信息对您的问题有用吗?如果它可以帮助其他想要实现相同功能的用户【参考方案2】:

我也需要这个。 我在 gcp guide之后配置了一个服务帐号

然后,我执行了以下命令来获取 authbasic credz:

gcloud artifacts print-settings gradle \
    [--project=PROJECT] \
    [--repository=REPOSITORY] \
    [--location=LOCATION] \
    --json-key=KEY-FILE \
    [--version-policy=VERSION-POLICY] \
    [--allow-snapshot-overwrites]

在输出中你有 artifactRegistryMavenSecret。

最后你得到了你的神器:

curl -L -u _json_key_base64: artifactRegistryMavenSecret  https:// region -maven.pkg.dev/ projectId / repository /path/of/artifact/module/ version /app- version .jar -o file.jar

【讨论】:

以上是关于如何从工件注册表(GCP)下载 jar?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Gitlab 中备份包注册表

GCP容器推送不起作用 - “拒绝:请在云控制台中启用Google容器注册表API ...”

注册/破解抓包工具----青花瓷

使用 ACR(天蓝色容器注册表)作为 Azure Devops json 管道的输入

请问charles软件如何破解/注册?

当工件名称与模块名称不同时,使用 Grab 下载 Ivy 依赖 Jar