Mengonfigurasi kebijakan pembersihan

Kebijakan pembersihan Artifact Registry menentukan kriteria untuk menghapus versi artefak yang tidak lagi Anda perlukan secara otomatis atau menyimpan artefak yang ingin Anda simpan tanpa batas waktu.

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 kebijakan penyimpanan dengan kriteria untuk mempertahankan artefak.

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

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

Jadwal penerapan kebijakan

Artifact Registry menghapus dan mempertahankan artefak yang cocok dengan kebijakan pembersihan Anda 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 maksimal 10 kebijakan pembersihan ke repositori.

Format yang didukung

Anda dapat menetapkan kebijakan pembersihan di repositori standar dan jarak jauh untuk semua format repositori.

Peran yang diperlukan

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

Peran bawaan ini berisi izin yang diperlukan untuk menerapkan atau menghapus kebijakan pembersihan. Untuk melihat izin yang benar-benar diperlukan, luaskan 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 mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Peran default untuk Agen Layanan Artifact Registry menyertakan 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 penghapusan dan penyimpanan Anda. Anda dapat membuat file kebijakan dengan membuat dan mengedit file JSON, lalu menggunakan Google Cloud CLI untuk menerapkan kebijakan, atau menggunakan konsol Google Cloud. Kebijakan penghapusan menentukan kondisi untuk menghapus artefak. Kebijakan simpan menentukan kondisi untuk mempertahankan artefak, atau sejumlah versi terbaru yang akan disimpan. Anda tidak dapat menggunakan kondisi dan versi terbaru dalam kebijakan penyimpanan yang sama.

Membuat kebijakan penghapusan

Kebijakan penghapusan memungkinkan Anda menentukan usia minimum atau maksimum untuk penghapusan artefak dan kriteria pemfilteran tambahan untuk membatasi kebijakan ke artefak tertentu.

Jika Anda memiliki artefak tertentu yang tidak ingin dihapus karena alasan apa pun, buat kebijakan simpan bersyarat, atau kebijakan simpan versi terbaru serta kebijakan hapus. Jika artefak cocok dengan kriteria dalam kebijakan penghapusan dan kebijakan penyimpanan, artefak akan disimpan.

console

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

Untuk menambahkan kebijakan penghapusan ke repositori yang ada:

  1. Buka halaman Repositories di konsol Google Cloud.

    Buka halaman Repositori

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

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

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

  4. Klik Tambahkan kebijakan pembersihan dan tambahkan hal berikut:

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

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

      Format yang tidak mendukung tag akan diperlakukan sebagai untagged. Jika repositori mengaktifkan tag yang tidak dapat diubah, artefak yang diberi tag tidak dapat dihapus.

      Untuk mengetahui informasi selengkapnya tentang status tag yang berlaku untuk kebijakan pembersihan, lihat Referensi TagState.

  5. Berikut adalah cara opsional untuk menentukan kebijakan penghapusan:

    • 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 untuk menggunakan awalan tag.
    • Awal 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. 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.
    • 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 Anda diterapkan ke repositori Anda. Anda dapat melihat kebijakan pembersihan di bagian Repository details dengan mengklik Show more.

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 minimal satu kondisi.

name
Dalam cuplikan kebijakan penghapusan, DELETE_POLICY_NAME adalah nama kebijakan. Nama harus unik dalam grup kebijakan yang Anda terapkan ke repositori.
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 mengambil image ke atau dari repositori. Nilai yang didukung adalah:

    • tagged: hanya berlaku untuk artefak yang diberi tag.
    • untagged: hanya berlaku untuk artefak yang tidak diberi tag.
    • any: mengabaikan status tag dan berlaku untuk artefak bertag dan tidak bertag.

    Format yang tidak mendukung tag akan diperlakukan sebagai untagged. Jika repositori mengaktifkan tag yang tidak dapat diubah, artefak yang diberi tag tidak dapat dihapus.

    Untuk mengetahui informasi selengkapnya tentang tag Docker, lihat Konsep penampung.

  • tagPrefixes: TAG_PREFIXES adalah daftar prefiks tag yang dipisahkan koma. Misalnya, "test", "staging" akan cocok dengan gambar dengan tag "testenv" dan "staging-1.5". tagState harus ditetapkan ke TAGGED untuk 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.

  • newerThan: NEWER_THAN_DURATION adalah waktu maksimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari.

Membuat kebijakan simpan bersyarat

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

console

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

Untuk menambahkan kebijakan simpan ke repositori yang ada:

  1. Buka halaman Repositories di konsol Google Cloud.

    Buka halaman Repositori

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

  3. Di bagian Cleanup policies, pilih Dry run untuk menguji kebijakan baru Anda sebelum menghapus artefak apa pun. Anda harus menetapkan setidaknya satu kebijakan penghapusan untuk melihat hasil kebijakan simpan. Untuk informasi selengkapnya tentang cara melihat hasil pengujian, lihat uji coba.

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

  4. Klik Tambahkan kebijakan pembersihan dan tambahkan hal berikut:

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

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

      Format yang tidak mendukung tag akan diperlakukan sebagai untagged. Jika repositori mengaktifkan tag yang tidak dapat diubah, artefak yang diberi tag tidak dapat dihapus. Untuk mengetahui informasi selengkapnya tentang status tag yang berlaku untuk kebijakan pembersihan, lihat 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 untuk menggunakan awalan tag.
    • Awal 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.
    • 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 Anda diterapkan ke repositori Anda.

JSON

Formatnya mirip dengan kebijakan penghapusan. Untuk kebijakan simpan, 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 kebijakan pembersihan. Nama harus unik dalam grup kebijakan yang Anda terapkan ke repositori.
  • 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 mendorong atau menarik image ke atau dari repositori. Untuk mengetahui informasi selengkapnya tentang tag Docker, lihat Konsep penampung.

    Opsi yang tersedia 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 akan diperlakukan sebagai untagged. Jika repositori mengaktifkan tag yang tidak dapat diubah, artefak yang diberi tag tidak dapat dihapus. Untuk mengetahui informasi selengkapnya tentang status tag yang berlaku untuk kebijakan pembersihan, lihat 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 untuk 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 ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari. Anda dapat menentukan durasi detik, menit, jam, atau hari dengan menambahkan s, m, h, atau d.
  • NEWER_THAN_DURATION dengan waktu maksimum sejak versi artefak dibuat di repositori, yang ditentukan sebagai durasi. Misalnya, 30d adalah 30 hari.

Membuat kebijakan penyimpanan untuk versi terbaru

Anda dapat membuat kebijakan penyimpanan untuk menyimpan sejumlah versi tertentu. Anda tidak dapat menggunakan kriteria Simpan bersyarat dan Simpan versi terbaru dalam kebijakan simpan yang sama.

Kebijakan simpan berfungsi dengan kebijakan penghapusan untuk menyimpan artefak yang akan dihapus sesuai dengan spesifikasi kebijakan penghapusan Anda, tetapi yang ingin Anda simpan. Jika artefak cocok dengan kriteria untuk kebijakan penghapusan dan kebijakan penyimpanan, artefak akan disimpan.

console

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

Untuk menambahkan kebijakan simpan 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 Repositori.

  3. Di bagian Cleanup policies, pilih Dry run untuk menguji kebijakan baru Anda sebelum menghapus artefak apa pun. Anda harus menetapkan setidaknya satu kebijakan penghapusan untuk melihat hasil kebijakan simpan. Untuk informasi selengkapnya tentang cara melihat hasil pengujian, lihat uji coba.

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

  4. Klik Tambahkan kebijakan pembersihan dan tambahkan hal berikut:

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

  6. Opsional: pilih Package prefixes untuk menentukan awalan paket yang akan menerapkan kebijakan simpan. 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 Anda diterapkan ke repositori Anda. Anda dapat melihat kebijakan pembersihan di bagian Repository details dengan mengklik Show more.

JSON

Formatnya mirip dengan kebijakan penghapusan. Untuk kebijakan simpan, 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. Nama tersebut harus unik dalam grup kebijakan yang Anda terapkan ke repositori.
  • PACKAGE_PREFIXES dengan awalan paket opsional untuk menerapkan kebijakan penyimpanan. 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 penghapusan dan dua kebijakan penyimpanan.

  • Kebijakan delete-prerelease menghapus versi artefak 30 hari setelah upload jika artefak dimulai dengan string alpha atau v0.
  • Kebijakan keep-tagged-release mempertahankan artefak yang diberi tag dengan awalan release yang memiliki nama file yang diawali dengan webapp atau mobile.
  • Kebijakan keep-minimum-versions mempertahankan lima versi artefak terbaru 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 ke dry run 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. Untuk menerima log audit Akses Data untuk kebijakan pembersihan, Anda harus mengaktifkan jenis log audit akses data penulisan data secara eksplisit 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 Repositori.

  3. Di bagian Kebijakan pembersihan, pilih Pengujian coba.

  4. Klik Tambahkan kebijakan pembersihan dan konfigurasikan opsi untuk kebijakan Hapus bersyarat, Simpan bersyarat, atau Simpan versi terbaru.

  5. Klik Perbarui.

Jika kebijakan penghapusan menghasilkan tindakan BatchDeleteVersions, parameter validateOnly akan dievaluasi menjadi "true".

Untuk membuat kueri log audit guna menjalankan uji coba kebijakan pembersihan, 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

Untuk melakukan uji coba dengan kebijakan pembersihan, 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 adalah lokasi repositori regional atau multi-regional.

Jika kebijakan penghapusan menghasilkan tindakan BatchDeleteVersions, parameter validateOnly akan dievaluasi menjadi "true".

Untuk membuat kueri log audit guna menjalankan uji coba kebijakan pembersihan, 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

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.

Untuk menerapkan kebijakan pembersihan yang ditetapkan ke Pengujian coba di konsol, tetapkan kebijakan ke Hapus artefak.

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

  • Project Google Cloud .

console

Untuk menerapkan kebijakan pembersihan:

  1. Buka halaman Repositories di konsol Google Cloud.

    Buka halaman Repositori

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

  3. Di bagian Kebijakan pembersihan, pilih Hapus artefak.

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

gcloud

Untuk menerapkan kebijakan pembersihan, jalankan perintah berikut di direktori dengan file kebijakan pembersihan Anda.

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 adalah lokasi repositori regional atau multi-regional.
  • POLICY_FILE adalah nama file dengan kebijakan pembersihan.

Flag --no-dry-run menonaktifkan fungsi dry run untuk repositori.

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

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

Artifact Registry menghapus dan mempertahankan 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 Repositori.

  3. Di bagian Cleanup policies, klik nama kebijakan yang ingin Anda ubah.

  4. Edit kebijakan pembersihan, lalu klik Perbarui.

    Kebijakan pembersihan Anda diterapkan ke repositori Anda.

gcloud

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

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 adalah lokasi repositori regional atau multi-regional.
  • POLICY_FILE adalah nama file dengan kebijakan pembersihan.

Flag --no-dry-run menonaktifkan fungsi dry run untuk repositori.

Mencantumkan 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 Repositori.

    Detail kebijakan pembersihan yang ada tercantum di bagian Kebijakan pembersihan.

gcloud

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 adalah lokasi repositori regional atau multi-regional.

Menghapus kebijakan dari repositori

Hapus kebijakan pembersihan dari repositori jika Anda tidak ingin lagi 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 Repositori.

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

  4. Klik ikon Hapus.

  5. Klik Perbarui.

    Kebijakan pembersihan dihapus.

gcloud

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 repositori regional atau multi-regional.
  • POLICY_NAMES adalah daftar nama kebijakan yang dipisahkan koma untuk kebijakan yang ingin Anda hapus.

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

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

Entri log audit untuk kebijakan pembersihan

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

Saat Anda menetapkan kebijakan pembersihan di repositori, operasi akan dicatat ke dalam log sebagai update ke repositori (operasi UpdateRepository).

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

Alat lainnya

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

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

Alat gcrane dan gcr-cleaner bukan produk resmi Google.