Group Args
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,
},
});
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=gitlab.GroupPushRulesArgs(
author_email_regex="@example\\.com$",
commit_committer_check=True,
member_check=True,
prevent_secrets=True,
))
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,
},
});
});
package main
import (
"github.com/pulumi/pulumi-gitlab/sdk/v7/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
}
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 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());
}
}
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
Import
$ 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
Constructors
Properties
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.
See https://docs.gitlab.com/ee/api/groups.html#options-for-default*branch*protection. Valid values are: 0
, 1
, 2
, 3
, 4
.
The group's description.
Disable email notifications.
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.
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
, maintainer
, developer
Push rules for the group.
Allow users to request member access.
Require all users in this group to setup Two-factor authentication.
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
.