如何从工件注册表(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?的主要内容,如果未能解决你的问题,请参考以下文章
GCP容器推送不起作用 - “拒绝:请在云控制台中启用Google容器注册表API ...”