diff --git a/modules/cloudbuild_repo_connection/README.md b/modules/cloudbuild_repo_connection/README.md
index 7dfb465f..8024ba74 100644
--- a/modules/cloudbuild_repo_connection/README.md
+++ b/modules/cloudbuild_repo_connection/README.md
@@ -13,7 +13,7 @@ Users will provide the required secrets through the `connection_config` variable
|------|-------------|------|---------|:--------:|
| cloud\_build\_repositories | Cloud Build repositories configuration:
- repository\_name: The name of the repository to be used in Cloud Build.
- repository\_url: The HTTPS clone URL for the repository. This URL must end with '.git' and be a valid HTTPS URL.
Each entry in this map must contain both `repository_name` and `repository_url` to properly integrate with the Cloud Build service. |
map(object({
repository_name = string,
repository_url = string,
})) | n/a | yes |
| cloudbuild\_connection\_name | Cloudbuild Connection Name. | `string` | `"generic-cloudbuild-connection"` | no |
-| connection\_config | Connection configuration options:object({
connection_type = string
github_secret_id = optional(string)
github_app_id_secret_id = optional(string)
gitlab_read_authorizer_credential_secret_id = optional(string)
gitlab_authorizer_credential_secret_id = optional(string)
gitlab_webhook_secret_id = optional(string)
}) | n/a | yes |
+| connection\_config | Connection configuration options:object({
connection_type = string
github_secret_id = optional(string)
github_app_id_secret_id = optional(string)
gitlab_read_authorizer_credential_secret_id = optional(string)
gitlab_authorizer_credential_secret_id = optional(string)
gitlab_webhook_secret_id = optional(string)
gitlab_enterprise_host_uri = optional(string)
gitlab_enterprise_service_directory = optional(string)
gitlab_enterprise_ca_certificate = optional(string)
}) | n/a | yes |
| location | Resources location. | `string` | `"us-central1"` | no |
| project\_id | The project id to create the secret and assign cloudbuild service account permissions. | `string` | n/a | yes |
diff --git a/modules/cloudbuild_repo_connection/main.tf b/modules/cloudbuild_repo_connection/main.tf
index 46bf8351..f483ea7e 100644
--- a/modules/cloudbuild_repo_connection/main.tf
+++ b/modules/cloudbuild_repo_connection/main.tf
@@ -57,7 +57,14 @@ resource "google_cloudbuildv2_connection" "connection" {
dynamic "gitlab_config" {
for_each = local.is_gitlab ? [1] : []
content {
- host_uri = null
+ host_uri = var.connection_config.gitlab_enterprise_host_uri
+ ssl_ca = var.connection_config.gitlab_enterprise_ca_certificate
+ dynamic "service_directory_config" {
+ for_each = var.connection_config.gitlab_enterprise_service_directory == null ? [] : [1]
+ content {
+ service = var.connection_config.gitlab_enterprise_service_directory
+ }
+ }
authorizer_credential {
user_token_secret_version = "${var.connection_config.gitlab_authorizer_credential_secret_id}/versions/latest"
}
diff --git a/modules/cloudbuild_repo_connection/variables.tf b/modules/cloudbuild_repo_connection/variables.tf
index 8913a766..31168c5e 100644
--- a/modules/cloudbuild_repo_connection/variables.tf
+++ b/modules/cloudbuild_repo_connection/variables.tf
@@ -28,6 +28,9 @@ variable "connection_config" {
- gitlab_read_authorizer_credential_secret_id: (Optional) The secret ID for the GitLab read authorizer credential.
- gitlab_authorizer_credential_secret_id: (Optional) The secret ID for the GitLab authorizer credential.
- gitlab_webhook_secret_id: (Optional) The secret ID for the GitLab WebHook.
+ - gitlab_enterprise_host_uri: (Optional) The URI of the GitLab Enterprise host this connection is for. If not specified, the default value is https://gitlab.com.
+ - gitlab_enterprise_service_directory: (Optional) Configuration for using Service Directory to privately connect to a GitLab Enterprise server. This should only be set if the GitLab Enterprise server is hosted on-premises and not reachable by public internet. If this field is left empty, calls to the GitLab Enterprise server will be made over the public internet. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}.
+ - gitlab_enterprise_ca_certificate: (Optional) SSL certificate to use for requests to GitLab Enterprise.
EOT
type = object({
connection_type = string
@@ -36,6 +39,9 @@ variable "connection_config" {
gitlab_read_authorizer_credential_secret_id = optional(string)
gitlab_authorizer_credential_secret_id = optional(string)
gitlab_webhook_secret_id = optional(string)
+ gitlab_enterprise_host_uri = optional(string)
+ gitlab_enterprise_service_directory = optional(string)
+ gitlab_enterprise_ca_certificate = optional(string)
})
validation {