簡體   English   中英

如何從工件注冊表(GCP)下載 jar?

[英]How to download jar from artifact registry (GCP)?

我有一個 maven 工件注冊表,能夠在 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

我沒有看到有關如何執行此操作的任何說明。

我也需要這個。 我已經按照gcp 指南配置了一個服務帳戶

然后,我執行了以下命令來獲取 authbasic credz:

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

在 output 中,您有 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

基於此開放功能請求(此功能請求目前沒有 ETA),Artifact Registry 似乎還沒有提到的這個功能。 但是,您可以嘗試實現雲構建自動化,不僅將構建的工件保存在 Artifact Registry 中,還可以將它們存儲在 Google Cloud Storage 或其他存儲庫中; 因此您可以輕松訪問 JAR(因為 Cloud Storage 支持直接下載)。

為此,您需要Cloud Build 與 Artifact Registry 集成 文檔頁面包含將 Maven 項目與 Cloud Build 和 Artifact Registry 一起使用的說明。 此外,您可以配置 Cloud Build 以將構建的工件存儲在 Cloud Storage 中

這兩種集成都是通過Cloud Build 配置文件配置的 在此文件中,定義了構建項目的步驟,包括與其他無服務器服務的集成。 此集成將涉及定義目標 Maven 存儲庫:

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

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

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

除了@Nicolas Roux 的回答之外:

artifactRegistryMavenSecret基本上是服務帳戶 json 密鑰的 encode64。

因此,代替運行gcloud artifacts print-settings gradlecurl -u _json_key_base64:{{ artifactRegistryMavenSecret }} ,另一種方法是您可以直接使用來自gcloud auth print-access-token ,然后將此令牌應用於cURL

例如:

1. gcloud auth activate-service-account SERVICE_ACCOUNT@DOMAIN.COM \
        --key-file=/path/key.json --project=PROJECT_ID
2. curl --oauth2-bearer "$(gcloud auth print-access-token)" \
        -o app-{{ version }}.jar \
        -L https://{{ region }}-maven.pkg.dev/{{ projectId }}/{{ repository }}/path/of/artifact/module/{{ version }}/app-{{ version }}.jar

這樣,如果您在 Github Actions 工作流中使用 Google Auth Action (google-github-actions/auth@v0),那么您可以輕松運行curl命令,而無需提取artifactRegistryMavenSecret

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM