Commit bb196272 authored by Marcia Ramos's avatar Marcia Ramos

refactor group docs

- rewrite, restructure index
- move content from `gitlab-basics/create_group.md` to index
- move images to the correct location
parent 101ed9fc
# How to create a group in GitLab
Your projects in GitLab can be organized in 2 different ways:
under your own namespace for single projects, such as `your-name/project-1` or
under groups.
If you organize your projects under a group, it works like a folder. You can
manage your group members' permissions and access to the projects.
---
To create a group:
1. Expand the left sidebar by clicking the three bars at the upper left corner
and then navigate to **Groups**.
![Go to groups](img/create_new_group_sidebar.png)
1. Once in your groups dashboard, click on **New group**.
![Create new group information](img/create_new_group_info.png)
1. Fill out the needed information:
1. Set the "Group path" which will be the namespace under which your projects
will be hosted (path can contain only letters, digits, underscores, dashes
and dots; it cannot start with dashes or end in dot).
1. The "Group name" will populate with the path. Optionally, you can change
it. This is the name that will display in the group views.
1. Optionally, you can add a description so that others can briefly understand
what this group is about.
1. Optionally, choose and avatar for your project.
1. Choose the [visibility level](../public_access/public_access.md).
1. Finally, click the **Create group** button.
## Add a new project to a group
There are 2 different ways to add a new project to a group:
- Select a group and then click on the **New project** button.
![New project](img/create_new_project_from_group.png)
You can then continue on [creating a project](create-project.md).
- While you are [creating a project](create-project.md), select a group namespace
you've already created from the dropdown menu.
![Select group](img/select_group_dropdown.png)
This document was moved to [another location](../user/group/index.md#create-a-new-group).
# Groups
GitLab groups allow you to group projects into directories and give users access to several projects at once.
With GitLab Groups you can assemble related projects together
and grant members access to several projects at once.
When you create a new project in GitLab, the default namespace for the project is the personal namespace associated with your GitLab user.
In this document we will see how to create groups, put projects in groups and manage who can access the projects in a group.
Groups can also be nested is [subgroups](subgroups/index.md).
## Creating groups
Find the your groups by expanding the left menu and clicking **Groups**:
You can create a group by going to the 'Groups' tab of the GitLab dashboard and clicking the 'New group' button.
![GitLab Groups](img/groups.png)
![Click the 'New group' button in the 'Groups' tab](groups/new_group_button.png)
The Groups page displays all groups you are member, how many projects it holds,
how many members it has, the group visibility, and, if you have enough permissions,
a link to the group settings. By clicking the last button you can leave that group.
Next, enter the path and name (required) and the optional description and group avatar.
## Use cases
![Fill in the path for your new group](groups/new_group_form.png)
You can create groups for numerous reasons. To name a few:
When your group has been created you are presented with the group dashboard feed, which will be empty.
- Organize related projects under the same [namespace](#namespaces), add members to that
group and grant access to all their projects at once
- Create a group, include members of your team, and make it easier to
`@mention` all the team at once in issues and merge requests
- Create a group for your company members, and create [subgroups](subgroups/index.md)
for each individual team. Let's say you create a group called `company-team`, and among others,
you created subgroups in this group for each individual team `backend-team`,
`frontend-team`, and `production-team`:
1. When you start a new implementation from an issue, you add a comment:
_"`@company-team`, let's do it! `@backend-team` you're good to go!"_
1. When your backend team needs help from frontend, they add a comment:
_"`@frontend-team` could you help us here please?"_
1. When the frontend team completes their implementation, they comment:
_"`@backend`, it's done! Let's ship it `@production-team`"_
![Group dashboard](groups/group_dashboard.png)
## Namespaces
You can use the 'New project' button to add a project to the new group.
In GitLab, a namespace is a unique name to be used as a user name, a group name, or a subgroup name.
## Transferring an existing project into a group
- `http://gitlab.example.com/username`
- `http://gitlab.example.com/groupname`
- `http://gitlab.example.com/groupname/subgroup_name`
You can transfer an existing project into a group you have at least Master access in from the project settings page.
The option to transfer a project is only available if you are the Owner of the project.
First scroll down to the 'Dangerous settings' and click 'Show them to me'.
Now you can pick any of the groups you have at least Master access in as the new namespace for the group.
For example, consider a user called John:
![Transfer a project to a new namespace](groups/transfer_project.png)
1. John creates his account on GitLab.com with the username `jonh`;
his profile will be accessed under `https://gitlab.com/john`
1. John creates a group for his team with the groupname `john-team`;
his group and its projects will be accessed under `https://gitlab.com/john-team`
1. John creates a subgroup of `john-team` with the subgroup name `marketing`;
his subgroup and its projects will be accessed under `https://gitlab.com/john-team/marketing`
GitLab administrators can use the admin interface to move any project to any namespace if needed.
By doing so:
- Any team member mentions John with `@john`
- John mentions everyone from his team with `@john-team`
- John mentions only his marketing team with `@john-team/marketing`
## Create a new group
You can create a group in GitLab from:
1. The Groups page: expand the left menu, click **Groups**, and click the green button **New group**:
![new group from groups page](img/new_group_from_groups.png)
1. Elsewhere: expand the `plus` sign button on the top navbar and choose **New group**:
## Adding users to a group
![new group from elsewhere](img/new_group_from_other_pages.png)
One of the benefits of putting multiple projects in one group is that you can give a user to access to all projects in the group with one action.
Add the following information:
Suppose we have a group with two projects.
![new group info](img/create_new_group_info.png)
![Group with two projects](groups/group_with_two_projects.png)
1. Set the **Group path** which will be the **namespace** under which your projects
will be hosted (path can contain only letters, digits, underscores, dashes
and dots; it cannot start with dashes or end in dot).
1. The **Group name** will populate with the path. Optionally, you can change
it. This is the name that will display in the group views.
1. Optionally, you can add a description so that others can briefly understand
what this group is about.
1. Optionally, choose an avatar for your project.
1. Choose the [visibility level](../../public_access/public_access.md).
On the 'Group Members' page we can now add a new user Barry to the group.
## Add users to a group
![Add user Barry to the group](groups/add_member_to_group.png)
Add members to a group by navigating to the group's dashboard, and clicking **Members**:
Now because Barry is a 'Developer' member of the 'Open Source' group, he automatically gets 'Developer' access to all projects in the 'Open Source' group.
![add members to group](img/add_new_members.png)
![Barry has 'Developer' access to GitLab CI](groups/project_members_via_group.png)
Select the permission level and add the new member. You can also set the expiring
date for that user, from which they will no longer have access to your group.
If necessary, you can increase the access level of an individual user for a specific project, by adding them as a Member to the project.
One of the benefits of putting multiple projects in one group is that you can
give a user to access to all projects in the group with one action.
![Barry effectively has 'Master' access to GitLab CI now](groups/override_access_level.png)
Consider we have a group with two projects:
## Requesting access to a group
- On the **Group Members** page we can now add a new user to the group.
- Now because this user is a **Developer** member of the group, he automatically
gets **Developer** access to **all projects** within that group.
If necessary, you can increase the access level of an individual user for a specific project,
by adding them as a Member to the project.
## Request access to a group
As a group owner you can enable or disable non members to request access to
your group. Go to the group settings and click on **Allow users to request access**.
......@@ -61,28 +111,54 @@ As a user, you can request to be a member of a group. Go to the group you'd
like to be a member of, and click the **Request Access** button on the right
side of your screen.
![Request access button](groups/request_access_button.png)
![Request access button](img/request_access_button.png)
---
Group owners & masters will be notified of your request and will be able to approve or
decline it on the members page.
![Manage access requests](groups/access_requests_management.png)
![Manage access requests](img/access_requests_management.png)
---
If you change your mind before your request is approved, just click the
**Withdraw Access Request** button.
![Withdraw access request button](groups/withdraw_access_request_button.png)
![Withdraw access request button](img/withdraw_access_request_button.png)
## Add projects to a group
There are two different ways to add a new project to a group:
- Select a group and then click on the **New project** button.
![New project](img/create_new_project_from_group.png)
You can then continue on [creating a project](../../gitlab-basics/create-project.md).
- While you are creating a project, select a group namespace
you've already created from the dropdown menu.
![Select group](img/select_group_dropdown.png)
## Transfer an existing project into a group
## Managing group memberships via LDAP
You can transfer an existing project into a group you have at least Master access in from the project settings page.
The option to transfer a project is only available if you are the Owner of the project.
First scroll down to the 'Dangerous settings' and click 'Show them to me'.
Now you can pick any of the groups you have at least Master access in as the new namespace for the group.
![Transfer a project to a new namespace](img/transfer_project_to_other_group.png)
GitLab administrators can use the admin interface to move any project to any namespace if needed.
## Manage group memberships via LDAP
In GitLab Enterprise Edition it is possible to manage GitLab group memberships using LDAP groups.
See [the GitLab Enterprise Edition documentation](http://docs.gitlab.com/ee/integration/ldap.html) for more information.
## Allowing only admins to create groups
## Allow only admins to create groups
By default, any GitLab user can create new groups.
This ability can be disabled for individual users from the admin panel.
......@@ -96,28 +172,73 @@ gitlab_rails['gitlab_default_can_create_group'] = false
# line in /home/git/gitlab/config/gitlab.yml
```
## Lock project membership to members of this group
## Group settings
Once you have created a group, you can manage its settings by navigating to
the group's dashboard, and clicking **Settings**.
![group settings](img/group_settings.png)
In GitLab Enterprise Edition it is possible to lock membership in project to the
### General settings
Besides giving you the option to edit any settings you've previously
set when [creating the group](#create-a-new-group), you can also
access further configurations for your group.
#### Enforce 2FA to group members
Add a secury layer to your group by
[enforcing two-factor authentication (2FA)](../../security/two_factor_authentication.md#enforcing-2fa-for-all-users-in-a-group)
to all group members.
#### Member Lock (EES/EEP)
Available in [GitLab Enterprise Edition Starter](https://about.gitlab.com/gitlab-ee/),
with **Member Lock** it is possible to lock membership in project to the
level of members in group.
This allows group owner to lock down any new project membership to any of the
projects within the group allowing tighter control over project membership.
Member Lock lets a group owner to lock down any new project membership to all the
projects within the group, allowing tighter control over project membership.
To enable this feature, navigate to group settings page, select `Member lock`
and `Save group`.
For instance, if you want to lock the group for an [Audit Event](../../administration/audit_events.md),
you enable Member Lock to guarantee that any membership is added or changed
during the audition.
![Checkbox for membership lock](groups/membership_lock.png)
To enable this feature, navigate to group settings page, select **Member lock**
and **Save group**.
![Checkbox for membership lock](img/membership_lock.png)
This will disable the option for all users who previously had permissions to
operate project memberships so no new users can be added. Furthermore, any
request to add new user to project through API will not be possible.
## Prevent projects in this group from sharing a project with another group
#### Share with group lock (EES/EEP)
In [GitLab Enterprise Edition Starter](https://about.gitlab.com/gitlab-ee/)
it is possible to prevent projects in a group from [sharing
a project with another group](../../workflow/share_projects_with_other_groups.md).
This allows for tighter control over project access.
For example, consider you have two distinct teams (Group A and Group B)
working together in a project.
To inherit the group membership, you share the project between the
two groups A and B. **Share with group lock** prevents any project within
the group from being shared with another group. By soing so, you
guarantee only the right group members have access to that projects.
To enable this feature, navigate to the group settings page. Select
**Share with group lock** and **Save the group**.
![Checkbox for share with group lock](img/share_with_group_lock.png)
In GitLab Enterprise it is possible to prevent projects in a group from sharing
a project with another group. This allows for tighter control over project
access.
### Advanced settings
To enable this feature, navigate to the group settings page. Select `Share with
group lock` and save the group.
- **Projects**: view all projects within that group, add members to each project,
access each project's settings, and remove any project from the same screen.
- **Webhooks**: configure [webhooks](../project/integrations/webhooks.md)
and [push rules](../../push_rules/push_rules.md) to your group
- **Audit Events**: view [Audit Events](../../administration/audit_events.md)
for the group (GitLab admins only)
- **Pipelines quota**: keep track of the [pipeline quota](../admin_area/settings/continuous_integration.md) for the group
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment