Mengonfigurasi kebijakan pembersihan

Kebijakan pembersihan Artifact Registry menentukan kriteria untuk menghapus otomatis versi artefak yang tidak lagi diperlukan atau menyimpan artefak yang ingin disimpan tanpa batas.

Kebijakan pembersihan berguna jika Anda menyimpan banyak versi artefak, tetapi hanya perlu menyimpan versi tertentu yang Anda rilis ke produksi. Anda dapat menentukan kebijakan penghapusan dengan kriteria untuk menghapus artefak dan mempertahankan kebijakan dengan kriteria untuk mempertahankan artefak.

Jika versi artefak cocok dengan kriteria dalam kebijakan hapus dan kebijakan simpan, Artifact Registry akan menerapkan kebijakan penyimpanan.

Penghapusan yang dipicu oleh kebijakan penghapusan akan mengurangi kuota permintaan penghapusan project Artifact Registry dan dibatasi hingga 300.000 penghapusan per repositori, per hari.

Jadwal penerapan kebijakan

Artifact Registry menghapus dan mempertahankan artefak yang cocok dengan kebijakan pembersihan menggunakan tugas latar belakang yang berjalan secara berkala. Perubahan akan diterapkan dalam waktu sekitar satu hari.

Jumlah maksimum kebijakan pembersihan per repositori

Anda dapat menerapkan maksimum 10 kebijakan pembersihan ke repositori.

Format yang didukung

Selama Pratinjau, Anda dapat menetapkan kebijakan pembersihan pada repositori standar untuk semua format repositori kecuali Apt dan Yum.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menerapkan atau menghapus kebijakan pembersihan, minta administrator untuk memberi Anda peran IAM Artifact Registry Administrator (roles/artifactregistry.admin) pada project repositori. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk menerapkan atau menghapus kebijakan pembersihan. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menerapkan atau menghapus kebijakan pembersihan:

  • artifactregistry.repositories.update
  • Untuk menghapus artefak yang memenuhi kriteria dalam kebijakan pembersihan: artifactregistry.versions.delete

Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Peran default untuk Agen Layanan Artifact Registry mencakup izin artifactregistry.versions.delete, yang diperlukan untuk menghapus image yang memenuhi kriteria dalam kebijakan pembersihan.

Membuat file kebijakan

File kebijakan adalah file JSON yang menentukan kebijakan hapus dan penyimpanan Anda. Anda dapat membuat file kebijakan dengan membuat dan mengedit file JSON, lalu menggunakan Google Cloud CLI untuk menerapkan kebijakan, atau dengan menggunakan Konsol Google Cloud. Kebijakan penghapusan menentukan kondisi untuk menghapus artefak. Kebijakan Keep menentukan kondisi untuk mempertahankan artefak, atau sejumlah versi terbaru yang akan dipertahankan. Anda tidak dapat menggunakan kondisi dan versi terbaru dalam kebijakan penyimpanan yang sama.

Membuat kebijakan penghapusan

Dengan kebijakan penghapusan, Anda dapat menentukan usia minimum atau maksimum untuk penghapusan artefak dan kriteria pemfilteran tambahan guna membatasi kebijakan untuk artefak tertentu.

Jika ada artefak tertentu yang tidak ingin dihapus karena alasan apa pun, buat kebijakan penyimpanan conditional, atau kebijakan penyimpanan versi terbaru, serta kebijakan penghapusan. Jika artefak cocok dengan kriteria dalam kebijakan penghapusan dan kebijakan penyimpanan, artefak tersebut akan disimpan.

console

Anda dapat membuat kebijakan penghapusan untuk repositori baru atau yang sudah ada.

Untuk menambahkan kebijakan hapus ke repositori yang ada:

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Dalam daftar repositori, pilih repositori, lalu klik Edit Repository.

  3. Di bagian Kebijakan pembersihan, pilih Dry run untuk menguji kebijakan baru Anda sebelum berkomitmen untuk menghapus artefak apa pun. Untuk informasi selengkapnya tentang cara melihat hasil pengujian, lihat uji coba.

    Setelah yakin bahwa kebijakan Anda berfungsi sebagaimana mestinya, edit setelan repositori Anda lagi, lalu pilih Delete artefak untuk menerapkan kebijakan pembersihan dan hapus artefak yang dipilih.

  4. Klik Add a cleanup policy, lalu tambahkan hal berikut:

    • Nama: Beri nama kebijakan pembersihan. Nama dalam grup kebijakan yang Anda terapkan ke repositori harus unik.
    • Jenis kebijakan: Pilih Penghapusan bersyarat.
    • Status tag: menunjukkan apakah kebijakan harus memeriksa artefak yang diberi tag atau artefak yang tidak diberi tag. Artefak diberi tag saat mengirim atau menarik image ke atau dari repositori. Untuk mengetahui informasi selengkapnya tentang tag Docker, lihat Konsep container.

      • Status tag apa pun: mengabaikan status tag dan berlaku untuk artefak yang diberi tag dan tanpa tag.
      • Diberi tag: hanya berlaku untuk artefak yang diberi tag.
      • Tanpa tag: hanya berlaku untuk artefak yang tidak diberi tag.

      Format yang tidak mendukung tag diperlakukan sebagai untagged. Untuk mengetahui informasi selengkapnya tentang status tag yang berlaku pada kebijakan pembersihan, baca referensi TagState.

  5. Berikut adalah cara opsional untuk menentukan kebijakan hapus:

    • Awalan tag: adalah daftar awalan tag yang dipisahkan koma. Misalnya, awalan test dan staging akan cocok dengan gambar dengan tag testenv dan staging-1.5. tagState harus ditetapkan ke TAGGED agar dapat menggunakan awalan tag.
    • Awalan versi: - adalah daftar awalan versi artefak yang dipisahkan koma. Misalnya, v1, v2 akan cocok dengan versi v1.5, v2.0alpha, dan v10.2.
    • Awalan paket: adalah daftar awalan nama artefak. Anda dapat memasukkan beberapa awalan dengan menekan Enter atau , di antara awalan tersebut. Misalnya, red, blue akan membuat dua awalan, red dan blue, serta akan cocok dengan nama artefak red-team, redis, dan bluebird.
    • Lebih lama dari: adalah waktu minimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari. Anda dapat menentukan durasi detik, menit, jam, atau hari dengan menambahkan s, m, h, atau d masing-masing.
    • Lebih baru dari: adalah waktu maksimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari.
  6. Anda dapat menambahkan kebijakan pembersihan lainnya dengan mengklik Tambahkan kebijakan pembersihan.

  7. Klik Perbarui.

    Kebijakan pembersihan diterapkan ke repositori Anda. Anda dapat melihat kebijakan pembersihan di bagian Detail repositori dengan mengklik Tampilkan lainnya.

JSON

{
  "name": "DELETE_POLICY_NAME",
  "action": {"type": "Delete"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

Kebijakan penghapusan harus menyertakan nama, tindakan, dan setidaknya satu kondisi.

name
Dalam cuplikan kebijakan penghapusan, DELETE_POLICY_NAME adalah nama kebijakan tersebut. Nama dalam grup kebijakan yang Anda terapkan ke repositori harus unik.
action
Untuk kebijakan penghapusan, nilainya adalah {"type": "Delete"}.
condition
Tentukan satu atau beberapa kondisi berikut:
  • tagState: TAG_STATUS menunjukkan apakah kebijakan harus memeriksa artefak yang diberi tag atau artefak yang tidak diberi tag. Artefak diberi tag saat mengirim atau menarik image ke atau dari repositori. Untuk mengetahui informasi selengkapnya tentang tag Docker, lihat Konsep container. Nilai yang didukung adalah: tagged, untagged, atau any. Format yang tidak mendukung tag diperlakukan sebagai untagged.
  • tagPrefixes: TAG_PREFIXES adalah daftar awalan tag yang dipisahkan koma. Misalnya, "test", "staging" akan cocok dengan gambar dengan tag "testenv" dan "staging-1.5". tagState harus ditetapkan ke TAGGED agar dapat menggunakan awalan tag.
  • versionNamePrefixes: VERSION_PREFIXES adalah daftar awalan versi artefak yang dipisahkan koma. Misalnya, "v1", "v2" akan cocok dengan versi "v1.5", "v2.0alpha", dan "v10.2".
  • packageNamePrefixes: PACKAGE_PREFIXES adalah daftar awalan nama artefak yang dipisahkan koma. Misalnya, "red", "blue" akan cocok dengan nama artefak "red-team", "redis", dan "bluebird".
  • olderThan: OLDER_THAN_DURATION adalah waktu minimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari. Anda dapat menentukan durasi detik, menit, jam, atau hari dengan menambahkan s, m, h, atau d masing-masing.
  • newerThan: NEWER_THAN_DURATION adalah waktu maksimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari.

Membuat kebijakan penyimpanan bersyarat

Kebijakan penyimpanan bersyarat menentukan kriteria untuk mempertahankan artefak. Biarkan kebijakan tetap berfungsi dengan kebijakan hapus untuk menyimpan artefak yang akan dihapus sesuai dengan spesifikasi kebijakan penghapusan, tetapi yang ingin Anda pertahankan. Jika artefak cocok dengan kriteria untuk kebijakan hapus dan kebijakan penyimpanan, artefak tersebut akan disimpan.

console

Anda dapat membuat kebijakan keep untuk repositori baru atau yang sudah ada.

Untuk menambahkan kebijakan keep ke repositori yang ada:

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Dalam daftar repositori, pilih repositori, lalu klik Edit Repository.

  3. Di bagian Kebijakan pembersihan, pilih Dry run untuk menguji kebijakan baru Anda sebelum berkomitmen untuk menghapus artefak apa pun. Anda perlu menyetel setidaknya satu kebijakan hapus untuk melihat hasil kebijakan simpan. Untuk informasi selengkapnya tentang cara melihat hasil pengujian, lihat uji coba.

    Setelah yakin bahwa kebijakan berfungsi sebagaimana mestinya, edit setelan repositori Anda lagi, lalu pilih Delete recommendations untuk menerapkan kebijakan pembersihan dan menghapus artefak yang dipilih.

  4. Klik Add a cleanup policy, lalu tambahkan hal berikut:

    • Nama: Beri nama kebijakan pembersihan. Nama dalam grup kebijakan yang Anda terapkan ke repositori harus unik.
    • Jenis kebijakan: Pilih Simpan bersyarat.
    • Status tag: menunjukkan apakah kebijakan harus memeriksa artefak yang diberi tag atau artefak yang tidak diberi tag. Artefak diberi tag saat mengirim atau menarik image ke atau dari repositori. Untuk mengetahui informasi selengkapnya tentang tag Docker, lihat Konsep container.

      • Status tag apa pun: mengabaikan status tag dan berlaku untuk artefak yang diberi tag dan tanpa tag.
      • Diberi tag: hanya berlaku untuk artefak yang diberi tag.
      • Tanpa tag: hanya berlaku untuk artefak yang tidak diberi tag.

      Format yang tidak mendukung tag diperlakukan sebagai untagged. Untuk mengetahui informasi selengkapnya tentang status tag yang berlaku pada kebijakan pembersihan, baca referensi TagState.

  5. Berikut adalah cara opsional untuk menentukan kebijakan penyimpanan:

    • Awalan tag: adalah daftar awalan tag yang dipisahkan koma. Misalnya, awalan test dan staging akan cocok dengan gambar dengan tag testenv dan staging-1.5. tagState harus ditetapkan ke TAGGED agar dapat menggunakan awalan tag.
    • Awalan versi: - adalah daftar awalan versi artefak yang dipisahkan koma. Misalnya, v1, v2 akan cocok dengan versi v1.5, v2.0alpha, dan v10.2.
    • Awalan paket: adalah daftar awalan nama artefak yang dipisahkan koma. Misalnya, red, blue akan cocok dengan nama artefak red-team, redis, dan bluebird.
    • Lebih lama dari: adalah waktu minimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari. Anda dapat menentukan durasi detik, menit, jam, atau hari dengan menambahkan s, m, h, atau d masing-masing.
    • Lebih baru dari: adalah waktu maksimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari.
  6. Anda dapat menambahkan kebijakan pembersihan lainnya dengan mengklik Tambahkan kebijakan pembersihan.

  7. Klik Perbarui.

    Kebijakan pembersihan diterapkan ke repositori Anda.

JSON

Formatnya mirip dengan kebijakan hapus. Untuk kebijakan penyimpanan, nilai untuk action adalah {"type": "Keep"}.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

Ganti kode berikut:

  • KEEP_POLICY_NAME dengan nama pada kebijakan pembersihan. Nama dalam grup kebijakan yang Anda terapkan ke repositori harus unik.
  • TAG_STATUS dengan status tag, yang menunjukkan apakah kebijakan harus memeriksa artefak yang diberi tag atau artefak yang tidak diberi tag. Artefak diberi tag saat mengirim atau mengambil gambar ke atau dari repositori. Untuk mengetahui informasi selengkapnya tentang tag Docker, lihat Konsep container.

    Opsinya adalah:

    • tagged: hanya berlaku untuk artefak yang diberi tag.
    • untagged: hanya berlaku untuk artefak yang tidak diberi tag.
    • any: berlaku untuk semua versi

    Format yang tidak mendukung tag diperlakukan sebagai untagged. Untuk mengetahui informasi selengkapnya tentang status tag yang berlaku pada kebijakan pembersihan, baca referensi TagState.

  • TAG_PREFIXES dengan daftar awalan tag yang dipisahkan koma. Misalnya, awalan test dan staging akan cocok dengan gambar dengan tag testenv dan staging-1.5. tagState harus ditetapkan ke TAGGED agar dapat menggunakan awalan tag.

  • VERSION_PREFIXES dengan daftar awalan versi artefak yang dipisahkan koma. Misalnya, v1, v2 akan cocok dengan versi v1.5, v2.0alpha, dan v10.2.

  • PACKAGE_PREFIXES dengan daftar awalan nama artefak yang dipisahkan koma. Misalnya, red, blue akan cocok dengan nama artefak red-team, redis, dan bluebird.

  • OLDER_THAN_DURATION dengan waktu minimum sejak versi artefak dibuat di repositori, yang ditetapkan sebagai durasi. Misalnya, 30d adalah 30 hari. Anda dapat menentukan durasi detik, menit, jam, atau hari dengan menambahkan s, m, h, atau d masing-masing.
  • NEWER_THAN_DURATION dengan waktu maksimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari.

Membuat kebijakan penyimpanan versi terbaru

Anda dapat membuat kebijakan penyimpanan untuk mempertahankan sejumlah versi tertentu. Anda tidak dapat menggunakan kriteria Kondisi saat ini dan Pertahankan versi terbaru dalam kebijakan penyimpanan yang sama.

Biarkan kebijakan tetap berfungsi dengan kebijakan hapus untuk menyimpan artefak yang akan dihapus sesuai dengan spesifikasi kebijakan penghapusan Anda, tetapi yang ingin Anda pertahankan. Jika artefak cocok dengan kriteria untuk kebijakan hapus dan kebijakan penyimpanan, artefak tersebut akan disimpan.

console

Anda dapat membuat kebijakan mempertahankan versi terbaru untuk repositori baru atau yang sudah ada.

Untuk menambahkan kebijakan penyimpanan versi terbaru ke repositori yang ada:

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Dalam daftar repositori, pilih repositori, lalu klik Edit Repository.

  3. Di bagian Kebijakan pembersihan, pilih Dry run untuk menguji kebijakan baru Anda sebelum berkomitmen untuk menghapus artefak apa pun. Anda perlu menyetel setidaknya satu kebijakan hapus untuk melihat hasil kebijakan simpan. Untuk informasi selengkapnya tentang cara melihat hasil pengujian, lihat uji coba.

    Setelah yakin bahwa kebijakan berfungsi sebagaimana mestinya, edit setelan repositori Anda lagi, lalu pilih Delete recommendations untuk menerapkan kebijakan pembersihan dan menghapus artefak yang dipilih.

  4. Klik Add a cleanup policy, lalu tambahkan hal berikut:

    • Nama: Beri nama kebijakan pembersihan. Nama dalam grup kebijakan yang Anda terapkan ke repositori harus unik.
    • Jenis kebijakan: Pilih Simpan versi terbaru.
  5. Di kolom Keep count, masukkan jumlah versi artefak yang akan disimpan di repositori Anda.

  6. Opsional: pilih Awalan paket untuk menentukan awalan paket yang akan menjadi tujuan penerapan kebijakan. Misalnya, red, blue akan cocok dengan nama artefak red-team, redis, dan bluebird.

  7. Anda dapat menambahkan kebijakan pembersihan lainnya dengan mengklik Tambahkan kebijakan pembersihan.

  8. Klik Perbarui.

    Kebijakan pembersihan diterapkan ke repositori Anda. Anda dapat melihat kebijakan pembersihan di bagian Detail repositori dengan mengklik Tampilkan lainnya.

JSON

Formatnya mirip dengan kebijakan hapus. Untuk kebijakan penyimpanan, nilai untuk action adalah {"type": "Keep"}.

Kebijakan penyimpanan untuk mempertahankan jumlah versi tertentu memiliki bagian mostRecentVersions, bukan bagian condition.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "mostRecentVersions": {
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "keepCount": MINIMUM_NUMBER
  }
}

Ganti kode berikut:

  • KEEP_POLICY_NAME dengan nama untuk kebijakan penyimpanan Anda. Namanya harus unik dalam grup kebijakan yang Anda terapkan ke repositori.
  • PACKAGE_PREFIXES dengan awalan paket opsional tempat kebijakan penyimpanan akan diterapkan. Misalnya, red, blue akan cocok dengan nama artefak red-team, redis, dan bluebird.
  • MINIMUM_NUMBER dengan jumlah versi artefak yang akan disimpan di repositori Anda.

Untuk menerapkan kebijakan keep ke semua paket di repositori Anda, hapus kondisi packageNamePrefixes. Jumlah versi terbaru yang ditentukan dari setiap paket di repositori Anda akan disimpan.

Contoh file kebijakan

Contoh file kebijakan berikut memiliki satu kebijakan hapus dan dua kebijakan penyimpanan.

  • Kebijakan delete-prerelease akan menghapus versi artefak 30 hari setelah diupload jika artefak dimulai dengan string alpha atau v0.
  • Kebijakan keep-tagged-release menyimpan artefak yang diberi tag dengan awalan release yang memiliki nama file dimulai dengan webapp atau mobile.
  • Kebijakan keep-minimum-versions menyimpan lima versi terbaru artefak yang memiliki nama file yang dimulai dengan webapp, mobile, atau sandbox.
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

Menguji kebijakan dengan uji coba

Untuk menguji kebijakan pembersihan, Anda dapat menetapkan kebijakan pembersihan untuk uji coba di konsol, atau menjalankan perintah gcloud artifacts set-cleanup-policies dengan flag --dry-run.

Untuk menganalisis efek kebijakan pembersihan, Anda dapat melihat log audit akses Data Artifact Registry. Agar dapat menerima log audit Akses Data untuk kebijakan pembersihan, Anda harus secara eksplisit mengaktifkan jenis penulisan data log audit akses data untuk layanan Artifact Registry. Untuk mengaktifkan log audit akses data, lihat Mengaktifkan log audit.

console

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Dalam daftar repositori, pilih repositori, lalu klik Edit Repository.

  3. Di bagian Kebijakan pembersihan, pilih Uji coba.

  4. Klik Add a cleanup policy dan konfigurasikan opsi untuk kebijakan Conditional delete, Conditional keep, atau Keep Most recent version.

  5. Klik Perbarui.

Jika kebijakan hapus menghasilkan tindakan BatchDeleteVersions, parameter validateOnly akan bernilai "true".

Guna membuat kueri log audit untuk uji coba kebijakan pembersihan Anda, jalankan perintah berikut:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

Outputnya akan terlihat seperti berikut:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

gcloud CLI

Untuk melakukan uji coba dengan kebijakan pembersihan Anda, jalankan perintah berikut:

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --dry-run

Ganti kode berikut:

  • REPOSITORY dengan nama repositori.
  • PROJECT_ID dengan ID project Google Cloud Anda.
  • LOCATION dengan lokasi regional atau multi-regional repositori.

Jika kebijakan hapus menghasilkan tindakan BatchDeleteVersions, parameter validateOnly akan bernilai "true".

Guna membuat kueri log audit untuk uji coba kebijakan pembersihan Anda, jalankan perintah berikut:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

Outputnya akan terlihat seperti berikut:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

Menerapkan kebijakan ke repositori

Kebijakan pembersihan yang dibuat di Konsol Google Cloud diterapkan saat pembuatan atau update.

Untuk menggunakan kebijakan pembersihan yang ditentukan dalam file JSON lokal, terapkan kebijakan tersebut ke repositori tempat Anda ingin Artifact Registry menangani penghapusan otomatis versi artefak menggunakan gcloud CLI.

Anda hanya dapat menerapkan kebijakan pembersihan ke repositori standar. Anda tidak dapat menerapkan kebijakan pembersihan untuk:

Untuk menerapkan kebijakan pembersihan, jalankan perintah berikut di direktori yang berisi file kebijakan pembersihan.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

Ganti kode berikut:

  • REPOSITORY dengan nama repositori.
  • PROJECT_ID dengan ID project Google Cloud Anda.
  • LOCATION dengan lokasi regional atau multi-regional repositori.
  • --no-dry-run menonaktifkan fungsi uji coba untuk repositori.
  • POLICY_FILE adalah nama file dengan kebijakan pembersihan.

Misalnya, perintah berikut menerapkan kebijakan di policy.json ke repositori my-repo di region us-east1 dalam project my-project.

gcloud artifacts repositories set-cleanup-policies my-repo \
    --project=my-project \
    --location=us-east1 \
    --policy=policy.json

Artifact Registry menghapus dan menyimpan artefak yang cocok dengan kebijakan Anda menggunakan tugas latar belakang yang berjalan secara berkala. Perubahan akan diterapkan dalam waktu sekitar satu hari.

Memperbarui kebijakan

console

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Dalam daftar repositori, pilih repositori, lalu klik Edit Repository.

  3. Di bagian Kebijakan pembersihan, klik nama kebijakan yang ingin disetel untuk diubah.

  4. Edit kebijakan pembersihan, lalu klik Perbarui.

    Kebijakan pembersihan diterapkan ke repositori Anda.

gcloud CLI

Untuk memperbarui kebijakan yang sudah ada, edit setelan di file kebijakan Anda, lalu jalankan perintah berikut untuk menerapkan kebijakan kembali.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

Ganti kode berikut:

  • REPOSITORY dengan nama repositori.
  • PROJECT_ID dengan ID project Google Cloud Anda.
  • LOCATION dengan lokasi regional atau multi-regional repositori.
  • --no-dry-run menonaktifkan fungsi uji coba untuk repositori.
  • POLICY_FILE adalah nama file dengan kebijakan pembersihan.

Membuat daftar kebijakan pembersihan repositori

Anda dapat melihat kebijakan pembersihan yang terkait dengan repositori.

console

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Dalam daftar repositori, pilih repositori yang ingin Anda lihat.

  3. Di bagian Repository details, klik Show more.

    Nama kebijakan pembersihan akan ditampilkan.

  4. Untuk melihat atau mengedit detail kebijakan pembersihan repositori, klik Edit Repository.

    Detail kebijakan pembersihan yang sudah ada akan tercantum di bagian Kebijakan pembersihan.

gcloud CLI

Jalankan perintah berikut:

gcloud artifacts repositories list-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION

Ganti kode berikut:

  • REPOSITORY dengan nama repositori.
  • PROJECT_ID dengan ID project Google Cloud Anda.
  • LOCATION dengan lokasi regional atau multi-regional repositori.

Menghapus kebijakan dari repositori

Menghapus kebijakan pembersihan dari repositori jika Anda tidak lagi ingin Artifact Registry menghapus versi artefak secara otomatis.

console

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Dalam daftar repositori, pilih repositori, lalu klik Edit Repository.

  3. Di bagian Kebijakan pembersihan, arahkan kursor ke nama kebijakan yang ingin Anda hapus.

  4. Klik ikon Delete.

  5. Klik Perbarui.

    Kebijakan pembersihan akan dihapus.

gcloud CLI

Jalankan perintah berikut:

gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
    --policynames=POLICY_NAMES \
    --project=PROJECT_ID \
    --location=LOCATION

Ganti kode berikut:

  • REPOSITORY adalah nama repositori.
  • PROJECT_ID adalah ID project Google Cloud Anda.
  • LOCATION adalah lokasi regional atau multi-regional untuk repositori.
  • POLICY_NAMES adalah daftar nama kebijakan yang dipisahkan koma untuk kebijakan yang ingin Anda hapus.

Misalnya, perintah berikut menghapus kebijakan bernama delete-test dari repositori my-repo di region us-east1 dalam project my-project:

gcloud artifacts repositories delete-cleanup-policies my-repo \
    --policynames=delete-test \
    --project=my-project \
    --location=us-east1

Entri log audit untuk kebijakan pembersihan

Untuk melihat entri log kebijakan pembersihan di Cloud Logging, Anda harus enable logging DATA_WRITE.

Saat Anda menetapkan kebijakan pembersihan pada repositori, operasi tersebut akan dicatat sebagai update ke repositori (operasi UpdateRepository).

Saat menghapus versi artefak, Artifact Registry akan mencatat peristiwa tersebut ke dalam log Akses Data Cloud Logging. Entri log menunjukkan bahwa akun layanan Artifact Registry melakukan penghapusan. ID akun layanan Artifact Registry menggunakan format service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

Alat-alat lain

Untuk image container, Anda juga dapat menggunakan alat berikut untuk pengelolaan siklus proses image:

  • gcrane: Alat untuk registry container yang dapat Anda gunakan untuk menyalin image antar-repositori.
  • gcr-cleaner: Alat untuk menghapus image container berdasarkan kriteria yang ditentukan.

Alat gcrane dan gcr-cleaner bukan produk Google resmi.