建立標準存放區

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

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

部分構件格式也提供下列存放區模式:

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

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

事前準備

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

必要的角色

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

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

建立標準存放區

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

  • 構件格式。
  • 存放區模式 (如果所選格式有多種模式)。
  • 存放區位置
  • 使用 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. 選擇版本政策:

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

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

    1. 選擇位置類型:區域或多區域。地點清單會根據您的選取項目變更。

    2. 在「Region」(區域) 或「Multi-region」(多區域) 清單中選取位置。

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

  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 時,Artifact Analysis 會自動掃描。

    • 已停用:禁止掃描這個存放區。如果專案已啟用 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 - No version policy. 儲存發布和快照套件。 如果您未在指令中加入 --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 網站上的「Get Started - Google Cloud」(開始使用 - 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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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 是存放區的選用說明。 請勿加入私密資料,因為存放區說明不會加密。
  • KEY 是 Cloud Key Management Service 金鑰的名稱,前提是您使用客戶自行管理的加密金鑰 (CMEK) 進行加密。如要使用預設設定 (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. 在存放區清單中選取存放區,然後按一下「Edit Repository」(編輯存放區)

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

gcloud

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

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

更改下列內容:

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

後續步驟