# Google Cloud Artifact Registry Module This module simplifies the creation of repositories using Google Cloud Artifact Registry. - [Standard Repository](#standard-repository) - [Remote and Virtual Repositories](#remote-and-virtual-repositories) - [Additional Docker and Maven Options](#additional-docker-and-maven-options) - [Cleanup Policies](#cleanup-policies) - [Variables](#variables) - [Outputs](#outputs) ## Standard Repository ```hcl module "docker_artifact_registry" { source = "./fabric/modules/artifact-registry" project_id = "myproject" location = "europe-west1" name = "myregistry" iam = { "roles/artifactregistry.admin" = ["group:cicd@example.com"] } } # tftest modules=1 resources=2 ``` ## Remote and Virtual Repositories ```hcl module "registry-local" { source = "./fabric/modules/artifact-registry" project_id = var.project_id location = "europe-west1" name = "local" format = { python = {} } } module "registry-remote" { source = "./fabric/modules/artifact-registry" project_id = var.project_id location = "europe-west1" name = "remote" format = { python = {} } mode = { remote = true } } module "registry-virtual" { source = "./fabric/modules/artifact-registry" project_id = var.project_id location = "europe-west1" name = "virtual" format = { python = {} } mode = { virtual = { remote = { repository = module.registry-remote.id priority = 1 } local = { repository = module.registry-local.id priority = 10 } } } } # tftest modules=3 resources=3 inventory=remote-virtual.yaml ``` ## Additional Docker and Maven Options ```hcl module "registry-docker" { source = "./fabric/modules/artifact-registry" project_id = var.project_id location = "europe-west1" name = "docker" format = { docker = { immutable_tags = true } } } module "registry-maven" { source = "./fabric/modules/artifact-registry" project_id = var.project_id location = "europe-west1" name = "maven" format = { maven = { allow_snapshot_overwrites = true version_policy = "RELEASE" } } } # tftest modules=2 resources=2 ``` ## Cleanup Policies ```hcl module "registry-docker" { source = "./fabric/modules/artifact-registry" project_id = var.project_id location = "europe-west1" name = "docker-cleanup-policies" format = { docker = {} } cleanup_policy_dry_run = false cleanup_policies = { keep-5-versions = { action = "KEEP" most_recent_versions = { package_name_prefixes = ["test"] keep_count = 5 } } keep-tagged-release = { action = "KEEP" condition = { tag_state = "TAGGED" tag_prefixes = ["release"] package_name_prefixes = ["webapp", "mobile"] } } } } # tftest modules=1 resources=1 inventory=cleanup-policies.yaml ``` ## Variables | name | description | type | required | default | |---|---|:---:|:---:|:---:| | [cleanup_policies](variables.tf#L17) | Object containing details about the cleanup policies for an Artifact Registry repository. | map(object({…default = null | ✓ | | | [location](variables.tf#L95) | Registry location. Use `gcloud beta artifacts locations list' to get valid values. | string | ✓ | | | [name](variables.tf#L120) | Registry name. | string | ✓ | | | [project_id](variables.tf#L125) | Registry project id. | string | ✓ | | | [cleanup_policy_dry_run](variables.tf#L38) | If true, the cleanup pipeline is prevented from deleting versions in this repository. | bool | | null | | [description](variables.tf#L44) | An optional description for the repository. | string | | "Terraform-managed registry" | | [encryption_key](variables.tf#L50) | The KMS key name to use for encryption at rest. | string | | null | | [format](variables.tf#L56) | Repository format. | object({…}) | | { docker = {} } | | [iam](variables.tf#L83) | IAM bindings in {ROLE => [MEMBERS]} format. | map(list(string)) | | {} | | [labels](variables.tf#L89) | Labels to be attached to the registry. | map(string) | | {} | | [mode](variables.tf#L100) | Repository mode. | object({…}) | | { standard = true } | ## Outputs | name | description | sensitive | |---|---|:---:| | [id](outputs.tf#L17) | Fully qualified repository id. | | | [image_path](outputs.tf#L22) | Repository path for images. | | | [name](outputs.tf#L32) | Repository name. | |