建立標準存放區

本頁面說明如何建立 Artifact Registry 標準存放區。

標準存放區是私人構件的存放區。您可以直接將構件上傳至這些存放區,也可以從這些存放區下載構件。

部分構件格式也支援下列存放區模式:

  • 遠端存放區可儲存 Docker Hub、Maven Central 或 PyPI 等外部來源的成品。
  • 虛擬存放區可做為單一存取點,用於下載、安裝或部署上游標準或遠端存放區中的構件。

每個存放區可包含單一支援格式的構件。

事前準備

  1. 啟用 Artifact Registry,包括啟用 Artifact Registry API 和安裝 Google Cloud CLI。
  2. (選用) 設定 gcloud 指令的預設值
  3. 如果您需要使用客戶管理的加密金鑰 (CMEK) 來加密存放區內容,請在 Cloud KMS 中建立並啟用存放區的金鑰。

必要的角色

如要取得建立存放區所需的權限,請要求管理員為您授予 Google Cloud 專案的 Artifact Registry 管理員 (roles/artifactregistry.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

建立標準存放區

建立存放區時,您必須設定下列設定,這些設定在存放區建立後便無法變更:

  • 構件格式。
  • 儲存庫模式 (如果所選格式可使用多種模式)。
  • 存放區位置
  • 使用 Google-owned and Google-managed encryption keys 或客戶管理的加密金鑰進行加密。Artifact Registry 預設使用Google-owned and Google-managed encryption keys 。

Artifact Registry 會強制執行機構政策限制,要求使用 CMEK 加密資源,或限制可用於 CMEK 保護的 Cloud KMS 金鑰。

使用 Google Cloud 控制台建立存放區

  1. 在 Google Cloud 控制台中開啟「Repositories」頁面。

    開啟「存放區」頁面

  2. 點選 [Create Repository] (建立存放區)

  3. 指定存放區名稱。專案中的每個存放區位置,其存放區名稱都必須是唯一的。

  4. 選取存放區格式。

  5. 如果有多個可用的存放區模式,請選取「標準」

  6. 僅限 Maven:設定版本政策。

    1. 選擇版本政策:

      • None:沒有版本政策。儲存發布和快照套件。
      • 發布版本:僅儲存發布套件。
      • 快照:僅儲存快照套件。
    2. 如果您希望快照存放區接受重複快照,並覆寫存放區中的現有版本,請選取「允許覆寫快照」

  7. 在「位置類型」下方,選擇存放庫的位置:

    1. 選擇位置類型:區域或多區域。位置清單會變更,以反映您的選取項目。

    2. 在「區域」或「多區域」清單中選取位置。

    如要瞭解位置類型和支援的位置,請參閱「存放區位置

  8. 新增存放區的說明。說明有助於識別存放區的用途,以及其中包含的構件類型。

    請勿提供機密資料,因為存放區說明並未加密。

  9. 如果您想使用標籤整理存放區,請按一下「新增標籤」,然後輸入標籤的鍵/值組合。建立存放區後,您可以新增、編輯或移除標籤。

  10. 在「Encryption」區段中,選擇存放區的加密機制。

    • Google-managed encryption key:使用Google-owned and Google-managed encryption key加密存放區內容。
    • 客戶管理的金鑰:使用透過 Cloud Key Management Service 控管的金鑰,加密存放區內容。如需主要設定操作說明,請參閱「為存放區設定 CMEK」。

    • 針對 Docker 存放區,不可變更的映像檔標記設定會將存放區設為使用一律指向同一份映像檔摘要的映像檔標記。擁有 Artifact Registry 管理員角色的使用者可以在建立存放區後變更這項設定。

      • 這項設定預設為停用。映像檔標記是可變動的,也就是說,標記所指向的映像檔摘要可能會變更。
      • 如果啟用這項設定,圖片標記就會不可變更。標記一律會指向同一份映像檔摘要。如要進一步瞭解可變更和不可變更的映像檔標記,請參閱「容器映像檔版本」。
  11. 如果您想使用清理政策刪除未使用的構件,請在「清理政策」部分中:

    1. 選取「模擬執行」,在套用前測試政策。
    2. 按一下「新增政策」,即可在儲存庫中新增保留或刪除政策。
    3. 在「名稱」欄位中為清理政策取個描述性名稱。
    4. 在「政策類型」部分中,選取下列任一選項:

      • 條件式刪除:根據您定義的條件刪除構件。
      • 條件式保留:根據您定義的條件保留構件。
      • 保留最新版本:為每個套件保留指定數量的最新版本。

      如要進一步瞭解清理政策,請參閱「設定清理政策」。

  12. 在「Artifact Analysis」部分中,選擇安全漏洞掃描設定:

    • 已啟用:允許在這個存放區中掃描。您必須在專案中啟用 Container Scanning API。

      在您啟用 Container Scanning API 之後,系統會立即開始計費,在專案中啟用 Container Scanning API 後,系統會為所有新版和現有存放區啟用安全漏洞掃描功能。將圖片推送至 Artifact Registry 後,系統會自動執行容器分析。

    • 已停用:禁止在這個存放區中進行掃描。如果專案已啟用 Container Scanning API,系統會繼續掃描其他存放區,並排除這個存放區。

      如要進一步瞭解安全漏洞掃描選項,請參閱「啟用及停用自動掃描功能」。

  13. 按一下 [建立]。

Artifact Registry 會建立存放區,並將其新增至存放區清單。

建立存放區後:

使用 Google Cloud CLI 建立存放區

執行指令來建立新的存放區。

Apt

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=apt \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

Docker

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=docker \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --immutable-tags \
      --async \
      --disable-vulnerability-scanning

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱不得重複。

    • LOCATION:存放區的地區位置。如果您已設定預設位置,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:

      gcloud artifacts locations list
    • DESCRIPTION:存放區的說明。請勿加入機密資料,因為存放區說明並未加密。
    • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:

      projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

      更改下列內容:

      • KMS-PROJECT:儲存金鑰的專案。
      • KMS-LOCATION:金鑰的位置。
      • KEY-RING:金鑰環的名稱。
      • KEY:鍵的名稱。
    • --immutable-tags 是選用旗標,可用於設定存放區,以便使用一律指向同一份映像檔摘要的標記。

      根據預設,如果未傳遞 --immutable-tags 標記,則標記可移至其他圖片摘要。如要進一步瞭解不可變更和可變更的映像檔標記,請參閱「容器映像檔版本」。

    • --async 會立即傳回,不會等待進行中的作業完成。

    • --disable-vulnerability-scanning:這是選用標記,可用於將存放區設為停用自動安全漏洞掃描功能。
    • --allow-vulnerability-scanning:這是選用的標記,可用於設定存放區,允許自動安全漏洞掃描。詳情請參閱「啟用或停用自動掃描功能」。

通用

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=generic \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

Go

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=go \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

KubeFlow Pipelines

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=kfp \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

Maven

根據預設,Maven 存放區會儲存套件的快照和發布版本。您可以指定版本政策,建立快照或發布存放區。

如要建立用於儲存快照和版本的存放區,請執行下列指令:

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=maven \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

如要在不同存放區儲存快照和發布版本,請在指令中指定版本政策:

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=maven \
      [--location=LOCATION] \
      [--description="DESCRIPTION"] \
      [--kms-key=KMS-KEY] \
      [--version-policy=VERSION-POLICY] \
      [--allow-snapshot-overwrites] \
      [--async] \

下列標記專屬於 Maven 存放區:

--version-policy=VERSION-POLICY

指定要儲存在存放區中的套件類型。您可以將 VERSION-POLICY 設為:

  • None - 沒有版本政策。儲存發布和快照套件。如果您未在指令中加入 --version-policy 旗標,則預設會使用此設定。
  • Release - 僅儲存發布套件。
  • Snapshot:僅儲存快照套件。

--allow-snapshot-overwrites

僅適用於快照存放區。如果您指定此標記,就可以發布重複快照,覆寫存放區中的現有版本。

npm

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=npm \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

Python

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=python \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

Yum

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=yum \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --kms-key=KMS-KEY \
      --async
  

更改下列內容:

  • REPOSITORY:存放區名稱。專案中的每個存放區位置的存放區名稱都必須是唯一的。
  • LOCATION:存放區的區域或多區域位置。如果您已設定預設值,可以省略這個標記。如要查看支援的位置清單,請執行下列指令:
    gcloud artifacts locations list
  • DESCRIPTION:說明存放區。請勿提供私密資料,因為存放區說明不會加密。
  • KMS-KEY:Cloud KMS 加密金鑰的完整路徑,如果您使用客戶管理的加密金鑰來加密存放區內容,路徑的格式如下:
        projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

    更改下列內容:

    • KMS-PROJECT:儲存金鑰的專案。
    • KMS-LOCATION:金鑰的位置。
    • KEY-RING:金鑰環的名稱。
    • KEY:鍵的名稱。
  • --async:立即傳回,不等待進行中的作業完成。

Artifact Registry 會建立存放區。執行下列指令,查看存放區的說明:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

建立存放區後:

使用 Terraform 建立存放區

使用 google_artifact_registry_repository 資源建立存放區。必須使用 terraform-provider-google 5.0.0 以上版本。

如果您是第一次使用 Terraform 為 Google Cloud,請參閱 HashiCorp 網站上的「開始使用 - Google Cloud」頁面。

以下範例會定義提供者和 Terraform 資源名稱 my-repo 的存放區。

Apt

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "apt" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

Docker

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "docker" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

通用

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "generic" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

Go

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "go" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

KubeFlow Pipelines

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "kfp" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

Maven

如果您未指定版本政策,Artifact Registry 會預設建立 Maven 存放區,用於儲存套件的快照和發布版本

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "maven" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

    如要在不同存放區中儲存快照和發布版本,請使用 maven_config 區塊為存放區指定版本政策。這個方塊支援下列設定:

  • version_policy 會將版本政策設為下列其中一個值:

    • VERSION_POLICY_UNSPECIFIED:儲存快照和發布包。這是預設設定。
    • 發布版本:僅限儲存發布版本的套件。
    • 快照:僅儲存快照套件。
  • allow_snapshot_overwrites 會使用 SNAPSHOT 版本政策設定存放區,接受會覆寫存放區中現有版本的重複快照。

    以下範例會定義含有發布版本政策的 Maven 存放區。

    provider "google" {
      project = "my-project"
    }
    
    resource "google_artifact_registry_repository" "my-repo" {
      provider = google-beta
    
      location = "us-central1"
      repository_id = "my-repo"
      description = "Maven repository"
      format = "MAVEN"
      maven_config {
        version_policy = "RELEASE"
      }
    }
    

npm

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "npm" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

Python

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "python" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

Yum

  provider "google" {
      project = "PROJECT-ID"
  }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "yum" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }

更改下列內容:

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • LOCATION 是存放區位置。
  • REPOSITORY 是存放區名稱。
  • DESCRIPTION 是儲存庫的選用說明。請勿加入機密資料,因為存放區說明不會加密。
  • 如果您使用客戶自行管理的加密金鑰 (CMEK) 進行加密,KEY 就是 Cloud Key Management Service 金鑰的名稱。如要使用預設設定 (Google 代管的加密金鑰),請省略這個引數。
  • DRY_RUN_STATUS 會判斷清理政策是否刪除構件,或是只記錄在存放區設定清理政策時會刪除哪些構件。如果不想在存放區中新增清理政策,請省略這項操作。

    • true:設定要以模擬測試模式執行的政策。模擬測試模式不會刪除任何構件。
    • false:套用清理政策。系統會根據政策刪除或保留構件。

    如要進一步瞭解清理政策,請參閱「設定清理政策」。

  • POLICY_NAME 是清理政策的名稱。

  • TAG_STATE 是套用政策的標記狀態。值為 taggeduntaggedanyany 適用於已標記和未標記的構件。如果已為存放區啟用不可變更的標記,則無法刪除已標記的構件。

  • TAG_PREFIXTAG_PREFIX_N 是套用政策的標記前置字串。

  • PKG_PREFIXPKG_PREFIX_N 是套用政策的套件前置字串。

  • TIME_SINCE_UPLOAD 是自人工製品版本上傳至存放區以來的時間,以時間長度指定。您可以分別附加 smhd,指定秒、分、小時或天的時間長度。

  • KEEP_COUNT 是存放區中要保留的構件版本數量。

Artifact Registry 會建立存放區。執行下列指令,查看存放區的說明:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

建立存放區後:

編輯存放區說明

您可以透過 Google Cloud 控制台或 gcloud CLI 變更存放區說明。

控制台

  1. 在 Google Cloud 控制台中開啟「Repositories」頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 編輯存放區說明,然後按一下「儲存」

gcloud

如要更新存放區說明,請執行下列指令:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT \
    --location=LOCATION \
    --description="DESCRIPTION"

更改下列內容:

  • REPOSITORY:存放區名稱。如果您已設定預設存放區,可以略過此標記,以便使用預設值。
  • PROJECT: Google Cloud專案 ID。如果省略這個標記,系統會使用目前或預設專案。
  • LOCATION 是存放區的地區或多地區位置。 使用這個旗標可查看特定位置的存放區。如果您已設定預設位置,則可以省略此標記,以便使用預設位置。
  • DESCRIPTION:存放區的說明。

後續步驟