Skip to content

Commit cf1cb8b

Browse files
author
jerem
committed
feat: implement ci_forward_deployment_enabled
See: https://docs.gitlab.com/ee/api/projects.html#create-project
1 parent 295685c commit cf1cb8b

File tree

5 files changed

+34
-9
lines changed

5 files changed

+34
-9
lines changed

docs/data-sources/projects.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ Read-Only:
8282
- **avatar_url** (String)
8383
- **build_coverage_regex** (String)
8484
- **ci_config_path** (String)
85+
- **ci_forward_deployment_enabled** (Boolean)
8586
- **container_registry_enabled** (Boolean)
8687
- **created_at** (String)
8788
- **creator_id** (Number)

docs/resources/project.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ resource "gitlab_project" "example-two" {
4848
- **archived** (Boolean) Whether the project is in read-only mode (archived). Repositories can be archived/unarchived by toggling this parameter.
4949
- **build_coverage_regex** (String) Test coverage parsing for the project.
5050
- **ci_config_path** (String) Custom Path to CI config file.
51+
- **ci_forward_deployment_enabled** (Boolean) When a new deployment job starts, skip older deployment jobs that are still pending.
5152
- **container_registry_enabled** (Boolean) Enable container registry for the project.
5253
- **default_branch** (String) The default branch for the project.
5354
- **description** (String) A description of the project.

internal/provider/data_source_gitlab_projects.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ func flattenProjects(projects []*gitlab.Project) (values []map[string]interface{
164164
"custom_attributes": project.CustomAttributes,
165165
"packages_enabled": project.PackagesEnabled,
166166
"build_coverage_regex": project.BuildCoverageRegex,
167+
"ci_forward_deployment_enabled": project.CIForwardDeploymentEnabled,
167168
}
168169
values = append(values, v)
169170
}
@@ -771,6 +772,11 @@ var _ = registerDataSource("gitlab_projects", func() *schema.Resource {
771772
Type: schema.TypeString,
772773
Computed: true,
773774
},
775+
"ci_forward_deployment_enabled": {
776+
Description: "When a new deployment job starts, skip older deployment jobs that are still pending.",
777+
Type: schema.TypeBool,
778+
Computed: true,
779+
},
774780
},
775781
},
776782
},

internal/provider/resource_gitlab_project.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,12 @@ var resourceGitLabProjectSchema = map[string]*schema.Schema{
363363
Type: schema.TypeBool,
364364
Optional: true,
365365
},
366+
"ci_forward_deployment_enabled": {
367+
Description: "When a new deployment job starts, skip older deployment jobs that are still pending.",
368+
Type: schema.TypeBool,
369+
Optional: true,
370+
Default: true,
371+
},
366372
}
367373

368374
var _ = registerResource("gitlab_project", func() *schema.Resource {
@@ -423,6 +429,7 @@ func resourceGitlabProjectSetToState(d *schema.ResourceData, project *gitlab.Pro
423429
d.Set("issues_template", project.IssuesTemplate)
424430
d.Set("merge_requests_template", project.MergeRequestsTemplate)
425431
d.Set("ci_config_path", project.CIConfigPath)
432+
d.Set("ci_forward_deployment_enabled", project.CIForwardDeploymentEnabled)
426433
return nil
427434
}
428435

@@ -453,6 +460,7 @@ func resourceGitlabProjectCreate(ctx context.Context, d *schema.ResourceData, me
453460
MirrorTriggerBuilds: gitlab.Bool(d.Get("mirror_trigger_builds").(bool)),
454461
BuildCoverageRegex: gitlab.String(d.Get("build_coverage_regex").(string)),
455462
CIConfigPath: gitlab.String(d.Get("ci_config_path").(string)),
463+
CIForwardDeploymentEnabled: gitlab.Bool(d.Get("ci_forward_deployment_enabled").(bool)),
456464
}
457465

458466
if v, ok := d.GetOk("path"); ok {
@@ -817,6 +825,10 @@ func resourceGitlabProjectUpdate(ctx context.Context, d *schema.ResourceData, me
817825
options.CIConfigPath = gitlab.String(d.Get("ci_config_path").(string))
818826
}
819827

828+
if d.HasChange("ci_forward_deployment_enabled") {
829+
options.CIForwardDeploymentEnabled = gitlab.Bool(d.Get("ci_forward_deployment_enabled").(bool))
830+
}
831+
820832
if *options != (gitlab.EditProjectOptions{}) {
821833
log.Printf("[DEBUG] update gitlab project %s", d.Id())
822834
_, _, err := client.Projects.EditProject(d.Id(), options, gitlab.WithContext(ctx))

internal/provider/resource_gitlab_project_test.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ func TestAccGitlabProject_basic(t *testing.T) {
5353
IssuesTemplate: "",
5454
MergeRequestsTemplate: "",
5555
CIConfigPath: ".gitlab-ci.yml@mynamespace/myproject",
56+
CIForwardDeploymentEnabled: true,
5657
}
5758

5859
defaultsMainBranch = defaults
@@ -98,6 +99,7 @@ func TestAccGitlabProject_basic(t *testing.T) {
9899
PackagesEnabled: false,
99100
PagesAccessLevel: gitlab.DisabledAccessControl,
100101
BuildCoverageRegex: "bar",
102+
CIForwardDeploymentEnabled: false,
101103
}, &received),
102104
),
103105
},
@@ -465,11 +467,12 @@ func TestAccGitlabProject_willError(t *testing.T) {
465467
MergeMethod: gitlab.FastForwardMerge,
466468
OnlyAllowMergeIfPipelineSucceeds: true,
467469
OnlyAllowMergeIfAllDiscussionsAreResolved: true,
468-
SquashOption: gitlab.SquashOptionDefaultOff,
469-
PackagesEnabled: true,
470-
PagesAccessLevel: gitlab.PublicAccessControl,
471-
BuildCoverageRegex: "foo",
472-
CIConfigPath: ".gitlab-ci.yml@mynamespace/myproject",
470+
SquashOption: gitlab.SquashOptionDefaultOff,
471+
PackagesEnabled: true,
472+
PagesAccessLevel: gitlab.PublicAccessControl,
473+
BuildCoverageRegex: "foo",
474+
CIConfigPath: ".gitlab-ci.yml@mynamespace/myproject",
475+
CIForwardDeploymentEnabled: true,
473476
}
474477
willError := defaults
475478
willError.TagList = []string{"notatag"}
@@ -569,10 +572,11 @@ func TestAccGitlabProject_transfer(t *testing.T) {
569572
MergeMethod: gitlab.NoFastForwardMerge,
570573
OnlyAllowMergeIfPipelineSucceeds: false,
571574
OnlyAllowMergeIfAllDiscussionsAreResolved: false,
572-
SquashOption: gitlab.SquashOptionDefaultOff,
573-
PackagesEnabled: true,
574-
PagesAccessLevel: gitlab.PrivateAccessControl,
575-
BuildCoverageRegex: "foo",
575+
SquashOption: gitlab.SquashOptionDefaultOff,
576+
PackagesEnabled: true,
577+
PagesAccessLevel: gitlab.PrivateAccessControl,
578+
BuildCoverageRegex: "foo",
579+
CIForwardDeploymentEnabled: true,
576580
}
577581

578582
resource.Test(t, resource.TestCase{
@@ -1200,6 +1204,7 @@ resource "gitlab_project" "foo" {
12001204
packages_enabled = false
12011205
pages_access_level = "disabled"
12021206
build_coverage_regex = "bar"
1207+
ci_forward_deployment_enabled = false
12031208
}
12041209
`, rInt, rInt)
12051210
}

0 commit comments

Comments
 (0)