Project settings (readme, default branch) missing when creating via Terraform
Bug Report
When creating a gitlab.com project via the Terraform gitlab_project
resource, we are seeing some projects create without their default branch or Readme initialised, even when the terraform plan output lists + initialize_with_readme = true
and + default_branch = "main"
Initially this was a rare occurrence, but for the last 1-2 weeks this is now consistently how projects are being created via Terraform.
Relevant Terraform Configuration
Our terraform iterates over a growing list of project configuration files to create and manage those projects in via Terraform state. Currently this terraform manages 474 projects.
resource "gitlab_project" "project" {
for_each = {
for project in local.projects_data : "${project.project_key}" => project
}
# Enforcing naming convention (lower case and dashes instead of spaces)
name = lower(replace(each.value.project_name, " ", "-"))
path = lower(replace(each.value.project_name, " ", "-"))
description = "${each.value.project_description} (Terraform Managed)"
# Set project namespace ID to the immediate parent group ID
namespace_id = data.gitlab_group.project_group[each.key].id
# Project configuration
default_branch = lower(replace(each.value.project_default_branch_name, " ", "-"))
initialize_with_readme = true
visibility_level = "private"
# Visibility, project features, permissions
merge_requests_enabled = true
forking_access_level = "disabled"
lfs_enabled = false
packages_enabled = false
container_registry_access_level = "disabled"
analytics_access_level = "enabled"
security_and_compliance_access_level = "enabled"
wiki_enabled = false
snippets_enabled = false
issues_enabled = false
issues_access_level = "disabled"
releases_access_level = "enabled"
environments_access_level = "enabled"
feature_flags_access_level = "disabled"
infrastructure_access_level = "private"
monitor_access_level = "disabled"
pages_access_level = each.value.project_gitlab_pages_enabled ? "private" : "disabled"
# Merge Requests
merge_pipelines_enabled = false
resolve_outdated_diff_discussions = false
printing_merge_request_link_enabled = true
remove_source_branch_after_merge = true
squash_option = "default_off"
merge_method = each.value.project_merge_method
# Merge checks
only_allow_merge_if_pipeline_succeeds = true
only_allow_merge_if_all_discussions_are_resolved = true
# CI/CD settings
builds_access_level = "enabled"
public_jobs = false
# Deletion behavior
archive_on_destroy = true
}
Relevant Terraform Command
Utilising the gitlab-terraform template - https://gitlab.com/gitlab-org/gitlab/-/blob/eef9eac07d67baf1cf2aa000962a0ca5de0b30dd/lib/gitlab/ci/templates/Terraform/Base.gitlab-ci.yml#L72
gitlab-terraform apply $TERRAFORM_VAR_ARG
Relevant Log Output
These are the debug logs of the `terraform` command output:
I've included the http request (output in the TF_LOG_PATH file) to create the project with shows initialize_with_readme
set to true, and the default_branch
as main
.
{
"@caller": "gitlab.com/gitlab-org/terraform-provider-gitlab/internal/provider/sdk/resource_gitlab_project.go:2290",
"@level": "debug",
"@message": "[DEBUG] create gitlab project \"gitlab-support-test6\"",
"@module": "gitlab",
"@timestamp": "2024-05-21T13:22:45.630474Z",
"tf_mux_provider": "tf5to6server.v5tov6Server",
"tf_provider_addr": "registry.terraform.io/gitlabhq/gitlab",
"tf_req_id": "45788674-609f-28d5-f3c4-dc02adf050b9",
"tf_resource_type": "gitlab_project",
"tf_rpc": "ApplyResourceChange",
"timestamp": "2024-05-21T13:22:45.630Z"
}
{
"@caller": "github.com/hashicorp/terraform-plugin-sdk/v2@v2.33.0/helper/logging/logging_http_transport.go:160",
"@level": "debug",
"@message": "Sending HTTP Request",
"@module": "gitlab.GitLab",
"@timestamp": "2024-05-21T13:22:45.631996Z",
"Accept": "application/json",
"Accept-Encoding": "gzip",
"Authorization": "Bearer <REDACTED>",
"Content-Length": "1096",
"Content-Type": "application/json",
"Host": "gitlab.com",
"User-Agent": "Terraform/1.5.5 (+https://www.terraform.io) Terraform-Plugin-SDK/2.33.0 terraform-provider-gitlab/16.11.0",
"new_logger_warning": "This log was generated by a subsystem logger that wasn't created before being used. Use tflog.NewSubsystem to create this logger before it is used.",
"tf_http_op_type": "request",
"tf_http_req_body": "{\"analytics_access_level\":\"enabled\",\"builds_access_level\":\"enabled\",\"container_registry_access_level\":\"disabled\",\"default_branch\":\"main\",\"description\":\"Test 6 (Terraform Managed)\",\"forking_access_level\":\"disabled\",\"initialize_with_readme\":true,\"issues_access_level\":\"disabled\",\"lfs_enabled\":false,\"merge_method\":\"merge\",\"name\":\"gitlab-support-test6\",\"namespace_id\":68563821,\"only_allow_merge_if_all_discussions_are_resolved\":true,\"only_allow_merge_if_pipeline_succeeds\":true,\"packages_enabled\":false,\"pages_access_level\":\"disabled\",\"path\":\"gitlab-support-test6\",\"public_builds\":false,\"releases_access_level\":\"enabled\",\"environments_access_level\":\"enabled\",\"feature_flags_access_level\":\"disabled\",\"infrastructure_access_level\":\"private\",\"monitor_access_level\":\"disabled\",\"remove_source_branch_after_merge\":true,\"printing_merge_request_link_enabled\":true,\"resolve_outdated_diff_discussions\":false,\"security_and_compliance_access_level\":\"enabled\",\"squash_option\":\"default_off\",\"visibility\":\"private\",\"issues_enabled\":false,\"merge_requests_enabled\":true,\"snippets_enabled\":false,\"wiki_enabled\":false}",
"tf_http_req_method": "POST",
"tf_http_req_uri": "/api/v4/projects",
"tf_http_req_version": "HTTP/1.1",
"tf_http_trans_id": "2ef35812-4ca3-e1b5-3cf0-02e6c1907b16",
"timestamp": "2024-05-21T13:22:45.631Z"
}
Additional Details
- GitLab Terraform Provider Version:
16.11
- GitLab Version:
17.1.0-pre
- Terraform Version:
1.5:v1.5.1