建立標準存放區

本頁說明如何建立 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. 選擇版本政策:

      • :沒有版本政策。儲存發布和快照套件。
      • 發布:僅儲存發布套件。
      • 快照:僅儲存快照套件。
    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:立即傳回,不會等待執行中的作業完成。

Ruby

  gcloud artifacts repositories create REPOSITORY \
      --repository-format=ruby \
      --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」頁面。

以下範例定義了供應商和存放區,並使用 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:存放區的說明。

後續步驟