gitlab_project resources creation returns error 500 when use_custom_template is set
Created by: xavmeyer
GitLab Provider version
3.16.0+
GitLab version
Gitlab 15.3.3-ee
Terraform version
Terraform 1.2.9
Relevant Terraform Configuration
resource "gitlab_project" "project" {
namespace_id = var.parent_id
name = var.name
description = var.description
archived = lookup(var.settings, "archived", false)
visibility_level = lookup(var.settings, "visibility", "internal")
packages_enabled = lookup(var.settings, "packages_enabled", false)
container_registry_enabled = lookup(var.settings, "container_registry_enabled", false)
remove_source_branch_after_merge = lookup(var.settings, "remove_source_branch_after_merge", true)
snippets_enabled = lookup(var.settings, "snippets_enabled", false)
issues_enabled = lookup(var.settings, "issues_enabled", false)
wiki_enabled = lookup(var.settings, "wiki_enabled", false)
squash_option = lookup(var.settings, "squash_option", "default_off")
template_name = lookup(var.settings, "template_name", null)
use_custom_template = length(lookup(var.settings, "template_name", "")) > 0
merge_method = lookup(var.settings, "merge_method", "merge")
lifecycle {
ignore_changes = [
# Ignore changes to default_branch.
default_branch,
ci_forward_deployment_enabled
]
}
}
Relevant log output
Terraform plan:
+ resource "gitlab_project" "project" {
+ allow_merge_on_skipped_pipeline = false
+ analytics_access_level = (known after apply)
+ approvals_before_merge = 0
+ archived = false
+ auto_cancel_pending_pipelines = (known after apply)
+ auto_devops_deploy_strategy = (known after apply)
+ auto_devops_enabled = (known after apply)
+ autoclose_referenced_issues = (known after apply)
+ build_git_strategy = (known after apply)
+ build_timeout = (known after apply)
+ builds_access_level = (known after apply)
+ ci_default_git_depth = (known after apply)
+ ci_forward_deployment_enabled = true
+ container_registry_access_level = (known after apply)
+ container_registry_enabled = false
+ default_branch = (known after apply)
+ forking_access_level = (known after apply)
+ http_url_to_repo = (known after apply)
+ id = (known after apply)
+ issues_access_level = (known after apply)
+ issues_enabled = false
+ lfs_enabled = true
+ merge_method = "merge"
+ merge_pipelines_enabled = false
+ merge_requests_access_level = (known after apply)
+ merge_requests_enabled = true
+ merge_trains_enabled = false
+ mirror = false
+ mirror_overwrites_diverged_branches = false
+ mirror_trigger_builds = false
+ name = "test-project-creation-bis"
+ namespace_id = 294
+ only_allow_merge_if_all_discussions_are_resolved = false
+ only_allow_merge_if_pipeline_succeeds = false
+ only_mirror_protected_branches = false
+ operations_access_level = (known after apply)
+ packages_enabled = false
+ pages_access_level = "private"
+ path_with_namespace = (known after apply)
+ pipelines_enabled = true
+ printing_merge_request_link_enabled = true
+ remove_source_branch_after_merge = true
+ repository_access_level = (known after apply)
+ repository_storage = (known after apply)
+ request_access_enabled = true
+ requirements_access_level = (known after apply)
+ runners_token = (sensitive value)
+ security_and_compliance_access_level = (known after apply)
+ shared_runners_enabled = (known after apply)
+ snippets_access_level = (known after apply)
+ snippets_enabled = false
+ squash_option = "default_off"
+ ssh_url_to_repo = (known after apply)
+ tags = (known after apply)
+ topics = (known after apply)
+ use_custom_template = false
+ visibility_level = "internal"
+ web_url = (known after apply)
+ wiki_access_level = (known after apply)
+ wiki_enabled = false
+ container_expiration_policy {
+ cadence = (known after apply)
+ enabled = (known after apply)
+ keep_n = (known after apply)
+ name_regex_delete = (known after apply)
+ name_regex_keep = (known after apply)
+ next_run_at = (known after apply)
+ older_than = (known after apply)
}
+ push_rules {
+ author_email_regex = (known after apply)
+ branch_name_regex = (known after apply)
+ commit_committer_check = (known after apply)
+ commit_message_negative_regex = (known after apply)
+ commit_message_regex = (known after apply)
+ deny_delete_tag = (known after apply)
+ file_name_regex = (known after apply)
+ max_file_size = (known after apply)
+ member_check = (known after apply)
+ prevent_secrets = (known after apply)
+ reject_unsigned_commits = (known after apply)
}
}
Terraform apply:
│ Error: POST https://XXXX.XXXX.XXX/api/v4/projects: 500 {message: 500 Internal Server Error}
Gitlab API call post-apply:
{
"time": "2022-10-11T14:42:31.005Z",
"severity": "INFO",
"duration_s": 0.01756,
"db_duration_s": 0.002,
"view_duration_s": 0.01556,
"status": 500,
"method": "POST",
"path": "/api/v4/projects",
"params": [
{
"key": "allow_merge_on_skipped_pipeline",
"value": null
},
{
"key": "approvals_before_merge",
"value": 0
},
{
"key": "ci_config_path",
"value": ""
},
{
"key": "lfs_enabled",
"value": null
},
{
"key": "merge_method",
"value": "merge"
},
{
"key": "mirror",
"value": null
},
{
"key": "mirror_trigger_builds",
"value": null
},
{
"key": "name",
"value": "test-project-creation-bis"
},
{
"key": "namespace_id",
"value": 294
},
{
"key": "only_allow_merge_if_all_discussions_are_resolved",
"value": null
},
{
"key": "only_allow_merge_if_pipeline_succeeds",
"value": null
},
{
"key": "packages_enabled",
"value": null
},
{
"key": "pages_access_level",
"value": "private"
},
{
"key": "remove_source_branch_after_merge",
"value": null
},
{
"key": "printing_merge_request_link_enabled",
"value": null
},
{
"key": "request_access_enabled",
"value": null
},
{
"key": "shared_runners_enabled",
"value": null
},
{
"key": "squash_option",
"value": "default_off"
},
{
"key": "use_custom_template",
"value": null
},
{
"key": "visibility",
"value": "internal"
},
{
"key": "container_registry_enabled",
"value": null
},
{
"key": "issues_enabled",
"value": null
},
{
"key": "jobs_enabled",
"value": null
},
{
"key": "merge_requests_enabled",
"value": null
},
{
"key": "snippets_enabled",
"value": null
},
{
"key": "wiki_enabled",
"value": null
}
],
...
Description
Creating a gitlab_project
resource with var.settings["template_name"]
being unset, and thus,
use_custom_template = ""
-
template_name=null
results in a error 500 from gitlab when using a version 3.16+ of the terraform provider for gitlab.
Commenting the template_name
and forcing template_name=false
results in the same error.
With the version 3.15 of the terraform provider for gitlab, the following parameter:
{
"key": "use_custom_template",
"value": null
},
doesn't appear in the API call and succeeds at creating a new project.
Edited by Xavier Meyer