Group
The gitlab.Group
resource allows to manage the lifecycle of a group.
On GitLab SaaS, you must use the GitLab UI to create groups without a parent group. You cannot use this provider nor the API to do this. Upstream API: GitLab REST API docs
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as gitlab from "@pulumi/gitlab";
const example = new gitlab.Group("example", {
name: "example",
path: "example",
description: "An example group",
});
// Create a project in the example group
const exampleProject = new gitlab.Project("example", {
name: "example",
description: "An example project",
namespaceId: example.id,
});
// Group with custom push rules
const example_two = new gitlab.Group("example-two", {
name: "example-two",
path: "example-two",
description: "An example group with push rules",
pushRules: {
authorEmailRegex: "@example\\.com$",
commitCommitterCheck: true,
memberCheck: true,
preventSecrets: true,
},
});
// Group with custom default branch protection defaults
const example_three = new gitlab.Group("example-three", {
name: "example-three",
path: "example-three",
description: "An example group with default branch protection defaults",
defaultBranchProtectionDefaults: {
allowedToPushes: ["developer"],
allowForcePush: true,
allowedToMerges: [
"developer",
"maintainer",
],
developerCanInitialPush: true,
},
});
// Group with custom default branch protection defaults
const example_four = new gitlab.Group("example-four", {
name: "example-four",
path: "example-four",
description: "An example group with default branch protection defaults",
defaultBranchProtectionDefaults: {
allowedToPushes: ["no one"],
allowForcePush: true,
allowedToMerges: ["no one"],
developerCanInitialPush: true,
},
});
// Group with a default branch name specified
const example_five = new gitlab.Group("example-five", {
name: "example",
path: "example",
defaultBranch: "develop",
description: "An example group with a default branch name",
});
import pulumi
import pulumi_gitlab as gitlab
example = gitlab.Group("example",
name="example",
path="example",
description="An example group")
# Create a project in the example group
example_project = gitlab.Project("example",
name="example",
description="An example project",
namespace_id=example.id)
# Group with custom push rules
example_two = gitlab.Group("example-two",
name="example-two",
path="example-two",
description="An example group with push rules",
push_rules={
"author_email_regex": "@example\\.com$",
"commit_committer_check": True,
"member_check": True,
"prevent_secrets": True,
})
# Group with custom default branch protection defaults
example_three = gitlab.Group("example-three",
name="example-three",
path="example-three",
description="An example group with default branch protection defaults",
default_branch_protection_defaults={
"allowed_to_pushes": ["developer"],
"allow_force_push": True,
"allowed_to_merges": [
"developer",
"maintainer",
],
"developer_can_initial_push": True,
})
# Group with custom default branch protection defaults
example_four = gitlab.Group("example-four",
name="example-four",
path="example-four",
description="An example group with default branch protection defaults",
default_branch_protection_defaults={
"allowed_to_pushes": ["no one"],
"allow_force_push": True,
"allowed_to_merges": ["no one"],
"developer_can_initial_push": True,
})
# Group with a default branch name specified
example_five = gitlab.Group("example-five",
name="example",
path="example",
default_branch="develop",
description="An example group with a default branch name")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using GitLab = Pulumi.GitLab;
return await Deployment.RunAsync(() =>
{
var example = new GitLab.Group("example", new()
{
Name = "example",
Path = "example",
Description = "An example group",
});
// Create a project in the example group
var exampleProject = new GitLab.Project("example", new()
{
Name = "example",
Description = "An example project",
NamespaceId = example.Id,
});
// Group with custom push rules
var example_two = new GitLab.Group("example-two", new()
{
Name = "example-two",
Path = "example-two",
Description = "An example group with push rules",
PushRules = new GitLab.Inputs.GroupPushRulesArgs
{
AuthorEmailRegex = "@example\\.com$",
CommitCommitterCheck = true,
MemberCheck = true,
PreventSecrets = true,
},
});
// Group with custom default branch protection defaults
var example_three = new GitLab.Group("example-three", new()
{
Name = "example-three",
Path = "example-three",
Description = "An example group with default branch protection defaults",
DefaultBranchProtectionDefaults = new GitLab.Inputs.GroupDefaultBranchProtectionDefaultsArgs
{
AllowedToPushes = new[]
{
"developer",
},
AllowForcePush = true,
AllowedToMerges = new[]
{
"developer",
"maintainer",
},
DeveloperCanInitialPush = true,
},
});
// Group with custom default branch protection defaults
var example_four = new GitLab.Group("example-four", new()
{
Name = "example-four",
Path = "example-four",
Description = "An example group with default branch protection defaults",
DefaultBranchProtectionDefaults = new GitLab.Inputs.GroupDefaultBranchProtectionDefaultsArgs
{
AllowedToPushes = new[]
{
"no one",
},
AllowForcePush = true,
AllowedToMerges = new[]
{
"no one",
},
DeveloperCanInitialPush = true,
},
});
// Group with a default branch name specified
var example_five = new GitLab.Group("example-five", new()
{
Name = "example",
Path = "example",
DefaultBranch = "develop",
Description = "An example group with a default branch name",
});
});
package main
import (
"github.com/pulumi/pulumi-gitlab/sdk/v8/go/gitlab"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := gitlab.NewGroup(ctx, "example", &gitlab.GroupArgs{
Name: pulumi.String("example"),
Path: pulumi.String("example"),
Description: pulumi.String("An example group"),
})
if err != nil {
return err
}
// Create a project in the example group
_, err = gitlab.NewProject(ctx, "example", &gitlab.ProjectArgs{
Name: pulumi.String("example"),
Description: pulumi.String("An example project"),
NamespaceId: example.ID(),
})
if err != nil {
return err
}
// Group with custom push rules
_, err = gitlab.NewGroup(ctx, "example-two", &gitlab.GroupArgs{
Name: pulumi.String("example-two"),
Path: pulumi.String("example-two"),
Description: pulumi.String("An example group with push rules"),
PushRules: &gitlab.GroupPushRulesArgs{
AuthorEmailRegex: pulumi.String("@example\\.com$"),
CommitCommitterCheck: pulumi.Bool(true),
MemberCheck: pulumi.Bool(true),
PreventSecrets: pulumi.Bool(true),
},
})
if err != nil {
return err
}
// Group with custom default branch protection defaults
_, err = gitlab.NewGroup(ctx, "example-three", &gitlab.GroupArgs{
Name: pulumi.String("example-three"),
Path: pulumi.String("example-three"),
Description: pulumi.String("An example group with default branch protection defaults"),
DefaultBranchProtectionDefaults: &gitlab.GroupDefaultBranchProtectionDefaultsArgs{
AllowedToPushes: pulumi.StringArray{
pulumi.String("developer"),
},
AllowForcePush: pulumi.Bool(true),
AllowedToMerges: pulumi.StringArray{
pulumi.String("developer"),
pulumi.String("maintainer"),
},
DeveloperCanInitialPush: pulumi.Bool(true),
},
})
if err != nil {
return err
}
// Group with custom default branch protection defaults
_, err = gitlab.NewGroup(ctx, "example-four", &gitlab.GroupArgs{
Name: pulumi.String("example-four"),
Path: pulumi.String("example-four"),
Description: pulumi.String("An example group with default branch protection defaults"),
DefaultBranchProtectionDefaults: &gitlab.GroupDefaultBranchProtectionDefaultsArgs{
AllowedToPushes: pulumi.StringArray{
pulumi.String("no one"),
},
AllowForcePush: pulumi.Bool(true),
AllowedToMerges: pulumi.StringArray{
pulumi.String("no one"),
},
DeveloperCanInitialPush: pulumi.Bool(true),
},
})
if err != nil {
return err
}
// Group with a default branch name specified
_, err = gitlab.NewGroup(ctx, "example-five", &gitlab.GroupArgs{
Name: pulumi.String("example"),
Path: pulumi.String("example"),
DefaultBranch: pulumi.String("develop"),
Description: pulumi.String("An example group with a default branch name"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gitlab.Group;
import com.pulumi.gitlab.GroupArgs;
import com.pulumi.gitlab.Project;
import com.pulumi.gitlab.ProjectArgs;
import com.pulumi.gitlab.inputs.GroupPushRulesArgs;
import com.pulumi.gitlab.inputs.GroupDefaultBranchProtectionDefaultsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new Group("example", GroupArgs.builder()
.name("example")
.path("example")
.description("An example group")
.build());
// Create a project in the example group
var exampleProject = new Project("exampleProject", ProjectArgs.builder()
.name("example")
.description("An example project")
.namespaceId(example.id())
.build());
// Group with custom push rules
var example_two = new Group("example-two", GroupArgs.builder()
.name("example-two")
.path("example-two")
.description("An example group with push rules")
.pushRules(GroupPushRulesArgs.builder()
.authorEmailRegex("@example\\.com$")
.commitCommitterCheck(true)
.memberCheck(true)
.preventSecrets(true)
.build())
.build());
// Group with custom default branch protection defaults
var example_three = new Group("example-three", GroupArgs.builder()
.name("example-three")
.path("example-three")
.description("An example group with default branch protection defaults")
.defaultBranchProtectionDefaults(GroupDefaultBranchProtectionDefaultsArgs.builder()
.allowedToPushes("developer")
.allowForcePush(true)
.allowedToMerges(
"developer",
"maintainer")
.developerCanInitialPush(true)
.build())
.build());
// Group with custom default branch protection defaults
var example_four = new Group("example-four", GroupArgs.builder()
.name("example-four")
.path("example-four")
.description("An example group with default branch protection defaults")
.defaultBranchProtectionDefaults(GroupDefaultBranchProtectionDefaultsArgs.builder()
.allowedToPushes("no one")
.allowForcePush(true)
.allowedToMerges("no one")
.developerCanInitialPush(true)
.build())
.build());
// Group with a default branch name specified
var example_five = new Group("example-five", GroupArgs.builder()
.name("example")
.path("example")
.defaultBranch("develop")
.description("An example group with a default branch name")
.build());
}
}
resources:
example:
type: gitlab:Group
properties:
name: example
path: example
description: An example group
# Create a project in the example group
exampleProject:
type: gitlab:Project
name: example
properties:
name: example
description: An example project
namespaceId: ${example.id}
# Group with custom push rules
example-two:
type: gitlab:Group
properties:
name: example-two
path: example-two
description: An example group with push rules
pushRules:
authorEmailRegex: '@example\.com$'
commitCommitterCheck: true
memberCheck: true
preventSecrets: true
# Group with custom default branch protection defaults
example-three:
type: gitlab:Group
properties:
name: example-three
path: example-three
description: An example group with default branch protection defaults
defaultBranchProtectionDefaults:
allowedToPushes:
- developer
allowForcePush: true
allowedToMerges:
- developer
- maintainer
developerCanInitialPush: true
# Group with custom default branch protection defaults
example-four:
type: gitlab:Group
properties:
name: example-four
path: example-four
description: An example group with default branch protection defaults
defaultBranchProtectionDefaults:
allowedToPushes:
- no one
allowForcePush: true
allowedToMerges:
- no one
developerCanInitialPush: true
# Group with a default branch name specified
example-five:
type: gitlab:Group
properties:
name: example
path: example
defaultBranch: develop
description: An example group with a default branch name
Import
Starting in Terraform v1.5.0 you can use an import block to import gitlab_group
. For example: terraform import { to = gitlab_group.example id = "see CLI command below for ID" } Import using the CLI is supported using the following syntax:
$ pulumi import gitlab:index/group:Group You can import a group state using `<resource> <id>`. The
id
can be whatever the details_of_a_group api takes for its :id
value, so for example:
$ pulumi import gitlab:index/group:Group example example
Properties
A list of email address domains to allow group access. Will be concatenated together into a comma separated string.
Default to Auto DevOps pipeline for all projects within this group.
The hash of the avatar image. Use filesha256("path/to/avatar.png")
whenever possible. Note: this is used to trigger an update of the avatar. If it's not given, but an avatar is given, the avatar will be updated each time.
Initial default branch name.
See https://docs.gitlab.com/api/groups/#options-for-default*branch*protection. Valid values are: 0
, 1
, 2
, 3
, 4
.
The default branch protection defaults
The group's description.
Enable email notifications.
Can be set by administrators only. Additional CI/CD minutes for this group.
A list of IP addresses or subnet masks to restrict group access. Will be concatenated together into a comma separated string. Only allowed on top level groups.
Enable/disable Large File Storage (LFS) for the projects in this group.
Users cannot be added to projects in this group.
Disable the capability of a group from getting mentioned.
Whether the group should be permanently removed during a delete
operation. This only works with subgroups. Must be configured via an apply
before the destroy
is run.
Defaults to false. When enabled, users can not fork projects from this group to external namespaces.
Determine if developers can create projects in the group. Valid values are: noone
, owner
, maintainer
, developer
Push rules for the group.
Allow users to request member access.
Require all users in this group to setup Two-factor authentication.
The group level registration token to use during runner setup.
Can be set by administrators only. Maximum number of monthly CI/CD minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or 0.
Enable or disable shared runners for a group’s subgroups and projects. Valid values are: enabled
, disabled_and_overridable
, disabled_and_unoverridable
, disabled_with_override
.
Prevent sharing a project with another group within this group.
Allowed to create subgroups. Valid values are: owner
, maintainer
.
Defaults to 48. Time before Two-factor authentication is enforced (in hours).
The group's visibility. Can be private
, internal
, or public
. Valid values are: private
, internal
, public
.
The group's wiki access level. Only available on Premium and Ultimate plans. Valid values are disabled
, private
, enabled
.