Skip to content

Commit 56494b5

Browse files
authored
Merge pull request #88 from bilby91/add-approvals-before-merge
Add approvals_before_merge to Project
2 parents 028e509 + d2942a8 commit 56494b5

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

gitlab/resource_gitlab_project.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ func resourceGitlabProject() *schema.Resource {
6060
Optional: true,
6161
Default: true,
6262
},
63+
"approvals_before_merge": {
64+
Type: schema.TypeInt,
65+
Optional: true,
66+
Default: 0,
67+
},
6368
"wiki_enabled": {
6469
Type: schema.TypeBool,
6570
Optional: true,
@@ -142,6 +147,7 @@ func resourceGitlabProjectSetToState(d *schema.ResourceData, project *gitlab.Pro
142147
d.Set("default_branch", project.DefaultBranch)
143148
d.Set("issues_enabled", project.IssuesEnabled)
144149
d.Set("merge_requests_enabled", project.MergeRequestsEnabled)
150+
d.Set("approvals_before_merge", project.ApprovalsBeforeMerge)
145151
d.Set("wiki_enabled", project.WikiEnabled)
146152
d.Set("snippets_enabled", project.SnippetsEnabled)
147153
d.Set("visibility_level", string(project.Visibility))
@@ -162,6 +168,7 @@ func resourceGitlabProjectCreate(d *schema.ResourceData, meta interface{}) error
162168
Name: gitlab.String(d.Get("name").(string)),
163169
IssuesEnabled: gitlab.Bool(d.Get("issues_enabled").(bool)),
164170
MergeRequestsEnabled: gitlab.Bool(d.Get("merge_requests_enabled").(bool)),
171+
ApprovalsBeforeMerge: gitlab.Int(d.Get("approvals_before_merge").(int)),
165172
WikiEnabled: gitlab.Bool(d.Get("wiki_enabled").(bool)),
166173
SnippetsEnabled: gitlab.Bool(d.Get("snippets_enabled").(bool)),
167174
Visibility: stringToVisibilityLevel(d.Get("visibility_level").(string)),
@@ -269,6 +276,10 @@ func resourceGitlabProjectUpdate(d *schema.ResourceData, meta interface{}) error
269276
options.MergeRequestsEnabled = gitlab.Bool(d.Get("merge_requests_enabled").(bool))
270277
}
271278

279+
if d.HasChange("approvals_before_merge") {
280+
options.ApprovalsBeforeMerge = gitlab.Int(d.Get("approvals_before_merge").(int))
281+
}
282+
272283
if d.HasChange("wiki_enabled") {
273284
options.WikiEnabled = gitlab.Bool(d.Get("wiki_enabled").(bool))
274285
}

gitlab/resource_gitlab_project_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ func TestAccGitlabProject_basic(t *testing.T) {
3030
Description: "Terraform acceptance tests",
3131
IssuesEnabled: true,
3232
MergeRequestsEnabled: true,
33+
ApprovalsBeforeMerge: 0,
3334
WikiEnabled: true,
3435
SnippetsEnabled: true,
3536
Visibility: gitlab.PublicVisibility,
@@ -48,6 +49,7 @@ func TestAccGitlabProject_basic(t *testing.T) {
4849
Name: fmt.Sprintf("foo-%d", rInt),
4950
Path: fmt.Sprintf("foo.%d", rInt),
5051
Description: "Terraform acceptance tests!",
52+
ApprovalsBeforeMerge: 0,
5153
Visibility: gitlab.PublicVisibility,
5254
MergeMethod: gitlab.FastForwardMerge,
5355
OnlyAllowMergeIfPipelineSucceeds: true,
@@ -66,6 +68,7 @@ func TestAccGitlabProject_basic(t *testing.T) {
6668
Description: "Terraform acceptance tests",
6769
IssuesEnabled: true,
6870
MergeRequestsEnabled: true,
71+
ApprovalsBeforeMerge: 0,
6972
WikiEnabled: true,
7073
SnippetsEnabled: true,
7174
Visibility: gitlab.PublicVisibility,
@@ -223,6 +226,7 @@ type testAccGitlabProjectExpectedAttributes struct {
223226
DefaultBranch string
224227
IssuesEnabled bool
225228
MergeRequestsEnabled bool
229+
ApprovalsBeforeMerge int
226230
WikiEnabled bool
227231
SnippetsEnabled bool
228232
Visibility gitlab.VisibilityValue
@@ -260,6 +264,10 @@ func testAccCheckGitlabProjectAttributes(project *gitlab.Project, want *testAccG
260264
return fmt.Errorf("got merge_requests_enabled %t; want %t", project.MergeRequestsEnabled, want.MergeRequestsEnabled)
261265
}
262266

267+
if project.ApprovalsBeforeMerge != want.ApprovalsBeforeMerge {
268+
return fmt.Errorf("got approvals_before_merge %d; want %d", project.ApprovalsBeforeMerge, want.ApprovalsBeforeMerge)
269+
}
270+
263271
if project.WikiEnabled != want.WikiEnabled {
264272
return fmt.Errorf("got wiki_enabled %t; want %t", project.WikiEnabled, want.WikiEnabled)
265273
}
@@ -376,6 +384,7 @@ resource "gitlab_project" "foo" {
376384
377385
issues_enabled = false
378386
merge_requests_enabled = false
387+
approvals_before_merge = 0
379388
wiki_enabled = false
380389
snippets_enabled = false
381390
}

website/docs/r/project.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ The following arguments are supported:
4242

4343
* `merge_requests_enabled` - (Optional) Enable merge requests for the project.
4444

45+
* `approvals_before_merge` - (Optional) Number of merge request approvals required for merging. Default is 0.
46+
4547
* `wiki_enabled` - (Optional) Enable wiki for the project.
4648

4749
* `snippets_enabled` - (Optional) Enable snippets for the project.

0 commit comments

Comments
 (0)