I want to implement deploying repositories and groups on my self-managed Gitlab by a Terraform provider gitlabhq/gitlab
. But I have this error:
╷
│ Error: error while waiting for branch to reach 'protected' status, json: cannot unmarshal array into Go value of type gitlab.Branch
│
│ with gitlab_project.peters_repo,
│ on main.tf line 11, in resource "gitlab_project" "peters_repo":
│ 11: resource "gitlab_project" "peters_repo" {
│
╵
My variables.tf
:
variable "gitlab_token" {
default = "*my token*"
}
variable "gitlab_url" {
default = "*my gitlab url*"
}
variable "default_branch" {
default = "master"
}
main.tf
:
resource "gitlab_group" "example" {
name = "Example Group"
path = "example_group"
description = "An example group"
}
resource "gitlab_project" "peters_repo" {
name = "test-repo"
description = "This is a description"
namespace_id = gitlab_group.example.id
default_branch = var.default_branch
provisioner "local-exec" {
command = "curl --request DELETE '${var.gitlab_url}/api/v4/projects/${gitlab_project.peters_repo.id}/protected_branches/${var.default_branch}' --header 'PRIVATE-TOKEN: ${var.gitlab_token}'"
}
}
resource "gitlab_branch_protection" "example_protection" {
project = gitlab_project.peters_repo.id
branch = var.default_branch
push_access_level = "maintainer"
merge_access_level = "maintainer"
}
providers.tf
:
terraform {
required_version = "~> 1.4"
required_providers {
gitlab = {
source = "gitlabhq/gitlab"
version = "15.10.0"
}
}
}
provider "gitlab" {
token = var.gitlab_token
base_url = "var.gitlab_url"
}
I made a local provisioner as mentioned in the official documentation, but it still doesn't work.