Skip to content

Commit 2f0d900

Browse files
authored
Refs platform/#3202 (#13)
* refs sparkfabrik-innovation-team/board#3202: manage secret in module * feat: fix condition for remote repositories * fix: remote repositories condition * fix remote repositories condition * fix condition for remote repositories * fix remote repositories condition * fix remote repositories condition * fix remote repository configs * fix remote condition * fix remote repositories conditions * fix remote repositories conditions * fix remote repositories conditions * ref fix condition on remote repositories * fix remote repositories conditions * fix * fix * fix * fix * fix * fix remote repositories lookup * fix: add secret name * fix project id * fix * fix * fix default values in lookup * feat validation * feat update changelog --------- Co-authored-by: Stefano Sibilia <[email protected]>
1 parent bb1ad0f commit 2f0d900

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ Following semver, any non backwards compatible feature implies that the next rel
2020

2121
## [Unreleased]
2222

23+
## [0.7.0] - 2024-10-15
24+
25+
[Compare with previous version](https://github.com/sparkfabrik/terraform-google-gcp-artifact-registry/compare/0.6.0...0.7.0)
26+
27+
- BREAKING: add support for GCP secret as password for remote repositories. Break backwards compatibility if using `username_password_credentials_password_secret_version` as it now stores the secret version (not the name).
28+
2329
## [0.6.0] - 2024-10-09
2430

2531
[Compare with previous version](https://github.com/sparkfabrik/terraform-google-gcp-artifact-registry/compare/0.5.0...0.6.0)

main.tf

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,26 @@ locals {
3333
}
3434
}
3535
custom_role_artifact_registry_lister_id = "projects/${var.project_id}/roles/${var.artifact_registry_listers_custom_role_name}"
36+
remote_repositories = {
37+
for repository_id, repository in var.repositories : repository_id => {
38+
repository_id = repository_id
39+
username_password_credentials_username = lookup(repository.remote_repository_config_docker, "username_password_credentials_username", "")
40+
username_password_credentials_password_secret_name = lookup(repository.remote_repository_config_docker, "username_password_credentials_password_secret_name", "")
41+
username_password_credentials_password_secret_version = lookup(repository.remote_repository_config_docker, "username_password_credentials_password_secret_version", "latest")
42+
}
43+
if repository.mode == "REMOTE_REPOSITORY"
44+
}
45+
}
46+
47+
data "google_secret_manager_secret_version" "remote_repository_secrets" {
48+
for_each = {
49+
for key, value in local.remote_repositories : key => value
50+
if alltrue([value.username_password_credentials_username != "", value.username_password_credentials_password_secret_name != ""])
51+
}
52+
53+
project = var.project_id
54+
secret = each.value.username_password_credentials_password_secret_name
55+
version = each.value.username_password_credentials_password_secret_version
3656
}
3757

3858
resource "google_artifact_registry_repository" "repositories" {
@@ -109,12 +129,12 @@ resource "google_artifact_registry_repository" "repositories" {
109129
disable_upstream_validation = remote_repository_config.value.disable_upstream_validation
110130

111131
dynamic "upstream_credentials" {
112-
for_each = remote_repository_config.value.username_password_credentials_username != "" && remote_repository_config.value.username_password_credentials_password_secret_version != "" ? [remote_repository_config.value] : []
132+
for_each = remote_repository_config.value.username_password_credentials_username != "" && remote_repository_config.value.username_password_credentials_password_secret_name != "" ? [remote_repository_config.value] : []
113133

114134
content {
115135
username_password_credentials {
116136
username = upstream_credentials.value.username_password_credentials_username
117-
password_secret_version = upstream_credentials.value.username_password_credentials_password_secret_version
137+
password_secret_version = data.google_secret_manager_secret_version.remote_repository_secrets[each.key].name
118138
}
119139
}
120140
}

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ variable "repositories" {
4848
custom_repository_uri = string
4949
disable_upstream_validation = optional(bool, false)
5050
username_password_credentials_username = optional(string, "")
51+
username_password_credentials_password_secret_name = optional(string, "")
5152
username_password_credentials_password_secret_version = optional(string, "")
5253
}), null)
5354
readers = optional(list(string), [])
@@ -71,6 +72,11 @@ variable "repositories" {
7172
condition = alltrue([for policy in flatten([for repo in var.repositories : [for cp in repo.cleanup_policies : cp]]) : policy.most_recent_versions == {} || policy.most_recent_versions.keep_count == null || policy.most_recent_versions.keep_count >= 0])
7273
error_message = "Keep count must be a non-negative number."
7374
}
75+
76+
validation {
77+
condition = alltrue([for repo in var.repositories : repo.mode == "REMOTE_REPOSITORY" ? lookup(repo, "remote_repository_config_docker", null) != null : true])
78+
error_message = "Remote repository configuration is required for the REMOTE_REPOSITORY mode."
79+
}
7480
}
7581

7682
variable "artifact_registry_listers_custom_role_name" {

0 commit comments

Comments
 (0)