fast/extras/0-cicd-gitlab/variables.tf (107 lines of code) (raw):
/**
* Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
variable "commit_config" {
description = "Configure commit metadata."
type = object({
author = optional(string, "FAST loader")
email = optional(string, "fast-loader@fast.gcp.tf")
message = optional(string, "FAST initial loading")
})
default = {}
nullable = false
}
variable "gitlab_config" {
description = "Gitlab config."
type = object({
access_token = string
hostname = optional(string, "gitlab.gcp.example.com")
ssh_port = optional(number, 2222)
})
}
variable "groups" {
description = "Gitlab groups."
type = map(object({
name = string
path = string
description = string
}))
}
variable "modules_config" {
description = "Gitlab modules config."
type = object({
bootstrap = optional(bool, true)
module_prefix = optional(string, "")
group = optional(string)
project_name = string
source_ref = optional(string)
key_config = optional(object({
create_key = optional(bool, false)
create_secrets = optional(bool, false)
keypair_path = optional(string)
}), {})
})
default = null
validation {
condition = (
var.modules_config == null
||
try(var.modules_config.project_name, null) != null
)
error_message = "Modules configuration requires a modules repository name."
}
}
variable "projects" {
description = "Gitlab projects to create."
type = map(object({
create_options = optional(object({
allow = optional(object({
auto_merge = optional(bool)
merge_commit = optional(bool)
rebase_merge = optional(bool)
squash_merge = optional(bool)
}))
auto_init = optional(bool)
description = optional(string)
features = optional(object({
issues = optional(bool)
projects = optional(bool)
wiki = optional(bool)
}))
templates = optional(object({
gitignore = optional(string, "Terraform")
license = optional(string)
repository = optional(object({
name = string
owner = string
}))
}), {})
visibility = optional(string, "private")
}))
group = string
populate_from = optional(string)
populate_samples = optional(bool, false)
workflow_file = optional(string, null)
}))
default = {}
nullable = true
validation {
condition = alltrue([
for k, v in var.projects :
try(regex("^[a-zA-Z0-9-_.]+$", k), null) != null
])
error_message = "Project names must match '^[a-zA-Z0-9_.]+$'."
}
}