提交 44ad694e 编写于 作者: Lab机器人's avatar Lab机器人

groups & subgroups

上级 e7271546
......@@ -3,4 +3,5 @@
* [首页](README.md)
* [概览](docs/002.md)
* [组织](docs/033.md)
* [子组织](docs/046.md)
......@@ -174,6 +174,25 @@
<ul class="articles">
<li class="chapter " data-level="1.3.1" data-path="046.html">
<a href="046.html">
子组织
</a>
</li>
</ul>
</li>
......@@ -598,7 +617,7 @@
</table>
<p><a href="#&#x6982;&#x89C8;">&#x8FD4;&#x56DE;&#x6982;&#x89C8;</a> </p>
<footer class="page-footer"><span class="copyright">Copyright &#xA9; CODECHINA 2020 all right reserved&#xFF0C;powered by Gitbook</span><span class="footer-modification">&#x8BE5;&#x6587;&#x4EF6;&#x4FEE;&#x8BA2;&#x65F6;&#x95F4;&#xFF1A;
2020-08-29 23:01:51
2020-08-29 23:11:20
</span></footer>
<script>console.log("plugin-popup....");document.onclick = function(e){ e.target.tagName === "IMG" && window.open(e.target.src,e.target.src)}</script><style>img{cursor:pointer}</style>
......@@ -642,7 +661,7 @@
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"概览","level":"1.2","depth":1,"next":{"title":"组织","level":"1.3","depth":1,"path":"docs/033.md","ref":"docs/033.md","articles":[]},"previous":{"title":"首页","level":"1.1","depth":1,"path":"README.md","ref":"README.md","articles":[]},"dir":"ltr"},"config":{"plugins":["favicon","back-to-top-button","popup","theme-fexa","-sharing","sharing-plus","tbfed-pagefooter","livereload"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"Copyright &copy CODECHINA 2020","modify_label":"该文件修订时间:","modify_format":"YYYY-MM-DD HH:mm:ss"},"livereload":{},"search":{},"sharing-plus":{"qq":false,"all":["facebook","google","twitter","instapaper","linkedin","pocket","stumbleupon"],"douban":false,"facebook":true,"weibo":false,"instapaper":false,"whatsapp":false,"hatenaBookmark":false,"twitter":true,"messenger":false,"line":false,"vk":false,"pocket":true,"google":false,"viber":false,"stumbleupon":false,"qzone":false,"linkedin":false},"popup":{},"theme-fexa":{"search-placeholder":"输入关键字搜索","logo":"/docs/img/logo.png","favicon":"","url":"/"},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"favicon":{"shortcut":"/docs/img/logo-s.png","bookmark":"/docs/img/logo-s.png","appleTouch":"/docs/img/logo-s.png","appleTouchMore":{"120x120":"","180x180":"/docs/img/logo-s.png"}},"back-to-top-button":{},"sharing":{"douban":true,"facebook":false,"google":false,"qq":true,"qzone":true,"twitter":false,"weibo":true,"all":["douban","facebook","google","instapaper","linkedin","twitter","weibo","messenger","qq","qzone","viber","whatsapp"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"Miykael","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"themeFexa":{"nav":[{"url":"/","target":"_blank","name":"开始使用"}]}},"title":"CODEChina帮助文档","language":"zh-hans","links":{"sidebar":{}},"gitbook":"*","description":"CODEChina开源社区用户使用及帮助文档"},"file":{"path":"docs/002.md","mtime":"2020-08-29T15:01:51.536Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2020-08-29T15:05:35.145Z"},"basePath":"..","book":{"language":""}});
gitbook.page.hasChanged({"page":{"title":"概览","level":"1.2","depth":1,"next":{"title":"组织","level":"1.3","depth":1,"path":"docs/033.md","ref":"docs/033.md","articles":[{"title":"子组织","level":"1.3.1","depth":2,"path":"docs/046.md","ref":"docs/046.md","articles":[]}]},"previous":{"title":"首页","level":"1.1","depth":1,"path":"README.md","ref":"README.md","articles":[]},"dir":"ltr"},"config":{"plugins":["favicon","back-to-top-button","popup","theme-fexa","-sharing","sharing-plus","tbfed-pagefooter","livereload"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"Copyright &copy CODECHINA 2020","modify_label":"该文件修订时间:","modify_format":"YYYY-MM-DD HH:mm:ss"},"livereload":{},"search":{},"sharing-plus":{"qq":false,"all":["facebook","google","twitter","instapaper","linkedin","pocket","stumbleupon"],"douban":false,"facebook":true,"weibo":false,"instapaper":false,"whatsapp":false,"hatenaBookmark":false,"twitter":true,"messenger":false,"line":false,"vk":false,"pocket":true,"google":false,"viber":false,"stumbleupon":false,"qzone":false,"linkedin":false},"popup":{},"theme-fexa":{"search-placeholder":"输入关键字搜索","logo":"/docs/img/logo.png","favicon":"","url":"/"},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"favicon":{"shortcut":"/docs/img/logo-s.png","bookmark":"/docs/img/logo-s.png","appleTouch":"/docs/img/logo-s.png","appleTouchMore":{"120x120":"","180x180":"/docs/img/logo-s.png"}},"back-to-top-button":{},"sharing":{"douban":true,"facebook":false,"google":false,"qq":true,"qzone":true,"twitter":false,"weibo":true,"all":["douban","facebook","google","instapaper","linkedin","twitter","weibo","messenger","qq","qzone","viber","whatsapp"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"Miykael","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"themeFexa":{"nav":[{"url":"/","target":"_blank","name":"开始使用"}]}},"title":"CODEChina帮助文档","language":"zh-hans","links":{"sidebar":{}},"gitbook":"*","description":"CODEChina开源社区用户使用及帮助文档"},"file":{"path":"docs/002.md","mtime":"2020-08-29T15:11:20.165Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2020-08-29T15:05:35.145Z"},"basePath":"..","book":{"language":""}});
});
</script>
</div>
......
# Contribution Analytics
> 原文:[https://docs.gitlab.com/ee/user/group/contribution_analytics/](https://docs.gitlab.com/ee/user/group/contribution_analytics/)
* [Overview](#overview)
* [Use cases](#use-cases)
* [Using Contribution Analytics](#using-contribution-analytics)
* [Changing the period time](#changing-the-period-time)
* [Sorting by different factors](#sorting-by-different-factors)
# Contribution Analytics[](#contribution-analytics-starter "Permalink")
版本历史
*[GitLab Starter](https://about.gitlab.com/pricing/) 8.3 中引入.
* 在 GitLab 12.2 中针对子组进行了[介绍](https://gitlab.com/gitlab-org/gitlab/-/issues/3090) .
## Overview[](#overview "Permalink")
借助 Contribution Analytics,您可以大致了解小组中的以下活动:
* Issues
* 合并要求
* 推送事件
要查看贡献分析,请转至小组的" **分析">"贡献分析"**页面.
## Use cases[](#use-cases "Permalink")
* 分析您的团队在一段时间内的贡献,并为杰出贡献者提供奖金.
* 与可以从其他支持中受益的小组成员一起确定改进的机会.
## Using Contribution Analytics[](#using-contribution-analytics "Permalink")
以下是三个主要的条形图,它们说明了每个组成员的贡献数量:
* 推送事件
* 合并要求
* 已解决的问题
将鼠标悬停在每个栏上可以显示特定组成员的事件数.
[![Contribution analytics bar graphs](img/52f1314a06269a0dc317f758c8e8cdab.png)](img/group_stats_graph.png)
## Changing the period time[](#changing-the-period-time "Permalink")
您可以从以下三个期间中选择:
* 上周(默认)
* 上个月
* 最近三个月
从日历下拉列表中选择所需的时间段.
[![Contribution analytics choose period](img/0bc8de7b7d20af897fb8b38bb48663e8.png)](img/group_stats_cal.png)
## Sorting by different factors[](#sorting-by-different-factors "Permalink")
每个小组成员的贡献也以表格形式显示. 单击列标题以按该列对表进行排序:
* 成员名字
* 推送事件数
* 未解决的问题数
* 已解决的问题数
* 已打开的 MR 数
* 合并的 MR 数
* 总捐款数
[![Contribution analytics contributions table](img/0a64287e1feef55413a5a906d02ec8ea.png)](img/group_stats_table.png)
\ No newline at end of file
# Custom group-level project templates
> 原文:[https://docs.gitlab.com/ee/user/group/custom_project_templates.html](https://docs.gitlab.com/ee/user/group/custom_project_templates.html)
# Custom group-level project templates[](#custom-group-level-project-templates-premium "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/6861) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.6.
创建新[项目时](../project/index.html) ,基于自定义项目模板创建它是一个方便的选择.
用户可以在组的**"设置">"常规">"自定义项目模板"**下配置一个用作模板源的 GitLab 组.
**注意:** GitLab 管理员可以[为整个 GitLab 实例设置项目模板](../admin_area/custom_project_templates.html) .
在本部分中,您可以配置所有自定义项目模板的来源组. 如果用户有权访问组命名空间下的每个项目,则它们将对用户可用. 例如,组中的每个公共项目将对每个登录用户可用.
但是,仅当用户是项目成员时,私人项目才可用.
**注意:**只能将直接子组设置为模板源. 不能使用所选模板源的嵌套子组项目.
复制到每个新项目的存储库和数据库信息与使用[GitLab 的项目导入/导出导出](../project/settings/import_export.html)的数据相同.
\ No newline at end of file
# Epics
> 原文:[https://docs.gitlab.com/ee/user/group/epics/](https://docs.gitlab.com/ee/user/group/epics/)
* [Use cases](#use-cases)
* [Manage epics](#manage-epics)
* [Relationships between epics and issues](#relationships-between-epics-and-issues)
* [Issue health status in Epic tree](#issue-health-status-in-epic-tree-ultimate)
* [Disable Issue health status in Epic tree](#disable-issue-health-status-in-epic-tree)
* [Multi-level child epics](#multi-level-child-epics-ultimate)
* [Start date and due date](#start-date-and-due-date)
* [From milestones](#from-milestones)
* [Inherited](#inherited)
* [Roadmap in epics](#roadmap-in-epics)
* [Permissions](#permissions)
* [Thread](#thread)
* [Comment or start a thread](#comment-or-start-a-thread)
* [Activity sort order](#activity-sort-order)
* [Award emoji](#award-emoji)
* [Notifications](#notifications)
# Epics[](#epics-premium "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 10.2 中引入.
* 单级史诗在 12.8 [中移至](https://gitlab.com/gitlab-org/gitlab/-/issues/37081) [GitLab Premium](https://about.gitlab.com/pricing/) .
Epics 通过跟踪跨项目和里程碑共享主题的问题组,使您可以更有效,更轻松地管理项目组合.
[![epics list view](img/bad7cd1d32a4bbf53fc1d27dcb3dd211.png)](img/epics_list_view_v12.5.png)
## Use cases[](#use-cases "Permalink")
* 假设您的团队正在研究一项大型功能,其中涉及在一个[小组](../index.html)内不同项目中创建的不同问题的多个讨论. 借助 Epics,您可以跟踪所有有助于该单一功能的相关活动.
* 跟踪何时针对该组问题开始工作,以及何时结束目标工作.
* 深入讨论和协作功能思想和范围.
## Manage epics[](#manage-epics "Permalink")
要了解您可以使用史诗功能,请参阅[管理史诗](manage_epics.html) . 可能的动作包括:
* [Create an epic](manage_epics.html#create-an-epic)
* [Bulk-edit epics](../bulk_editing/index.html#bulk-edit-epics)
* [Delete an epic](manage_epics.html#delete-an-epic)
* [Close an epic](manage_epics.html#close-an-epic)
* [Reopen a closed epic](manage_epics.html#reopen-a-closed-epic)
* [Go to an epic from an issue](manage_epics.html#go-to-an-epic-from-an-issue)
* [Search for an epic from epics list page](manage_epics.html#search-for-an-epic-from-epics-list-page)
* [Make an epic confidential](manage_epics.html#make-an-epic-confidential)
* [Manage issues assigned to an epic](manage_epics.html#manage-issues-assigned-to-an-epic)
* [Manage multi-level child epics](manage_epics.html#manage-multi-level-child-epics-ultimate)
## Relationships between epics and issues[](#relationships-between-epics-and-issues "Permalink")
史诗与问题之间的可能关系是:
* 史诗是一个或多个问题的父代.
* 史诗是一个或多个子史诗的父代. 有关详细信息,请参见[多级子史诗](#multi-level-child-epics-ultimate) .
图 TD Parent_epic-> Issue1 Parent_epic-> Child_epic Child_epic-> Issue2
请参阅[管理分配给史诗](manage_epics.html#manage-issues-assigned-to-an-epic)的问题以获取将事件添加到史诗,重新排序问题,在史诗之间移动问题或将问题升级到史诗的步骤.
## Issue health status in Epic tree[](#issue-health-status-in-epic-tree-ultimate "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/199184) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.10.
您可以通过在问题上设置红色,琥珀色或绿色的[健康状态](../../project/issues/index.html#health-status-ultimate)来报告并快速响应单个问题和史诗的[健康](../../project/issues/index.html#health-status-ultimate) ,该状态将显示在史诗树上.
### Disable Issue health status in Epic tree[](#disable-issue-health-status-in-epic-tree "Permalink")
此功能带有默认情况下启用的功能标志. 有关禁用它的步骤,请参阅[禁用问题运行状况](../../project/issues/index.html#disable-issue-health-status) .
## Multi-level child epics[](#multi-level-child-epics-ultimate "Permalink")
在 GitLab Ultimate 11.7 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/8333) .
属于父史诗组的一个组或子组的任何史诗都可以添加. 新的儿童史诗出现在" **史诗和问题"**选项卡中史诗列表的顶部.
当您添加已链接到父级史诗的史诗时,到其当前父级的链接将被删除.
An epic can have multiple child epics up to the maximum depth of five.
请参阅[管理多级子级史诗](manage_epics.html#manage-multi-level-child-epics-ultimate) ,以了解创建,移动,重新排序或删除子[级史诗](manage_epics.html#manage-multi-level-child-epics-ultimate)的步骤.
## Start date and due date[](#start-date-and-due-date "Permalink")
要设置史诗的**开始日期****截止日期** ,请选择以下选项之一:
* **固定** :输入固定值.
* **从里程碑** :从当前分配给史诗问题的里程碑继承动态值. 请注意,GitLab 12.5 用**Inherited**替换了此选项.
* **继承** :从史诗的问题,子史诗和里程碑继承动态值(在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/7332) ,以代替**From 里程碑** ).
### From milestones[](#from-milestones "Permalink")
> 在 GitLab 12.5 中由**Inherited** [取代](https://gitlab.com/gitlab-org/gitlab/-/issues/7332) .
如果您选择" **从里程碑**开始"作为开始日期,则 GitLab 会自动将日期设置为当前分配给添加到史诗中的问题的所有里程碑中最早的开始日期. 同样,如果您选择" **从里程碑** "作为截止日期,则 GitLab 会将其设置为当前分配给这些问题的所有里程碑中的最新截止日期.
这些是动态日期,如果发生以下任何情况,将重新计算这些日期:
* 将里程碑重新分配给这些问题.
* 里程碑日期更改.
* 从史诗中添加或删除问题.
### Inherited[](#inherited "Permalink")
在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/7332)以替换**From 里程碑** .
如果选择:
* GitLab **继承**了开始日期,它将扫描所有子史诗和分配给该史诗的问题,并将开始日期设置为与找到的最早开始日期或里程碑相匹配.
* GitLab **继承**了截止日期,它将设置截止日期以匹配在其子史诗和问题中发现的最新截止日期或里程碑.
这些是动态日期,如果发生以下任何情况,则重新计算:
* 儿童史诗的日期发生了变化.
* 将里程碑重新分配给问题.
* 里程碑的日期会更改.
* 问题被添加到史诗中或从史诗中删除.
由于史诗的日期可以从其子级继承日期,因此开始日期和到期日期从底部传播到顶部. 如果最低级别的子级史诗的开始日期发生更改(成为其父级史诗最早的开始日期),则父级史诗的开始日期将反映该更改,并将向上传播到顶部的史诗级.
## Roadmap in epics[](#roadmap-in-epics "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7327) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.10.
如果你的史诗包含一个或多个[孩子史诗](#multi-level-child-epics-ultimate)其中有一个[开始或到期日](#start-date-and-due-date) ,一个[路线图,](../roadmap/index.html)孩子史诗的观点是父史诗中列出.
[![Child epics roadmap](img/35e89eba4dfc37f409cb295b0c8b13d1.png)](img/epic_view_roadmap_v12_9.png)
## Permissions[](#permissions "Permalink")
如果您有权查看史诗,并且有权查看已添加到该史诗的问题,则可以在史诗问题列表中查看该问题.
如果您有权编辑史诗并且有权编辑问题,则可以将问题添加到史诗中或从史诗中删除.
请注意,对于给定的组,所有项目的可见性必须与该组相同,或限制较少. 这意味着,如果您有权访问某个小组的史诗,那么您已经可以访问该小组的项目.
您也可以查阅[组权限表](../../permissions.html#group-members-permissions) .
## Thread[](#thread "Permalink")
* 评论:通过在该史诗中的评论中发布评论来协作. 这些文本字段也完全支持[GitLab Flavored Markdown](../../markdown.html#gitlab-flavored-markdown-gfm) .
## Comment or start a thread[](#comment-or-start-a-thread "Permalink")
写下评论后,您可以:
* 点击**评论** ,您的评论将被发布.
* 单击" **开始主题"** ,您将在该史诗般的讨论中开始一个主题.
### Activity sort order[](#activity-sort-order "Permalink")
[Introduced](https://https://gitlab.com/gitlab-org/gitlab/-/issues/214364) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.2.
您可以颠倒默认顺序,并与按顶部的最新项目排序的活动供稿进行交互. 您的首选项通过本地存储保存,并自动应用于您查看的每个问题.
要更改活动排序顺序,请单击**最旧的第一个**下拉菜单,然后选择最旧或最新的项目以首先显示.
[![Issue activity sort order dropdown button](img/806d03909b4b194f095b4c69e175868d.png)](img/epic_activity_sort_order_v13_2.png)
## Award emoji[](#award-emoji "Permalink")
您可以为该史诗或其评论[授予表情符号](../../award_emojis.html) .
## Notifications[](#notifications "Permalink")
您可以[打开通知](../../profile/notifications.html)[通知](../../profile/notifications.html)史诗事件.
\ No newline at end of file
# Manage epics
> 原文:[https://docs.gitlab.com/ee/user/group/epics/manage_epics.html](https://docs.gitlab.com/ee/user/group/epics/manage_epics.html)
* [Create an epic](#create-an-epic)
* [Create an epic from the epic list](#create-an-epic-from-the-epic-list)
* [Access the New Epic form](#access-the-new-epic-form)
* [Elements of the New Epic form](#elements-of-the-new-epic-form)
* [Edit an epic](#edit-an-epic)
* [Bulk-edit epics](#bulk-edit-epics)
* [Delete an epic](#delete-an-epic)
* [Close an epic](#close-an-epic)
* [Reopen a closed epic](#reopen-a-closed-epic)
* [Go to an epic from an issue](#go-to-an-epic-from-an-issue)
* [Search for an epic from epics list page](#search-for-an-epic-from-epics-list-page)
* [Make an epic confidential](#make-an-epic-confidential)
* [Disable confidential epics](#disable-confidential-epics-premium-only)
* [Manage issues assigned to an epic](#manage-issues-assigned-to-an-epic)
* [Add an issue to an epic](#add-an-issue-to-an-epic)
* [Add an existing issue to an epic](#add-an-existing-issue-to-an-epic)
* [Create an issue from an epic](#create-an-issue-from-an-epic)
* [Remove an issue from an epic](#remove-an-issue-from-an-epic)
* [Reorder issues assigned to an epic](#reorder-issues-assigned-to-an-epic)
* [Move issues between epics](#move-issues-between-epics-ultimate)
* [Promote an issue to an epic](#promote-an-issue-to-an-epic)
* [Manage multi-level child epics](#manage-multi-level-child-epics-ultimate)
* [Add a child epic to an epic](#add-a-child-epic-to-an-epic)
* [Move child epics between epics](#move-child-epics-between-epics)
* [Reorder child epics assigned to an epic](#reorder-child-epics-assigned-to-an-epic)
* [Remove a child epic from a parent epic](#remove-a-child-epic-from-a-parent-epic)
# Manage epics[](#manage-epics-premium "Permalink")
该页面收集了有关[史诗](index.html)或与[史诗](index.html)有关的所有操作的说明.
## Create an epic[](#create-an-epic "Permalink")
每个组中都有史诗的分页列表,您可以从中创建新的史诗. 史诗列表还包括所选组中所有子组的史诗. 在您的论坛页面中:
### Create an epic from the epic list[](#create-an-epic-from-the-epic-list "Permalink")
要从史诗列表中创建史诗,请分组:
1.**史诗** .
2. Click **新史诗**.
3. 输入描述性标题.
4. Click **创造史诗**.
### Access the New Epic form[](#access-the-new-epic-form "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/211533) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.2.
有两种方法可以进入"新史诗"表格并在您所在的小组中创建史诗:
* 在您小组的史诗中,点击**新建史诗** .
* 在任何地方的顶部菜单中,单击**加号** ( ) **>新史诗** .
[![New epic from an open epic](img/4c0cef07da8190af4f517bd8d336cb5b.png)](img/new_epic_from_groups_v13.2.png)
### Elements of the New Epic form[](#elements-of-the-new-epic-form "Permalink")
在创建新的史诗时,您可以填写以下字段:
* Title
* Description
* 保密性复选框
* Labels
* 开始日期
* 截止日期
[![New epic form](img/a48fc7b7ef95b54bd7ec66c17cad7dbb.png)](img/new_epic_form_v13.2.png)
## Edit an epic[](#edit-an-epic "Permalink")
创建史诗之后,可以编辑更改以下详细信息:
* Title
* Description
* 开始日期
* 截止日期
* Labels
编辑史诗的标题或说明:
1. 点击**修改标题和说明** 按钮.
2. 进行更改.
3. Click **保存更改**.
要编辑史诗的开始日期,截止日期或标签,请执行以下操作:
1. 单击史诗侧边栏中每个部分旁边的" **编辑"** .
2. 选择日期或标签为您的史诗.
## Bulk-edit epics[](#bulk-edit-epics "Permalink")
您可以一次编辑多个史诗. 要了解操作方法,请访问[批量编辑问题,史诗和在组级别合并请求](../bulk_editing/index.html#bulk-edit-epics) .
## Delete an epic[](#delete-an-epic "Permalink")
**注意:**要删除史诗,您需要成为组/子组的[所有者](../../permissions.html#group-members-permissions) .
编辑史诗的描述时,单击" **删除"**按钮以删除史诗. 出现一个模态来确认您的动作.
删除史诗会从系统中与其关联的史诗中释放所有现有问题.
## Close an epic[](#close-an-epic "Permalink")
每当您决定不再需要该史诗时,请通过以下方法关闭该史诗:
* 单击**关闭史诗**按钮.
[![close epic - button](img/dce9a8c36e06896553bd80f313c3a756.png)](img/button_close_epic.png)
* 使用[快速动作](../../project/quick_actions.html) .
## Reopen a closed epic[](#reopen-a-closed-epic "Permalink")
您可以重新打开因以下原因而关闭的史诗:
* 单击**重新打开史诗**按钮.
[![reopen epic - button](img/ed7d654fa8271709dfa6c567b48c5de6.png)](img/button_reopen_epic.png)
* 使用[快速动作](../../project/quick_actions.html) .
## Go to an epic from an issue[](#go-to-an-epic-from-an-issue "Permalink")
如果问题属于史诗,则可以使用问题侧栏中的链接导航到包含该史诗.
[![containing epic](img/8edd1cbf476ddc76f3df25fdeff8b55c.png)](img/containing_epic.png)
## Search for an epic from epics list page[](#search-for-an-epic-from-epics-list-page "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 10.5 中引入.
* [已移至](https://gitlab.com/gitlab-org/gitlab/-/issues/37081) GitLab 12.8 中的[Premium](https://about.gitlab.com/pricing/)层.
您可以根据以下参数,使用过滤的搜索栏(类似于"问题和合并请求"的搜索栏)从史诗列表中搜索史诗:
* 标题或说明
* 作者名称/用户名
* Labels
[![epics search](img/c77b45147112088b7940cb4ebcc5f4a6.png)](img/epics_search.png)
要进行搜索,请转到史诗列表,然后单击" **搜索或过滤结果** "字段. 它将显示一个下拉菜单,您可以从中添加一个作者. 您也可以输入纯文本以按史诗标题或描述进行搜索. 完成后,按键盘上的`Enter`键过滤列表.
您还可以按以下方式对史诗列表进行排序:
* 创建日期
* 最近更新时间
* 开始日期
* 截止日期
每个选项都包含一个按钮,可以在**升序****降序**之间切换顺序. 无论您浏览史诗,包括" [路线图"](../roadmap/index.html) ,都可以保存和使用排序选项和顺序.
[![epics sort](img/57b0d20488fb6cdd9ed2e8f573fcb7bb.png)](img/epics_sort.png)
## Make an epic confidential[](#make-an-epic-confidential "Permalink")
版本历史
*[GitLab Premium](https://about.gitlab.com/pricing/) 13.0 中在功能标志后面[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/213068) ,默认情况下禁用.
*[GitLab Premium](https://about.gitlab.com/pricing/) 13.2 中[默认启用](https://gitlab.com/gitlab-org/gitlab/-/issues/224513) .
创建史诗时,可以选中**"将此史诗设为机密"**复选框,使其成为机密文件.
### Disable confidential epics[](#disable-confidential-epics-premium-only "Permalink")
机密史诗功能部署在**默认情况下启用**的功能标志的后面. [有权访问 GitLab Rails 控制台的 GitLab 管理员](../../../administration/feature_flags.html)可以为您的自我管理实例禁用它.
禁用它:
```
Feature.disable(:confidential_epics)
```
## Manage issues assigned to an epic[](#manage-issues-assigned-to-an-epic "Permalink")
### Add an issue to an epic[](#add-an-issue-to-an-epic "Permalink")
您可以将现有问题添加到史诗中,也可以创建一个自动添加到史诗中的新问题.
#### Add an existing issue to an epic[](#add-an-existing-issue-to-an-epic "Permalink")
属于史诗组或史诗子组中任何项目的现有问题都可以添加到史诗中. 新添加的问题显示在" **史诗和问题"**选项卡中问题列表的顶部.
史诗包含一个问题列表,一个问题最多可以与一个史诗相关联. 当您添加已链接到史诗的问题时,该问题会自动与其当前父级取消链接.
要将问题添加到史诗中:
1. 点击**添加**下拉按钮.
2. Click **添加问题**.
3. 使用以下两种方法之一确定要添加的问题:
* 粘贴问题的链接.
* 通过输入问题标题的一部分来搜索所需的问题,然后选择所需的匹配项(在[GitLab 12.5 中](https://gitlab.com/gitlab-org/gitlab/-/issues/9126)引入).
如果要添加多个问题,请按`空格键` ,然后重复此步骤.
4. Click **Add**.
#### Create an issue from an epic[](#create-an-issue-from-an-epic "Permalink")
在 GitLab 12.7 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/5419) .
从史诗中创建问题使您可以将注意力集中在史诗的更广泛的上下文上,同时将工作划分成较小的部分.
要从史诗中创建问题:
1. 在史诗页面上的" **史诗和问题"下** ,点击**添加**下拉按钮,然后选择**创建新问题** .
2.**标题下** ,输入新期刊的标题.
3.**项目**下拉列表中,选择应在其中创建问题的项目.
4. Click **创建问题**.
### Remove an issue from an epic[](#remove-an-issue-from-an-epic "Permalink")
在史诗的详细信息页面上时,可以从史诗中删除问题. 从史诗中删除问题后,该问题将不再与此史诗相关联.
要从史诗中删除问题:
1. 点击**删除** ( )按钮旁边要删除的问题. 出现**删除问题**警告.
2. Click **Remove**.
[![List of issues assigned to an epic](img/8c47dc71d95554edf7da34adb5acc575.png)](img/issue_list_v13_1.png)
### Reorder issues assigned to an epic[](#reorder-issues-assigned-to-an-epic "Permalink")
在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/9367) .
新问题出现在" **史诗和问题"**选项卡中的列表顶部. 您可以通过拖动来重新排列问题列表.
要重新分配分配给史诗的问题:
1. 转到" **史诗和问题"**标签.
2. 将问题拖到所需的顺序.
### Move issues between epics[](#move-issues-between-epics-ultimate "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33039) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0.
新问题出现在" **史诗和问题"**选项卡中的列表顶部. 您可以将问题从一部史诗转移到另一部史诗.
要将问题移至另一个史诗:
1. 转到" **史诗和问题"**标签.
2. 将问题拖到所需的父级史诗中.
### Promote an issue to an epic[](#promote-an-issue-to-an-epic "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 11.6 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/3777) .
* 在 12.8 中[移至](https://gitlab.com/gitlab-org/gitlab/-/issues/37081) [GitLab Premium](https://about.gitlab.com/pricing/) .
如果您具有关闭问题并在直接父组中创建史诗的必要[权限](../../permissions.html) ,则可以使用`/promote` [快速操作](../../project/quick_actions.html#quick-actions-for-issues-merge-requests-and-epics)将问题升级为史诗. 仅可以促进小组项目中的问题. 尝试提出机密问题时,将显示警告. 向史诗宣传机密问题将使与该问题相关的所有信息公开,因为史诗对小组成员是公开的.
执行快速操作时:
* 在与问题项目所在的组中创建一个史诗.
* 通知该问题的订户该史诗已创建.
以下问题元数据将被复制到史诗中:
* 标题,描述,活动/评论主题.
* Upvotes/downvotes.
* Participants.
* Group labels that the issue already has.
## Manage multi-level child epics[](#manage-multi-level-child-epics-ultimate "Permalink")
### Add a child epic to an epic[](#add-a-child-epic-to-an-epic "Permalink")
要将儿童史诗添加到史诗中:
1. 点击**添加**下拉按钮.
2. Click **添加史诗**.
3. 使用以下两种方法之一确定要添加的史诗:
* 粘贴史诗的链接.
* 通过输入史诗标题的一部分来搜索所需的问题,然后选择所需的匹配项(在[GitLab 12.5 中](https://gitlab.com/gitlab-org/gitlab/-/issues/9126)引入).
如果要添加多个史诗,请按`空格键`并重复此步骤.
4. Click **Add**.
### Move child epics between epics[](#move-child-epics-between-epics "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33039) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0.
新的儿童史诗出现在" **史诗和问题"**选项卡中的列表顶部. 您可以将儿童史诗从一个史诗转移到另一个史诗. 当您添加已链接到父级史诗的史诗时,到其当前父级的链接将被删除. 问题和儿童史诗不能混在一起.
要将儿童史诗移至另一史诗:
1. 转到" **史诗和问题"**标签.
2. 将史诗拖到所需的父史诗中.
### Reorder child epics assigned to an epic[](#reorder-child-epics-assigned-to-an-epic "Permalink")
在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/9367) .
新的儿童史诗出现在" **史诗和问题"**选项卡中的列表顶部. 您可以对子史诗列表进行重新排序.
要重新分配分配给史诗的子史诗:
1. 转到" **史诗和问题"**标签.
2. 将史诗拖到所需的顺序.
### Remove a child epic from a parent epic[](#remove-a-child-epic-from-a-parent-epic "Permalink")
要从父级史诗中删除子级史诗:
1. 单击父级史诗列表中的`x`按钮.
2.**删除史诗**警告消息,请单击**删除** .
\ No newline at end of file
> 原文:[https://docs.gitlab.com/ee/user/group/dependency_proxy/](https://docs.gitlab.com/ee/user/group/dependency_proxy/)
\ No newline at end of file
# Group Import/Export
> 原文:[https://docs.gitlab.com/ee/user/group/settings/import_export.html](https://docs.gitlab.com/ee/user/group/settings/import_export.html)
* [Important Notes](#important-notes)
* [Exported Contents](#exported-contents)
* [Exporting a Group](#exporting-a-group)
* [Between CE and EE](#between-ce-and-ee)
* [Importing the group](#importing-the-group)
* [Version history](#version-history)
* [Rate Limits](#rate-limits)
# Group Import/Export[](#group-importexport "Permalink")
版本历史
* 在 GitLab 13.0 中作为实验功能[引入](https://gitlab.com/groups/gitlab-org/-/epics/2888) . 在将来的版本中可能会更改.
可以将在任何 GitLab 实例或 GitLab.com 上运行的现有组及其所有相关数据导出,并移至新的 GitLab 实例.
如果启用了组导入选项,则会显示**GitLab 导入/导出**按钮.
也可以看看:
* [Group Import/Export API](../../../api/group_import_export.html)
* [Project Import/Export](../../project/settings/import_export.html)
* [Project Import/Export API](../../../api/project_import_export.html)
要启用 GitLab 导入/导出:
1. 导航 **管理区>** **设置>可见性和访问控制** .
2. 滚动到**导入源**
3. 启用所需的**导入源**
## Important Notes[](#important-notes "Permalink")
请注意以下几点:
* 导出存储在一个临时[共享目录中](../../../development/shared_files.html) ,并由特定工作人员每 24 小时删除一次.
* 要保留导入项目中的组级关系,请首先运行"组导入/导出",以允许将项目导入所需的组结构中.
* 除非导入到父组,否则将为导入的组提供`private`可见性级别.
* 如果导入父组,则除非另有限制,否则子组将继承相同级别的可见性.
* 若要保留成员列表及其对导入组的各自权限,请查看这些组中的用户. 在导入所需的组之前,请确保这些用户存在.
### Exported Contents[](#exported-contents "Permalink")
将导出以下项目:
* Milestones
* Labels
* 董事会和董事会名单
* Badges
* 子组(包括所有上述数据)
* Epics
* Events
以下项目将不会导出:
* Projects
* 跑步者令牌
* SAML 发现令牌
**注意:**有关在组导出中[`import_export.yml`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/import_export/group/import_export.yml)的特定数据的更多详细信息,请参阅[`import_export.yml`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/import_export/group/import_export.yml)文件.
## Exporting a Group[](#exporting-a-group "Permalink")
1. 导航到您的论坛的主页.
2. 请点击 侧栏中的**设置** .
3. 在" **高级"**部分中,单击" **导出组"**按钮.
[![Export group panel](img/222aa4a1e09c2312446d0aa324c6f193.png)](img/export_panel_v13_0.png)
4. 生成导出后,您应该会收到一封电子邮件,其中包含指向压缩的 tar 存档中[导出内容](#exported-contents)的链接,其中的内容为 JSON 格式.
5. 或者,您可以返回项目设置,然后点击**下载导出**从那里下载文件,或者点击**重新**生成导出来生成一个新文件.
**注意:**可以由管理员设置最大导入文件大小,默认为 50MB. 作为管理员,您可以修改最大导入文件大小. 为此,请在" [应用程序设置" API](../../../api/settings.html#change-application-settings)或" [管理界面"中](../../admin_area/settings/account_and_limit_settings.html)使用`max_import_size`选项.
### Between CE and EE[](#between-ce-and-ee "Permalink")
您可以将组从[Community Edition](https://about.gitlab.com/install/ce-or-ee/)导出[到 Enterprise Edition](https://about.gitlab.com/install/ce-or-ee/) ,反之亦然.
如果要将组从企业版导出到社区版,则可能会丢失仅保留在企业版中的数据. 有关更多信息,请参阅[从 EE 降级为 CE](../../../README.html) .
## Importing the group[](#importing-the-group "Permalink")
1. 通过顶部导航栏中的`+`按钮或现有组页面上的" **新建子组"**按钮导航到" **新建**组"页面.
[![Navigation paths to create a new group](img/fad2df1fa4371b39b3ea1032a8ad236c.png)](img/new_group_navigation_v13_1.png)
2. 在"新建组"页面上,选择" **导入组"**选项卡.
[![Fill in group details](img/d15d948fc7d1b6e5c8dabacbe7c2fcc9.png)](img/import_panel_v13_1.png)
3. 输入您的群组名称.
4. 接受或修改关联的组 URL.
5. Click **选择文件**
6. 在" [导出组"](#exporting-a-group)部分中选择您导出的文件.
7. 单击**导入组**开始导入. 您新导入的组页面将很快出现.
## Version history[](#version-history "Permalink")
GitLab 可以导入从其他 GitLab 部署导出的捆绑软件. 此功能仅限于之前的两个 GitLab [次要](../../../policy/maintenance.html#versioning)发行版,这与我们的[安全发布](../../../policy/maintenance.html#security-releases)流程类似.
例如:
| 当前版本 | 可以导入从 |
| --- | --- |
| 13.0 | 13.0, 12.10, 12.9 |
| 13.1 | 13.1, 13.0, 12.10 |
## Rate Limits[](#rate-limits "Permalink")
为了避免滥用,用户的速率仅限于:
| 请求类型 | Limit |
| --- | --- |
| Export | 每 5 分钟 30 个小组 |
| 下载导出 | 每 10 分钟每组 10 次下载 |
| Import | 每 5 分钟 30 个小组 |
\ No newline at end of file
# Insights
> 原文:[https://docs.gitlab.com/ee/user/group/insights/](https://docs.gitlab.com/ee/user/group/insights/)
* [View your group’s Insights](#view-your-groups-insights)
* [Configure your Insights](#configure-your-insights)
* [Permissions](#permissions)
# Insights[](#insights-ultimate "Permalink")
[Introduced](https://gitlab.com/groups/gitlab-org/-/epics/725) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.0.
配置对您的团队重要的洞察力,以探索数据,例如分类诊断,在给定时间段内创建/关闭的问题,合并请求的平均时间等.
[![Insights example stacked bar chart](img/9f4a21c247f193621ddd2f709c4536d7.png)](img/insights_example_stacked_bar_chart.png)
## View your group’s Insights[](#view-your-groups-insights "Permalink")
您可以通过点击左侧边栏中的**Analytics(分析)> Insights**链接来访问组的 Insights:
[![Insights sidebar link](img/098a5864447e44da06b72051af59b294.png)](img/insights_sidebar_link_v12_8.png)
## Configure your Insights[](#configure-your-insights "Permalink")
导航到组的**"设置">"常规"** ,展开" **Insights"** ,然后选择包含`.gitlab/insights.yml`配置文件的项目:
[![group insights configuration](img/6e3e1e9c7013cd330bcb6380ef19ddf9.png)](img/insights_group_configuration.png)
如果未设置任何配置,将使用[默认配置文件](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/fixtures/insights/default.yml) .
有关`.gitlab/insights.yml`配置文件的更多详细信息,请参见[Project 的 Insights 文档](../../project/insights/index.html) .
## Permissions[](#permissions "Permalink")
如果您有权查看组,则可以查看其见解.
**注意:**您无法访问的问题或合并请求(因为您无法访问它们所属的项目,或者因为它们是机密的)会从 Insights 图表中过滤掉.
您也可以查阅[组权限表](../../permissions.html#group-members-permissions) .
\ No newline at end of file
# Issues Analytics
> 原文:[https://docs.gitlab.com/ee/user/group/issues_analytics/](https://docs.gitlab.com/ee/user/group/issues_analytics/)
* [Drill into the information](#drill-into-the-information)
# Issues Analytics[](#issues-analytics-premium "Permalink")
版本历史
*[GitLab Premium](https://about.gitlab.com/pricing/) 11.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/7478) .
* 在项目级别的[GitLab Premium](https://about.gitlab.com/pricing/) 12.9 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/196561) .
问题分析是一个条形图,用于说明每月创建的问题数. 默认时间跨度为 13 个月,其中包括当月以及之前的 12 个月.
要访问图表,请导航至您的组或项目侧边栏,然后选择 **分析>问题分析** .
将鼠标悬停在每个栏上可以查看总数.
要缩小图中包含的问题的范围,请在" **搜索或过滤结果..."**字段中输入您的条件. 可以在以下列表中输入条件或从菜单中选择条件:
* Author
* Assignee
* Milestone
* Label
* 我的反应
* Weight
您可以通过设置 URL 参数来更改显示的总月数. 例如, `https://gitlab.com/groups/gitlab-org/-/issues_analytics?months_back=15` //gitlab.com/groups/gitlab-org/-/issues_analytics?months_back `https://gitlab.com/groups/gitlab-org/-/issues_analytics?months_back=15` 15 显示 GitLab.org 组中图表的总计 15 个月.
[![Issues created per month](img/7a1046341466c144b96bc573f0a16114.png)](img/issues_created_per_month_v12_8.png)
## Drill into the information[](#drill-into-the-information "Permalink")
在 GitLab 13.1 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/196547) .
您可以通过浏览图表下方的表格来检查各个问题的详细信息.
该图表显示基于全局页面筛选器的前 100 个问题.
[![Issues table](img/c07889c4060a55eccd0e5dde9cb54f74.png)](img/issues_table_v13_1.png)
\ No newline at end of file
# Iterations
> 原文:[https://docs.gitlab.com/ee/user/group/iterations/](https://docs.gitlab.com/ee/user/group/iterations/)
* [View the iterations list](#view-the-iterations-list)
* [Create an iteration](#create-an-iteration)
* [Edit an iteration](#edit-an-iteration)
* [Enable Iterations](#enable-iterations-core-only)
# Iterations[](#iterations-starter "Permalink")
版本历史
*[GitLab Starter](https://about.gitlab.com/pricing/) 13.1 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/214713) .
* 它部署在功能标记后面,默认情况下处于禁用状态.
* 在 GitLab.com 上已禁用.
* 可以按组启用或禁用
* 不建议将其用于生产.
* 要在 GitLab 自管实例中使用它,请让 GitLab 管理员[启用它](#enable-iterations-core-only) .
迭代是跟踪一段时间内问题的一种方法. 这使团队可以跟踪速度和波动性指标. 迭代可与[里程碑](../../project/milestones/index.html)一起使用,以在不同时间段内进行跟踪.
例如,您可以使用:
* 计划递增的里程碑,跨越 8 到 12 周.
* Sprint 的迭代,历时 2 周.
在 GitLab 中,迭代类似于里程碑,但有一些区别:
* 迭代仅适用于组.
* 一组一次只能有一个活动的迭代.
* 迭代需要开始日期和结束日期.
* 迭代日期范围不能重叠.
## View the iterations list[](#view-the-iterations-list "Permalink")
要查看迭代列表,请分组访问 **问题>迭代** . 从那里您可以创建一个新的迭代或单击一个迭代以获得更详细的视图.
## Create an iteration[](#create-an-iteration "Permalink")
**注意:**您需要具有开发人员[权限](../../permissions.html)或更高[权限](../../permissions.html)才能创建迭代.
要创建迭代:
1. 在一个小组中,转到 **问题>迭代** .
2. Click **新迭代**.
3. 输入标题,描述(可选),开始日期和截止日期.
4. 单击**创建迭代** . 将打开"迭代详细信息"页面.
## Edit an iteration[](#edit-an-iteration "Permalink")
版本历史
*[GitLab Starter](https://about.gitlab.com/pricing/) 13.2 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/218277) .
**注意:**您需要开发者[权限](../../permissions.html)或更高[权限](../../permissions.html)才能编辑迭代.
要编辑迭代,请点击三点菜单( )> **编辑迭代** .
## Enable Iterations[](#enable-iterations-core-only "Permalink")
GitLab 迭代功能正在开发中,尚未准备好用于生产. 它部署在**默认情况下禁用**的功能标志的后面. [有权访问 GitLab Rails 控制台的 GitLab 管理员](../../../administration/feature_flags.html)可以为您的实例启用它. `:group_iterations`可以按组启用或禁用.
要启用它:
```
# Instance-wide
Feature.enable(:group_iterations)
# or by group
Feature.enable(:group_iterations, Group.find(<group id>))
```
禁用它:
```
# Instance-wide
Feature.disable(:group_iterations)
# or by group
Feature.disable(:group_iterations, Group.find(<group id>))
```
\ No newline at end of file
# Public access
> 原文:[https://docs.gitlab.com/ee/public_access/public_access.html](https://docs.gitlab.com/ee/public_access/public_access.html)
* [Visibility of projects](#visibility-of-projects)
* [Public projects](#public-projects)
* [Internal projects](#internal-projects)
* [Private projects](#private-projects)
* [How to change project visibility](#how-to-change-project-visibility)
* [Visibility of groups](#visibility-of-groups)
* [Visibility of users](#visibility-of-users)
* [Visibility of pages](#visibility-of-pages)
* [Restricting the use of public or internal projects](#restricting-the-use-of-public-or-internal-projects)
* [Reducing visibility](#reducing-visibility)
# Public access[](#public-access "Permalink")
GitLab 允许[所有者](../user/permissions.html)将项目的可见性设置为**public****internal****private** . 这些可见性级别会影响谁可以在公共访问目录(GitLab 实例下的`/public` )中查看项目,例如[https://gitlab.com/public](https://gitlab.com/public)
## Visibility of projects[](#visibility-of-projects "Permalink")
### Public projects[](#public-projects "Permalink")
可以克隆公共项目, **而无需**通过 HTTPS **进行任何**身份验证.
它们将在所有用户的公共访问目录( `/public` )中列出.
**任何登录的用户**都将对存储库具有[来宾权限](../user/permissions.html) .
### Internal projects[](#internal-projects "Permalink")
任何登录用户都可以克隆内部项目.
它们也将列在公共访问目录( `/public` )中,但仅适用于登录用户.
任何登录的用户都将对存储库具有[来宾权限](../user/permissions.html) .
**注意:**从 2019 年 7 月开始,GitLab.com 上的新项目,组和摘要的`` `Internal`可见性''设置被禁用. 使用" `Internal`可见性"设置的现有项目,组和摘录保留此设置. 您可以在[相关问题中](https://gitlab.com/gitlab-org/gitlab/-/issues/12388)阅读有关更改的更多信息.
### Private projects[](#private-projects "Permalink")
私人项目只能由项目成员(来宾除外)克隆和查看.
它们将仅出现在项目成员的公共访问目录( `/public` )中.
### How to change project visibility[](#how-to-change-project-visibility "Permalink")
1. 转到项目的**"设置"** .
2. 将**可见性级别**更改为公共,内部或私有.
## Visibility of groups[](#visibility-of-groups "Permalink")
**注意:** [从](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3323) GitLab 8.6 [开始](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3323) ,组的可见性已更改,并且可以与项目相同的方式进行配置. 在以前的版本中,组页面始终对所有用户可见.
与项目一样,可以设置组的可见性来决定匿名用户,所有登录用户还是仅显式组成员可以查看它. 应用程序设置级别对可见性级别的限制也适用于组,因此,如果将其设置为内部,则匿名用户的浏览页面将为空. 现在,组页面上有一个可见性级别图标.
管理员用户不能创建具有比直接父组更高的可见性级别的子组或项目.
## Visibility of users[](#visibility-of-users "Permalink")
无论您是否登录,位于`/username`的用户公共页面始终可见.
当访问用户的公共页面时,您只能看到您有权访问的项目.
如果公共级别受到限制,则用户配置文件仅对登录用户可见.
## Visibility of pages[](#visibility-of-pages "Permalink")
默认情况下,以下目录对未经身份验证的用户可见:
* 公共访问( `/public` ).
* 探索( `/explore` ).
* 帮助( `/help` ).
但是,如果`/public`目录的访问级别受到限制,则这些目录仅对登录用户可见.
## Restricting the use of public or internal projects[](#restricting-the-use-of-public-or-internal-projects "Permalink")
您可以限制用户在创建项目或代码段时对可见性级别的使用. 这有助于防止用户意外公开其存储库. 受限的可见性设置不适用于管理员用户.
有关详细信息,请参阅[受限可见性级别](../user/admin_area/settings/visibility_and_access_controls.html#restricted-visibility-levels) .
## Reducing visibility[](#reducing-visibility "Permalink")
在 GitLab 12.6 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/33358) .
降低项目的可见性级别将删除该项目与任何分叉项目之间的派生关系. 这是一种潜在的破坏性操作,需要先确认才能保存.
[![Project visibility change confirmation](img/17abb300a15db5073a41bf8a13e53bc7.png)](img/project_visibility_confirmation_v12_6.png)
\ No newline at end of file
# SAML SSO for GitLab.com groups
> 原文:[https://docs.gitlab.com/ee/user/group/saml_sso/](https://docs.gitlab.com/ee/user/group/saml_sso/)
* [Configuring your Identity Provider](#configuring-your-identity-provider)
* [NameID](#nameid)
* [NameID Format](#nameid-format)
* [Metadata configuration](#metadata-configuration)
* [Configuring GitLab](#configuring-gitlab)
* [SSO enforcement](#sso-enforcement)
* [Providers](#providers)
* [Azure setup notes](#azure-setup-notes)
* [Okta setup notes](#okta-setup-notes)
* [OneLogin setup notes](#onelogin-setup-notes)
* [Additional providers and setup options](#additional-providers-and-setup-options)
* [User access and management](#user-access-and-management)
* [Linking SAML to your existing GitLab.com account](#linking-saml-to-your-existing-gitlabcom-account)
* [Signing in to GitLab.com with SAML](#signing-in-to-gitlabcom-with-saml)
* [Role](#role)
* [Blocking access](#blocking-access)
* [Unlinking accounts](#unlinking-accounts)
* [Glossary](#glossary)
* [Configuring on a self-managed GitLab instance](#configuring-on-a-self-managed-gitlab-instance-premium-only)
* [Limitations](#limitations)
* [Omnibus installations](#omnibus-installations)
* [Source installations](#source-installations)
* [Troubleshooting](#troubleshooting)
* [SAML debugging tools](#saml-debugging-tools)
* [Verifying configuration](#verifying-configuration)
* [Verifying NameID](#verifying-nameid)
* [Message: “SAML authentication failed: Extern uid has already been taken”](#message-saml-authentication-failed-extern-uid-has-already-been-taken)
* [Message: “SAML authentication failed: User has already been taken”](#message-saml-authentication-failed-user-has-already-been-taken)
* [Message: “SAML authentication failed: Email has already been taken”](#message-saml-authentication-failed-email-has-already-been-taken)
* [Message: “SAML authentication failed: Extern uid has already been taken, User has already been taken”](#message-saml-authentication-failed-extern-uid-has-already-been-taken-user-has-already-been-taken)
* [Message: “Request to link SAML account must be authorized”](#message-request-to-link-saml-account-must-be-authorized)
* [Stuck in a login “loop”](#stuck-in-a-login-loop)
* [The NameID has changed](#the-nameid-has-changed)
* [I need to change my SAML app](#i-need-to-change-my-saml-app)
* [I need additional information to configure my identity provider](#i-need-additional-information-to-configure-my-identity-provider)
# SAML SSO for GitLab.com groups[](#saml-sso-for-gitlabcom-groups-premium "Permalink")
在 GitLab 11.0 中引入.
此页面描述了组的 SAML. 有关自我管理的 GitLab 实例上的实例范围内的 SAML,请参阅[SAML OmniAuth Provider](../../../integration/saml.html) .
GitLab.com 上的 SAML 允许用户通过其 SAML 身份提供商进行登录. 如果用户还不是成员,则登录过程会自动将用户添加到适当的组.
如果您遵循我们的指导以使用[SCIM](scim_setup.html)[组管理的帐户](group_managed_accounts.html)自动执行用户配置,则无需手动创建此类帐户.
通过[SCIM](scim_setup.html)支持 SAML SSO 组的用户同步. SCIM 支持在 GitLab 组中添加和删除用户. 例如,如果您从 SCIM 应用程序中删除用户,则 SCIM 将从 GitLab 组中删除该用户.
## Configuring your Identity Provider[](#configuring-your-identity-provider "Permalink")
1. 导航到该组,然后单击**设置> SAML SSO** .
2. 使用**Assertion 使用者服务 URL****Identifier****GitLab 单一登录** **URL**来配置 SAML 服务器. 另外,GitLab 还提供[元数据 XML 配置](#metadata-configuration) . 有关更多详细信息,请参见[特定的身份提供者文档](#providers) .
3. 配置 SAML 响应以包括唯一标识每个用户的 NameID.
4. 如果使用[组托管帐户,请](group_managed_accounts.html)配置[必需的断言](group_managed_accounts.html#assertions) .
5. 设置身份提供者后,继续[配置 GitLab](#configuring-gitlab) .
[![Issuer and callback for configuring SAML identity provider with GitLab.com](img/ebc54b5fdcb529ff40d6d097098188ae.png)](img/group_saml_configuration_information.png)
### NameID[](#nameid "Permalink")
GitLab.com 使用 SAML NameID 来识别用户. NameID 元素:
* 是 SAML 响应中的必填字段.
* 每个用户必须唯一.
* 必须是永久不变的值,例如随机生成的唯一用户 ID.
* 区分大小写. NameID 必须在随后的登录尝试中完全匹配,因此不应依赖可能在大小写之间变化的用户输入.
* 不应是电子邮件地址或用户名. 我们强烈建议您反对这些,因为很难保证它们永远不会改变,例如当一个人的名字改变时. 电子邮件地址也不区分大小写,这可能导致用户无法登录.
支持的提供程序的相关字段名称和建议值在[提供程序特定的注释中](#providers) . 适当的相应字段.
**警告:**用户使用 SSO SAML 设置登录到 GitLab 后,更改`NameID`将破坏配置,并有可能将用户锁定在 GitLab 组之外.
#### NameID Format[](#nameid-format "Permalink")
我们建议将 NameID 格式设置为`Persistent`除非使用要求其他格式的字段(例如电子邮件).
### Metadata configuration[](#metadata-configuration "Permalink")
GitLab 提供了可用于配置身份提供者的元数据 XML.
1. 导航到该组,然后单击**设置> SAML SSO** .
2. 复制提供的**GitLab 元数据 URL** .
3. 请遵循身份提供者的文档,并在请求时粘贴元数据 URL.
## Configuring GitLab[](#configuring-gitlab "Permalink")
设置好身份提供程序以与 GitLab 一起使用后,您需要配置 GitLab 以使用它进行身份验证:
1. 导航到组的**"设置">" SAML SSO"** .
2. 从您的身份提供者中找到 SSO URL,然后在**身份提供者单点登录 URL**字段中输入 SSO URL.
3. 在" **证书"**字段中找到并输入 SAML 令牌签名证书的指纹.
4. 单击" **为此组启用 SAML 身份验证"**切换开关.
5. 点击**保存更改**按钮.
[![Group SAML Settings for GitLab.com](img/6ea99225391da160a92dd9fd1fb01cd7.png)](img/group_saml_settings.png)
**注意:**请注意,证书[指纹算法](#additional-providers-and-setup-options)必须在 SHA1 中. 配置身份提供者时,请使用安全签名算法.
### SSO enforcement[](#sso-enforcement "Permalink")
* 在 GitLab 11.8 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/5291) .
* 在 GitLab 11.11 中进行了[改进](https://gitlab.com/gitlab-org/gitlab/-/issues/9255) ,并在 GitLab UI 中不断实施.
启用此选项后,用户必须浏览您组的 GitLab 单一登录 URL. 如果已配置,也可以通过 SCIM 添加它们. 无法手动添加用户,只能通过 UI 通过 SSO URL 登录来访问项目/组资源.
但是,每次访问时都不会提示用户通过 SSO 登录. GitLab 将检查用户是否已通过 SSO 进行身份验证,并且仅在会话过期时提示用户通过 SSO 登录.
我们打算为[Git 和 API 活动](https://gitlab.com/gitlab-org/gitlab/-/issues/9152)添加类似的 SSO 要求.
为组启用 SSO 强制后,即使分叉了项目,用户也无法在顶级组之外的组中共享项目.
要禁止用户在顶级组之外进行贡献,请参阅" [组管理帐户"](group_managed_accounts.html) .
## Providers[](#providers "Permalink")
**注意:** GitLab 无法为未在此处列出的 IdP 提供支持.
| Provider | Documentation |
| --- | --- |
| ADFS(Active Directory 联合身份验证服务) | [Create a Relying Party Trust](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust) |
| Azure | [Configuring single sign-on to applications](https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/configure-single-sign-on-non-gallery-applications) |
| Okta | [Setting up a SAML application in Okta](https://developer.okta.com/docs/guides/build-sso-integration/saml2/overview/) |
| OneLogin | [Use the OneLogin SAML Test Connector](https://onelogin.service-now.com/support?id=kb_article&sys_id=93f95543db109700d5505eea4b96198f) |
[配置标识提供程序时](#configuring-your-identity-provider) ,请考虑以下有关特定提供程序的注意事项,以帮助避免常见问题,并作为所用术语的指南.
### Azure setup notes[](#azure-setup-notes "Permalink")
有关包括 SCIM 在内的 Azure SAML 设置的演示,请参阅《 [使用针对组的 SAML SSO 的 Azure 上的 SCIM 置备》演示](https://youtu.be/24-ZxmTeEBU) .
| 亚搏体育 app 设置 | 蔚蓝领域 |
| --- | --- |
| Identifier | 标识符(实体 ID) |
| 断言消费者服务 URL | 回复 URL(断言消费者服务 URL) |
| GitLab 单一登录 URL | 登录 URL |
| 身份提供者单点登录 URL | 登录网址 |
| 证书指纹 | Thumbprint |
我们推荐:
* **唯一用户标识符(名称标识符)**设置为`user.objectID` .
* **nameid-format**设置为持久.
### Okta setup notes[](#okta-setup-notes "Permalink")
有关 Okta SAML 设置(包括 SCIM)的[演示](https://youtu.be/0ES9HsZq0AQ) ,请参见[演示:Okta Group SAML 和 SCIM 设置](https://youtu.be/0ES9HsZq0AQ) .
| 亚搏体育 app 设置 | Okta 场 |
| --- | --- |
| Identifier | 目标对象 URI |
| 断言消费者服务 URL | 单一登录网址 |
| GitLab 单一登录 URL | 登录页面 URL(在" **应用程序登录页面"**设置下) |
| 身份提供者单点登录 URL | 身份提供者单一登录 URL |
在 Okta 的" **单一登录 URL"**字段下,选中" **将此用于收件人 URL 和目标 URL** "选项.
我们推荐:
* **应用程序用户名** (NameID)设置为**Custom** `user.getInternalProperty("id")` .
* **名称 ID 格式**设置为**Persistent** .
### OneLogin setup notes[](#onelogin-setup-notes "Permalink")
OneLogin 应用目录中列出的 GitLab 应用适用于自我管理的 GitLab 实例. 对于 GitLab.com,请使用通用 SAML 测试连接器,例如 SAML 测试连接器(高级).
| 亚搏体育 app 设置 | OneLogin Field |
| --- | --- |
| Identifier | Audience |
| 断言消费者服务 URL | Recipient |
| 断言消费者服务 URL | ACS(消费者)网址 |
| 断言消费者服务 URL(转义版本) | ACS(消费者)URL 验证器 |
| GitLab 单一登录 URL | 登录网址 |
| 身份提供者单点登录 URL | SAML 2.0 端点 |
Recommended `NameID` value: `OneLogin ID`.
### Additional providers and setup options[](#additional-providers-and-setup-options "Permalink")
SAML 标准意味着广泛的身份提供者将与 GitLab 一起使用. 不幸的是,我们尚未验证与所有 SAML 提供程序的连接. 有关更多信息,请参见[关于提供程序](#providers)[讨论](#providers) .
您的身份提供者可能具有相关的文档. 它可能是通用的 SAML 文档,也可能是专门针对 GitLab 的. 例子:
* [Auth0](https://auth0.com/docs/protocols/saml/saml-idp-generic)
* [G Suite](https://support.google.com/a/answer/6087519?hl=en)
* [JumpCloud](https://support.jumpcloud.com/support/s/article/single-sign-on-sso-with-gitlab-2019-08-21-10-36-47)
* [PingOne by Ping Identity](https://docs.pingidentity.com/bundle/pingone/page/xsh1564020480660-1.html)
您的身份提供商可能需要其他配置,例如:
| Field | Value | Notes |
| --- | --- | --- |
| SAML 配置文件 | Web 浏览器 SSO 配置文件 | GitLab 使用 SAML 通过用户的浏览器登录. 我们不会直接向身份提供者发出请求. |
| SAML 请求绑定 | HTTP 重定向 | GitLab(服务提供商)使用 base64 编码的`SAMLRequest` HTTP 参数将用户重定向到您的身份提供商. |
| SAML 响应绑定 | HTTP POST | 您的身份提供者使用 HTTP 表单(包括`SAMLResponse`响应用户,该表单由用户的浏览器提交回 GitLab. |
| 签署 SAML 回应 | Yes | 我们要求这样做以防止篡改. |
| X.509 证书作为回应 | Yes | 这用于签署响应并对照提供的指纹进行检查. |
| 指纹算法 | SHA-1 | 我们需要用于签名 SAML 响应的证书的 SHA-1 哈希. |
| 签名算法 | SHA-1/SHA-256/SHA-384/SHA-512 | 也称为摘要方法,可以在 SAML 响应中指定此方法. 它确定响应的签名方式. |
| 加密 SAML 断言 | No | 在您的身份提供者,用户的浏览器和 GitLab 之间使用 TLS. |
| 签署 SAML 声明 | Optional | 我们不需要签署声明. 我们要求签署完整的回复以验证其完整性. |
| 检查 SAML 请求签名 | No | GitLab 不会对 SAML 请求进行签名,但是会检查 SAML 响应上的签名. |
| 默认 RelayState | Optional | 通过身份提供者上的按钮登录后,URL 用户应最终打开. |
| NameID 格式 | `Persistent` | See [details above](#nameid-format). |
| 其他网址 |   | 您可能需要在某些提供程序的其他字段中使用" `Identifier`或" `Assertion consumer service URL` . |
| 单一登出网址 |   | 不支持 |
如果上面没有列出您需要的信息,则不妨查看[下面](#i-need-additional-information-to-configure-my-identity-provider)[故障排除文档](#i-need-additional-information-to-configure-my-identity-provider) .
## User access and management[](#user-access-and-management "Permalink")
一旦配置并启用了 Group SSO,用户就可以通过身份提供商的仪表板访问 GitLab.com 组. 如果配置了[SCIM](scim_setup.html) ,请参阅[SCIM 页面上的](scim_setup.html#user-access-and-linking-setup) " [用户访问和链接设置"部分](scim_setup.html#user-access-and-linking-setup) .
当用户尝试使用 Group SSO 登录时,他们将需要一个配置了以下内容之一的帐户:
* [SCIM](scim_setup.html).
* [Group-managed accounts](group_managed_accounts.html).
* 一个 GitLab.com 帐户.
### Linking SAML to your existing GitLab.com account[](#linking-saml-to-your-existing-gitlabcom-account "Permalink")
要将 SAML 链接到您现有的 GitLab.com 帐户:
1. 登录到您的 GitLab.com 帐户.
2. 找到并访问您要登录的组的**GitLab 单一登录 URL** . 群组管理员可以在群组的**"设置">" SAML SSO"**页面上找到此内容. 如果配置了登录 URL,则用户可以从身份提供者连接到 GitLab 应用.
3. Click **Authorize**.
4. 如果出现提示,请在身份提供者上输入您的凭据.
5. 您将被重定向回 GitLab.com,现在应该可以访问该组了. 将来,您可以使用 SAML 登录到 GitLab.com.
在随后的访问中,您应该能够[使用 SAML](#signing-in-to-gitlabcom-with-saml)或直接访问链接来[登录 GitLab.com](#signing-in-to-gitlabcom-with-saml) . 如果**强制 SSO**选项已打开,您将被重定向到通过身份提供者登录.
### Signing in to GitLab.com with SAML[](#signing-in-to-gitlabcom-with-saml "Permalink")
1. 登录到您的身份提供商.
2. 从应用程序列表中,单击" GitLab.com"应用程序(名称由身份提供者的管理员设置).
3. 您将登录到 GitLab.com,并重定向到该组.
### Role[](#role "Permalink")
首次登录时,GitLab 会将您添加到具有 Guest 角色的顶级父组中. 具有适当特权的现有成员可以提升该新用户.
如果用户已经是组的成员,则链接 SAML 身份不会更改其角色.
### Blocking access[](#blocking-access "Permalink")
要取消对该组的访问,请按顺序执行以下步骤:
1. 从身份提供者上的用户数据存储中删除用户,或从特定应用程序上的用户列表中删除用户.
2. 从 GitLab.com 组中删除用户.
### Unlinking accounts[](#unlinking-accounts "Permalink")
用户可以从其个人资料页面取消链接组的 SAML. 在以下情况下这可能会有所帮助:
* 您不再希望某个群组能够登录 GitLab.com.
* 您的 SAML NameID 已更改,因此 GitLab 无法再找到您的用户.
例如,要取消链接`MyOrg`帐户,以下" **断开连接"**按钮将在" **配置文件">"帐户"**下可用:
[![Unlink Group SAML](img/b203ae7a973815c03ea680032d1e75eb.png)](img/unlink_group_saml.png)
## Glossary[](#glossary "Permalink")
| Term | Description |
| --- | --- |
| 身份提供者 | 管理您的用户身份的服务,例如 ADFS,Okta,Onelogin 或 Ping 身份. |
| 服务提供者 | SAML 认为 GitLab 是服务提供商. |
| Assertion | 有关用户身份的一条信息,例如他们的姓名或角色. 也称为声明或属性. |
| SSO | 单一登录. |
| 断言消费者服务 URL | 在 GitLab 上的回调,在通过身份提供商成功进行身份验证后,将重定向用户. |
| Issuer | manbetx 客户端打不开如何向身份提供商识别自己. 也称为"信赖方信任标识符". |
| 证书指纹 | 用于通过检查服务器是否使用正确的证书对通信进行签名来确认通过 SAML 进行的通信是否安全. 也称为证书指纹. |
## Configuring on a self-managed GitLab instance[](#configuring-on-a-self-managed-gitlab-instance-premium-only "Permalink")
对于自我管理的 GitLab 实例,我们强烈建议改用[实例范围的 SAML OmniAuth Provider](../../../integration/saml.html) .
如果您需要允许通过多个 SAML 身份提供者进行访问,Group SAML SSO 可以提供帮助,但是作为多租户解决方案,它不太适合您管理自己的 GitLab 实例的情况.
要改为继续配置 Group SAML SSO,您需要启用`group_saml` OmniAuth 提供程序. 这可以通过以下方式完成:
* `gitlab.rb`用于 GitLab [Omnibus 安装](#omnibus-installations) .
* `gitlab/config/gitlab.yml` for [source installations](#source-installations).
### Limitations[](#limitations "Permalink")
与建议的[实例范围的 SAML](../../../integration/saml.html)相比,自管理实例上的组 SAML 受到限制. 推荐的解决方案使您可以利用:
* [LDAP compatibility](../../../administration/auth/ldap/index.html).
* [LDAP Group Sync](../index.html#manage-group-memberships-via-ldap).
* [Required groups](../../../integration/saml.html#required-groups-starter-only).
* [Admin groups](../../../integration/saml.html#admin-groups-starter-only).
* [Auditor groups](../../../integration/saml.html#auditor-groups-starter-only).
### Omnibus installations[](#omnibus-installations "Permalink")
1. 确保为 GitLab [配置了 HTTPS](../../../install/installation.html#using-https) .
2. 启用 OmniAuth 和`group_saml`在提供`gitlab.rb`
```
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_providers'] = [{ name: 'group_saml' }]
```
### Source installations[](#source-installations "Permalink")
1. 确保为 GitLab [配置了 HTTPS](../../../install/installation.html#using-https) .
2.`gitlab/config/gitlab.yml`启用 OmniAuth 和`group_saml`提供程序:
```
omniauth:
enabled: true
providers:
- { name: 'group_saml' }
```
## Troubleshooting[](#troubleshooting "Permalink")
本节包含可能遇到的问题的可能解决方案.
### SAML debugging tools[](#saml-debugging-tools "Permalink")
SAML 响应是 base64 编码的,因此我们建议使用以下浏览器插件即时对其进行解码:
* [SAML tracer for Firefox](https://addons.mozilla.org/en-US/firefox/addon/saml-tracer/)
* [Chrome SAML Panel](https://chrome.google.com/webstore/detail/saml-chrome-panel/paijfdbeoenhembfhkhllainmocckace?hl=en)
应特别注意:
* [NameID](#nameid) (我们用来标识正在登录的用户).如果该用户先前已登录,则该[ID 必须与我们存储的值匹配](#verifying-nameid) .
* `X509Certificate`的存在,我们需要使用它来验证响应签名.
* `SubjectConfirmation``Conditions` ,如果配置错误,可能会导致错误.
### Verifying configuration[](#verifying-configuration "Permalink")
For convenience, we’ve included some [example resources](../../../administration/troubleshooting/group_saml_scim.html) used by our Support Team. While they may help you verify the SAML app configuration, they are not guaranteed to reflect the current state of third-party products.
### Verifying NameID[](#verifying-nameid "Permalink")
在对组 SAML 设置进行故障排除时,任何经过身份验证的用户都可以通过访问[https://gitlab.com/api/v4/user](https://gitlab.com/api/v4/user)并检查身份下的`extern_uid`来使用 API​​来验证 NameID GitLab 是否已链接到该用户.
同样,具有适当权限的角色的组成员可以使用[成员 API](../../../api/members.html)来查看该组成员的组 SAML 身份信息.
然后可以通过使用[SAML 调试工具](#saml-debugging-tools)解码消息,将其与身份提供者发送的[NameID](#nameid)进行比较. 我们要求这些匹配项以识别用户.
### Message: “SAML authentication failed: Extern uid has already been taken”[](#message-saml-authentication-failed-extern-uid-has-already-been-taken "Permalink")
此错误表明您已以 GitLab 用户身份登录,但已将 SAML 身份链接到其他 GitLab 用户. 退出,然后尝试使用 SSO SAML 链接再次登录,该链接应使用链接的用户帐户将您登录到 GitLab.
如果您不希望通过 SAML 登录使用该 GitLab 用户,则可以[取消 GitLab 帐户与该组的 SAML 的链接](#unlinking-accounts) .
### Message: “SAML authentication failed: User has already been taken”[](#message-saml-authentication-failed-user-has-already-been-taken "Permalink")
与您登录的用户已经将 SAML 链接到另一个身份. 以下是可能的原因和解决方案:
| Cause | Solution |
| --- | --- |
| You’ve tried to link multiple SAML identities to the same user, for a given Identity Provider. | 更改用于登录的身份. 为此,请先从此 GitLab 帐户[取消链接先前的 SAML 身份](#unlinking-accounts) ,然后再尝试登录. |
### Message: “SAML authentication failed: Email has already been taken”[](#message-saml-authentication-failed-email-has-already-been-taken "Permalink")
| Cause | Solution |
| --- | --- |
| 当具有电子邮件地址的用户帐户已经存在于 GitLab 中时,但该用户没有绑定到其帐户的 SAML 身份. | 用户将需要[链接他们的帐户](#user-access-and-management) . |
### Message: “SAML authentication failed: Extern uid has already been taken, User has already been taken”[](#message-saml-authentication-failed-extern-uid-has-already-been-taken-user-has-already-been-taken "Permalink")
同时获得这两个错误表明,身份提供者提供的 NameID 大写字母与该用户的先前值不完全匹配.
可以通过配置[NameID](#nameid)返回一致的值来防止这种情况. 为单个用户解决此问题涉及[取消 GitLab 帐户中的 SAML 链接](#unlinking-accounts) ,尽管这将导致组成员身份和 Todos 丢失.
### Message: “Request to link SAML account must be authorized”[](#message-request-to-link-saml-account-must-be-authorized "Permalink")
确保尝试链接其 GitLab 帐户的用户已添加为身份提供者的 SAML 应用中的用户.
### Stuck in a login “loop”[](#stuck-in-a-login-loop "Permalink")
确保在身份提供者的 SAML 应用中将**GitLab 单一登录 URL**配置为"登录 URL"(或类似命名的字段).
另外,当用户需要[将 SAML 链接到其现有的 GitLab.com 帐户时](#linking-saml-to-your-existing-gitlabcom-account) ,请提供**GitLab 单一登录 URL,**并指示用户不要在首次登录时使用 SAML 应用.
### The NameID has changed[](#the-nameid-has-changed "Permalink")
| Cause | Solution |
| --- | --- |
| 如[NameID](#nameid)部分所述,如果 NameID 对于任何用户都发生了更改,则可以将用户锁定. 当电子邮件地址用作标识符时,这是一个常见问题. | 请按照[" SAML 身份验证失败:用户已被使用"](#message-saml-authentication-failed-user-has-already-been-taken)部分中概述的步骤进行操作. 如果许多用户受到影响,建议您使用适当的 API. |
### I need to change my SAML app[](#i-need-to-change-my-saml-app "Permalink")
用户将需要[取消链接当前的 SAML 身份](#unlinking-accounts)[并将其身份链接](#user-access-and-management)到新的 SAML 应用.
### I need additional information to configure my identity provider[](#i-need-additional-information-to-configure-my-identity-provider "Permalink")
提供商之间的许多 SAML 术语可能会有所不同. 您正在查找的信息可能以其他名称列出.
有关更多信息,请从您的身份提供商的文档开始. 查找他们的选项和示例,以了解他们如何配置 SAML. 这可以提供有关配置 GitLab 以便与这些提供程序一起使用所需的提示.
它也有助于查看我们[有关自管理 GitLab 的更详细的文档](../../../integration/saml.html) . GitLab.com 的 SAML 配置与自我管理实例的 SAML 配置基本相同. 但是,自我管理的 GitLab 实例使用支持更多选项的配置文件,如外部[OmniAuth SAML 文档中所述](https://github.com/omniauth/omniauth-saml/) . 在内部使用[`ruby-saml`库](https://github.com/onelogin/ruby-saml) ,因此我们有时在此处检查以验证不常用选项的低级详细信息.
它还可以帮助将提供商的 XML 响应与我们[用于内部测试的 XML 示例进行比较](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/spec/fixtures/saml/response.xml) .
\ No newline at end of file
# SCIM provisioning using SAML SSO for GitLab.com groups
> 原文:[https://docs.gitlab.com/ee/user/group/saml_sso/scim_setup.html](https://docs.gitlab.com/ee/user/group/saml_sso/scim_setup.html)
* [Features](#features)
* [Requirements](#requirements)
* [GitLab configuration](#gitlab-configuration)
* [Identity Provider configuration](#identity-provider-configuration)
* [Azure configuration steps](#azure-configuration-steps)
* [Configure attribute mapping](#configure-attribute-mapping)
* [Okta configuration steps](#okta-configuration-steps)
* [Okta Known Issues](#okta-known-issues)
* [User access and linking setup](#user-access-and-linking-setup)
* [Blocking access](#blocking-access)
* [Troubleshooting](#troubleshooting)
* [Azure](#azure)
* [How do I verify my SCIM configuration is correct?](#how-do-i-verify-my-scim-configuration-is-correct)
* [Testing Azure connection: invalid credentials](#testing-azure-connection-invalid-credentials)
* [Azure: (Field) can’t be blank sync error](#azure-field-cant-be-blank-sync-error)
* [How do I diagnose why a user is unable to sign in](#how-do-i-diagnose-why-a-user-is-unable-to-sign-in)
* [How do I verify user’s SAML NameId matches the SCIM externalId](#how-do-i-verify-users-saml-nameid-matches-the-scim-externalid)
* [Update or fix mismatched SCIM externalId and SAML NameId](#update-or-fix-mismatched-scim-externalid-and-saml-nameid)
* [I need to change my SCIM app](#i-need-to-change-my-scim-app)
# SCIM provisioning using SAML SSO for GitLab.com groups[](#scim-provisioning-using-saml-sso-for-gitlabcom-groups-silver-only "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9388) in [GitLab.com Silver](https://about.gitlab.com/pricing/) 11.10.
跨域身份管理系统(SCIM)是一种开放标准,可实现用户自动配置. 当为 GitLab 组配置 SCIM 时,该组的成员资格将在 GitLab 和身份提供者之间同步.
GitLab 的[SCIM API](../../../api/scim.html)实现[了 RFC7644 协议的](https://tools.ietf.org/html/rfc7644)一部分.
## Features[](#features "Permalink")
当前,可以执行以下操作:
* 建立使用者
* 更新用户(仅限 Azure)
* 停用用户
支持以下身份提供者:
* Azure
* Okta
## Requirements[](#requirements "Permalink")
* 必须配置[组单一登录](index.html) .
## GitLab configuration[](#gitlab-configuration "Permalink")
配置[组单一登录后](index.html) ,我们可以:
1. 导航到该组,然后单击**管理> SAML SSO** .
2. 单击**生成 SCIM 令牌**按钮.
3. 保存令牌和 URL,以便可以在下一步中使用它们.
[![SCIM token configuration](img/c187de65e481b5598b110fee5310776c.png)](img/scim_token.png)
## Identity Provider configuration[](#identity-provider-configuration "Permalink")
* [Azure](#azure-configuration-steps)
* [Okta](#okta-configuration-steps)
### Azure configuration steps[](#azure-configuration-steps "Permalink")
现在需要为 SCIM 设置在[Azure 的](https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/configure-single-sign-on-non-gallery-applications) [单点登录](index.html)安装过程中创建的 SAML 应用程序.
1. 检查您的 GitLab SAML 应用程序的配置,并确保**名称标识符值** (NameID)指向`user.objectid`或另一个唯一标识符. 这将与 GitLab 上使用的`extern_uid`匹配.
[![Name identifier value mapping](img/fe827d4bc97b90c3a250af05fd988fc4.png)](img/scim_name_identifier_mapping.png)
2. 通过遵循针对 Azure [支持](https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups#provisioning-users-and-groups-to-applications-that-support-scim)的 SCIM 安装文档[中支持 SCIM 的应用程序](https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups#provisioning-users-and-groups-to-applications-that-support-scim)[供应用户和组,来](https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups#provisioning-users-and-groups-to-applications-that-support-scim)设置自动供应和管理凭据.
During this configuration, note the following:
* `Tenant URL``secret token`是在[上一步中](#gitlab-configuration)检索到的.
* 如果 GitLab 的可用性有任何问题或类似错误,则通知电子邮件集将获得这些信息.
* 建议设置通知电子邮件并选中**发生故障时发送电子邮件通知**复选框.
* 对于映射,我们将仅启用"将`Synchronize Azure Active Directory Users to AppName`启用状态.
然后,您可以通过单击" **测试连接"****测试连接** . 如果连接成功,请确保在继续操作之前保存配置. 请参阅下面的[疑难解答](#troubleshooting) .
#### Configure attribute mapping[](#configure-attribute-mapping "Permalink")
1. 单击"将`Synchronize Azure Active Directory Users to AppName`以配置属性映射.
2. 单击`mail`映射旁边的**删除** .
3.`userPrincipalName`映射到`emails[type eq "work"].value`并将其**Matching 优先级**更改为`2` .
4. Map `mailNickname` to `userName`.
5. 确定 GitLab 如何唯一标识用户.
* 除非用户已经为您的组链接了 SAML,否则请使用`objectId` .
* 如果已经有链接 SAML 的用户,则使用[SAML 配置中](#azure)的" `Name ID`值. 使用其他值可能会导致用户重复并阻止用户访问 GitLab 组.
6. 创建一个新的映射:
1. 单击**添加新映射** .
2. 组:
* 上面确定的唯一标识符的**Source 属性** ,通常是`objectId` .
* **目标属性**`externalId` .
* **使用此属性****对象匹配**`Yes` .
* **匹配优先级**`1` .
7. 单击`userPrincipalName`映射,然后**使用此属性****Match 对象**更改为`No`
8. 保存您的更改. 作为参考,您可以[在故障排除参考中](../../../administration/troubleshooting/group_saml_scim.html#azure-active-directory)查看[示例配置](../../../administration/troubleshooting/group_saml_scim.html#azure-active-directory) .
**注意:**如果您使用**除** `objectId` **之外**的唯一标识符,请确保将其映射到`externalId` .
9. 在映射列表下,单击**显示高级选项>编辑 AppName 的属性列表** .
10. 确保`id`是主要字段和必填字段,并且还需要`externalId` .
**注意:** `username`既不是主要`username`也不是必需的,因为我们尚不支持 GitLab SCIM 上的该字段.
11. 保存所有屏幕,然后在**Provisioning**步骤中将`Provisioning Status`设置为`On` .
[![Provisioning status toggle switch](img/4c6172d095020a91bcf8d48c85ee4d1d.png)](img/scim_provisioning_status.png)
**注意:**您可以通过选择`Scope`来控制实际同步的内容. 例如, `Sync only assigned users and groups`将仅同步分配给应用程序的`Users and groups` ( `Users and groups` ),否则,它将同步整个 Active Directory.
一旦启用,同步细节的任何错误都出现在**供应**屏幕的底部,有一个链接到审计日志在一起.
**警告:**同步后,将映射到`id``externalId`的字段更改可能会导致配置错误,用户重复,并阻止现有用户访问 GitLab 组.
### Okta configuration steps[](#okta-configuration-steps "Permalink")
现在需要为 SCIM 设置在[Okta 的](https://developer.okta.com/docs/guides/build-sso-integration/saml2/overview/) [单点登录](index.html#okta-setup-notes)安装过程中创建的 SAML 应用程序. 在继续之前,请确保完成[GitLab 配置](#gitlab-configuration)过程.
1. 登录到 Okta.
2. 如果您在右上角看到一个**管理**按钮,请单击该按钮. 这将确保您位于"管理"区域.
**提示:**如果您在使用开发者控制台,点击**开发者控制台**顶部栏并选择**经典的 UI.** 否则,您可能看不到以下步骤中描述的按钮:
3. 在" **应用程序"**选项卡中,单击" **添加应用程序"** .
4. Search for **GitLab**, find and click on the ‘GitLab’ application.
5. 在 GitLab 应用程序概述页面上,单击**添加** .
6. 在" **应用程序可见性"下,**选中两个复选框. 当前,GitLab 应用程序不支持 SAML 身份验证,因此不应向用户显示该图标.
7. 单击**"完成"**以完成添加应用程序.
8.**供应**标签中,点击**配置 API 集成** .
9. Select **启用 API 集成**.
* 对于**基本 URL,**输入从 GitLab SCIM 配置页面获得的 URL.
* 对于**API 令牌,**输入从 GitLab SCIM 配置页面获得的 SCIM 令牌.
10. 点击"测试 API 凭据"以验证配置.
11. 单击**保存**以应用设置.
12. After saving the API integration details, new settings tabs will appear on the left. Choose **到应用**.
13. Click **Edit**.
14. 选中"为**创建用户****停用用户** **启用** "复选框.
15. Click **Save**.
16. 在" **分配"**选项卡中分配用户. 分配的用户将在您的 GitLab 组中创建和管理.
#### Okta Known Issues[](#okta-known-issues "Permalink")
Okta GitLab 应用程序当前仅支持 SCIM. 继续使用单独的 Okta [SAML SSO](index.html)配置以及上述新的 SCIM 应用程序.
## User access and linking setup[](#user-access-and-linking-setup "Permalink")
只要已经配置了[Group SAML](index.html) ,就可以在启用同步之前,在激活同步之前,现有的 GitLab.com 用户可以通过以下方式之一链接到其帐户:
* 通过更新其 GitLab.com 用户帐户中的*主要*电子邮件地址以匹配其身份提供商的用户个人资料电子邮件地址.
* 通过执行以下步骤:
1. 如果需要,登录到 GitLab.com.
2. 在身份提供商的仪表板上单击 GitLab 应用程序,或访问**GitLab 单一登录 URL** .
3. 单击**授权**按钮.
后续访问中的新用户和现有用户可以通过身份提供商的仪表板或直接访问链接来访问组.
有关角色信息,请参阅[组 SAML 页面](index.html#user-access-and-management)
### Blocking access[](#blocking-access "Permalink")
要取消对该组的访问,我们建议从身份提供商或特定应用程序的用户列表中删除该用户.
在下一次同步时,将取消提供该用户,这意味着该用户将从组中删除. 除非使用[组托管帐户,](group_managed_accounts.html)否则不会删除该用户帐户.
## Troubleshooting[](#troubleshooting "Permalink")
本节包含可能遇到的问题的可能解决方案.
### Azure[](#azure "Permalink")
#### How do I verify my SCIM configuration is correct?[](#how-do-i-verify-my-scim-configuration-is-correct "Permalink")
查看以下内容:
* 确保`id`的 SCIM 值与`NameId`的 SAML 值匹配.
* 确保`externalId`的 SCIM 值与`NameId`的 SAML 值匹配.
查看以下 SCIM 参数以获取合理的值:
* `userName`
* `displayName`
* `emails[type eq "work"].value`
#### Testing Azure connection: invalid credentials[](#testing-azure-connection-invalid-credentials "Permalink")
测试连接时,您可能会遇到错误: **您似乎输入了无效的凭据.** **请确认您使用的管理帐户信息正确** . 如果`Tenant URL``secret token`正确,请检查您的组路径中是否包含可能被视为无效 JSON 原语的字符(例如`.` ). 从组路径中删除此类字符通常可以解决该错误.
#### Azure: (Field) can’t be blank sync error[](#azure-field-cant-be-blank-sync-error "Permalink")
在检查供应的审核日志时,有时您会看到错误`Namespace can't be blank, Name can't be blank, and User can't be blank.`
这可能是由于没有为所有要映射的用户提供所有必填字段(例如名字和姓氏).
作为解决方法,请尝试其他映射:
1. 请按照上面的 Azure 映射说明进行操作.
2. 删除`name.formatted`目标属性条目.
3.`displayName`源属性更改为具有`name.formatted`目标属性.
#### How do I diagnose why a user is unable to sign in[](#how-do-i-diagnose-why-a-user-is-unable-to-sign-in "Permalink")
每当`id``externalId`更改时,SCIM 都会更新 GitLab 存储的**Identity**`extern_uid` )值. 除非 GitLab 标识( `extern_uid` )值与 SAML 发送的`NameId`匹配,否则用户将无法登录.
SCIM 还将使用此值来匹配`id`上的用户,并且只要`id``externalId`值发生更改,SCIM 就会更新此值.
将此 SCIM `id`和 SCIM `externalId`配置为与 SAML `NameId`相同的值很重要. 可以使用[调试工具](./index.html#saml-debugging-tools)跟踪 SAML 响应,并且可以根据我们的[SAML 故障排除文档](./index.html#troubleshooting)检查任何错误.
#### How do I verify user’s SAML NameId matches the SCIM externalId[](#how-do-i-verify-users-saml-nameid-matches-the-scim-externalid "Permalink")
组所有者可以在组 SAML SSO 设置页面中查看用户列表和为每个用户存储的`externalId` .
另外,在[SCIM API](../../../api/scim.html#get-a-list-of-saml-users)可用于手动检索`externalId` ,我们已经存储了用户,也被称为`external_uid``NameId` .
例如:
```
curl 'https://example.gitlab.com/api/scim/v2/groups/GROUP_NAME/Users?startIndex=1"' --header "Authorization: Bearer <your_scim_token>" --header "Content-Type: application/scim+json"
```
要查看它与作为 SAML NameId 返回的值的比较,可以让用户使用[SAML Tracer](index.html#saml-debugging-tools) .
#### Update or fix mismatched SCIM externalId and SAML NameId[](#update-or-fix-mismatched-scim-externalid-and-saml-nameid "Permalink")
无论是更改值还是需要映射到其他字段,请确保`id``externalId``NameId`都映射到同一字段.
如果 GitLab 的`externalId`与 SAML NameId 不匹配,则需要对其进行更新才能使用户登录.理想情况下,将身份标识提供者配置为进行此类更新,但是在某些情况下,它可能无法这样做. ,例如在查找用户时由于 ID 更改而失败.
如果您修改 SCIM 身份提供程序使用的字段,请务必谨慎,通常为`id``externalId` . 我们使用这些 ID 查找用户. 如果身份提供者不知道这些字段的当前值,则该提供者可以创建重复的用户.
如果用户的`externalId`不正确,并且也与 SAML NameID 不匹配,则可以通过以下方式解决该问题:
* 您可以根据[" SAML 身份验证失败:用户已被使用"](./index.html#message-saml-authentication-failed-user-has-already-been-taken)部分,使用户取消链接并重新链接自己.
* 通过在启用预配置的同时从 SAML 应用中删除所有用户,可以同时取消所有用户的链接.
* 您可以使用[SCIM API](../../../api/scim.html#update-a-single-saml-user)手动更正为用户存储的`externalId`以匹配 SAML `NameId` . 要查找用户,您需要知道与`NameId`以及当前`externalId`匹配的`NameId` .
然后可以发出手动 SCIM#update 请求,例如:
```
curl --verbose --request PATCH 'https://gitlab.com/api/scim/v2/groups/YOUR_GROUP/Users/OLD_EXTERNAL_UID' --data '{ "Operations": [{"op":"Replace","path":"externalId","value":"NEW_EXTERNAL_UID"}] }' --header "Authorization: Bearer <your_scim_token>" --header "Content-Type: application/scim+json"
```
重要的是不要将这些值更新为不正确的值,因为这将导致用户无法登录.也不要将值分配给错误的用户,这也很重要,因为这将导致用户登录到错误的帐户.
#### I need to change my SCIM app[](#i-need-to-change-my-scim-app "Permalink")
各个用户可以按照[" SAML 身份验证失败:用户已被使用"](./index.html#i-need-to-change-my-saml-app)部分中的说明进行操作.
或者,可以从 SCIM 应用程序中删除用户,这将取消所有已删除用户的链接. 然后可以为新的 SCIM 应用打开同步,以[链接现有用户](#user-access-and-linking-setup) .
\ No newline at end of file
# Subgroups
> 原文:[https://docs.gitlab.com/ee/user/group/subgroups/](https://docs.gitlab.com/ee/user/group/subgroups/)
* [Overview](#overview)
* [Creating a subgroup](#creating-a-subgroup)
* [Membership](#membership)
* [Overriding the ancestor group membership](#overriding-the-ancestor-group-membership)
* [Mentioning subgroups](#mentioning-subgroups)
* [Limitations](#limitations)
# Subgroups[](#subgroups "Permalink")
在 GitLab 9.0 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/2772) .
GitLab 支持多达 20 个级别的子组,也称为嵌套组或层次结构组. 组的级别.
通过使用子组,您可以执行以下操作:
* **独立的内部/外部组织.** 由于每个组都有自己的可见性级别,因此您可以在同一保护范围内为不同目的托管组.
* **组织大型项目.** 对于大型项目,子组可能会更容易分隔部分源代码的权限.
* **使管理人员和控制可见性变得更加容易.** 根据人们的组[成员身份,](#membership)赋予他们不同的[权限](../../permissions.html#group-members-permissions) .
有关组和项目中允许的权限的更多信息,请参见[可见性级别](../../../development/permissions.html#general-permissions) .
## Overview[](#overview "Permalink")
一个组中可以有许多子组,而同一组中只能有一个直接父组. 它类似于目录行为或嵌套项目列表:
* 第一组
* 1.1 组
* 1.2 组
* 1.2.1 组
* 1.2.2 组
* 组 1.2.2.1
在一个真实的示例中,设想维护一个 GNU / Linux 发行版,其中第一个组是发行版的名称,随后的组按如下所示拆分:
* Organization Group - GNU/Linux distro
* 类别子组-包
* (项目)配套 01
* (项目)配套 02
* 类别子组-软件
* (项目)核心
* (项目)CLI
* (项目)Android 应用
* (项目)iOS 应用
* 类别子组-红外线工具
* (项目)Ansible 剧本
Another example of GitLab as a company would be the following:
* 组织组-GitLab
* 类别子组-市场营销
* (项目)设计
* (项目)一般
* 类别子组-软件
* (项目)GitLab CE
* (项目)GitLab EE
* (项目)Omnibus GitLab
* (项目)GitLab Runner
* (项目)GitLab Pages 守护程序
* 类别子组-红外线工具
* (项目)厨师食谱
* 类别子组-执行团队
* * *
当执行诸如在子组之间转移或导入项目的操作时,其行为与在`group/project`级别执行这些操作时的行为相同.
## Creating a subgroup[](#creating-a-subgroup "Permalink")
要创建子组,您必须是该组的所有者或维护者,具体取决于该组的设置.
默认情况下,在以下位置创建的组:
* GitLab 12.2 或更高版本允许所有者和维护者创建子组.
* GitLab 12.1 或更早版本仅允许所有者创建子组.
此设置可以是所有者或管理员的任何组.
有关更多信息,请检查[权限表](../../permissions.html#group-members-permissions) . 有关不允许用作组名的单词列表,请参见[保留名称](../../reserved_names.html) .
如果将子组明确地作为所有者(或维护者,如果启用了此设置)添加到直接父组,则用户始终可以创建子组,即使管理员在其设置中禁用了组创建也是如此.
要创建一个子组:
1. 在组的仪表板中,展开" **新建项目**拆分"按钮,选择" **新建子组"** ,然后单击" **新建子组"**按钮.
[![Subgroups page](img/c3c27ff673c33bcd50004c2adb617d5f.png)](img/create_subgroup_button.png)
2. 像平常一样创建一个新组. 请注意,直接父组名称空间在" **组路径"**下是固定的. 可见性级别可以与直接父组不同.
[![Subgroups page](img/7fb24fed9f39dcdabb530523bcb8dc08.png)](img/create_new_group.png)
3. 单击**创建组**按钮,您将被带到新组的仪表板页面.
按照相同的过程创建任何后续组.
## Membership[](#membership "Permalink")
将成员添加到子组时,它们将从父组继承成员资格和权限级别. 如果您是其父级成员之一,则该模型允许访问嵌套组.
在亚组可以用乔布斯的管道[运动员](../../../ci/runners/README.html)注册到父组(S). 这意味着为父组配置的机密可用于子组作业.
此外,属于子组的项目的维护者可以查看注册到父组的 Runner 的详细信息.
成员的组权限只能由所有者更改,并且只能在添加成员的组的" **成员"**页面上进行.
您可以通过查看组的" **成员"**页面来确定成员是否从父组继承了权限.
[![Group members page](img/e18ff80d06980688066f9ec9404bd2da.png)](img/group_members.png)
从上图可以得出以下几点:
* 有 5 位成员可以访问第`four`组.
* User0 是一个 Reporter,已从组`four`的层次结构上方的组`one`继承了其权限.
* 用户 1 是一个开发并已继承组他们的权限`one/two`其是组的层级以上`four` .
* 用户 2 是一个开发并已继承组他们的权限`one/two/three`这是组的层级以上`four` .
* 对于 User3,没有任何父组的指示,因此它们属于`four`组,即我们正在检查的组.
* 管理员是**所有**子组的所有者和成员,因此,与 User3 一样,没有任何祖先组的迹象.
[](https://gitlab.com/gitlab-org/gitlab/-/issues/21727) GitLab 12.6 中,您可以使用右侧的下拉列表过滤此列表:
[![Group members filter](img/8215c374294289cd2bd24399439403fd.png)](img/group_members_filter_v12_6.png)
* **仅显示直接成员**仅显示 Administrator 和 User3,因为这是属于`four`组的唯一用户,这是我们正在检查的用户.
* **仅显示继承的成员将**显示 User0,User1 和 User2,无论层次结构上方的哪个组都是继承权限的来源.
### Overriding the ancestor group membership[](#overriding-the-ancestor-group-membership "Permalink")
**注意:**您必须是网上论坛的所有者,才能向其中添加成员.**注意:**子组中的用户权限不能低于其任何祖先组中的权限. 因此,您不能针对子组的祖先组减少用户的权限.
要覆盖用户的祖先组(他们被添加到的第一个组)的成员资格,请将该用户再次以更高的权限集添加到新的子组中.
例如,如果首先使用具有开发者权限将 User0 添加到组`group-1/group-1-1` ,则它们将在组`group-1/group-1-1`每个其他子`group-1/group-1-1`继承这些权限. 要为他们提供维护者访问`group-1/group-1-1/group1-1-1` ,您可以将他们再次添加为该维护者. 从该组中删除它们,权限将回退到祖先组的权限.
## Mentioning subgroups[](#mentioning-subgroups "Permalink")
在问题,提交和合并请求中提及组( `@group` )将通知该组的所有成员. 现在有了子组,如果您想拆分组的结构,将有更精细的支持. 提及方式与以前一样,您可以选择要通知的人群.
[![Mentioning subgroups](img/0d1089161431c5f21751458027d84535.png)](img/mention_subgroups.png)
## Limitations[](#limitations "Permalink")
以下是您无法对子组进行操作的列表:
* [GitLab 页面](../../project/pages/index.html)支持在一个子组下托管的项目,但不支持子组网站下的项目. 这意味着,尽管您可以在子组下拥有项目网站,但是只有最高级别的组才支持[组网站](../../project/pages/getting_started_part_one.html#gitlab-pages-default-domain-names) .
* 不能与作为该项目所属组的祖先的组共享项目.这意味着您只能在沿层次结构走时共享. 例如, `group/subgroup01/project` **不能**`group`共享,但是可以与`group/subgroup02``group/subgroup01/subgroup03`共享.
\ No newline at end of file
# Roadmap
> 原文:[https://docs.gitlab.com/ee/user/group/roadmap/](https://docs.gitlab.com/ee/user/group/roadmap/)
* [Timeline duration](#timeline-duration)
* [Quarters](#quarters)
* [Months](#months)
* [Weeks](#weeks)
* [Roadmap timeline bar](#roadmap-timeline-bar)
# Roadmap[](#roadmap-premium "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 10.5 中引入.
*[GitLab 12.9 中](https://gitlab.com/gitlab-org/gitlab/-/issues/198062) ,路线图已移至高级层.
*[GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/-/issues/5164)及更高版本中,史诗条显示史诗的标题,进度和完成的重量百分比.
* 里程碑出现在[GitLab 12.10](https://gitlab.com/gitlab-org/gitlab/-/issues/6802)及更高版本的路线图中.
*[GitLab 13.0 中](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/29641)删除的路线图中可见的里程碑的功能标志.
*[GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/214375)和更高版本中,该路线图还显示了组中项目的里程碑.
*[GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/212494)和更高版本中,里程碑栏可以折叠和展开.
可以以时间轴(即甘特图)的形式显示包含开始日期或截止日期的组中的史诗和里程碑. "路线图"页面显示了一个组,一个子组或一个组中的一个项目的史诗和里程碑.
在史诗栏上,您可以看到每个史诗的标题,进度和完成的重量百分比. 当您将鼠标悬停在史诗栏上时,将显示一个弹出框,其中包含史诗的标题,开始日期,到期日和完成的权重.
您可以展开包含子级史诗的史诗,以在路线图中显示其子级史诗. 您可以单击人字形( )旁边的史诗标题,以展开和折叠子史诗.
在里程碑栏的顶部,您可以看到其标题. 当您将鼠标悬停在里程碑栏或标题上时,将显示一个带有其标题,开始日期和截止日期的弹出窗口. 您也可以点击 V 形符号( )旁边的" **里程碑"**标题以切换里程碑栏的列表.
[![roadmap view](img/b44c56313892b2d78da86b3f64519a98.png)](img/roadmap_view_v13_2.png)
下拉菜单允许您仅显示打开或关闭的史诗. 默认情况下,显示所有史诗.
[![epics state dropdown](img/9fa8173be554c09a1397ae7e064f24e5.png)](img/epics_state_dropdown_v12_10.png)
您可以通过以下方式在"路线图"视图中对史诗进行排序:
* 创建日期
* 最近更新时间
* 开始日期
* 截止日期
每个选项都包含一个按钮,可在**升序****降序**之间切换排序顺序. 浏览史诗(包括[史诗列表视图)](../epics/index.html)时,排序选项和顺序仍然存在.
路线图也可以[在史诗内部可视化](../epics/index.html#roadmap-in-epics) .
## Timeline duration[](#timeline-duration "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 11.0 中引入.
*[GitLab 12.9 中](https://gitlab.com/gitlab-org/gitlab/-/issues/198062) ,时间轴已移至高级层.
路线图支持以下日期范围:
* Quarters
* 月(默认)
* Weeks
### Quarters[](#quarters "Permalink")
[![roadmap date range in quarters](img/ecb561241f5fcf0f0695ee4e29069b11.png)](img/roadmap_timeline_quarters.png)
在" **季度"**预设中,路线图显示史诗和里程碑,其开始或到期日期**在**过去的季度,当前季度和接下来的四个季度**之内****经过**过去的季度,当前季度和接下来的四个季度,其中**今天**由时间轴中的垂直红线显示. 时间轴标题上季度名称下方的子标题代表季度的月份.
### Months[](#months "Permalink")
[![roadmap date range in months](img/e255c03f63cd814a974b54b2a9eb6b02.png)](img/roadmap_timeline_months.png)
在" **月份"**预设中,路线图显示史诗和里程碑,这些史诗和里程碑的开始或到期日期**在**过去一个月,当前月份以及接下来的五个月**之内****经历**过去或六个月,其中**今天**由时间轴中的垂直红线显示. 时间轴标题上月份名称下方的子标题表示一周中开始日期(星期日)的日期. 默认情况下选择此预设.
### Weeks[](#weeks "Permalink")
[![roadmap date range in weeks](img/26b5d3ef6b515c199d6c860ac62a4671.png)](img/roadmap_timeline_weeks.png)
在" **周"**预设中,路线图显示史诗和里程碑,这些史诗和里程碑的开始日期或到期日期**在**过去一周,当前星期和接下来的四个星期**之内****经过**过去一周,当前星期和接下来的四个星期,其中**今天**由时间轴中的垂直红线显示. 时间轴标题上星期名称下方的子标题代表星期几.
## Roadmap timeline bar[](#roadmap-timeline-bar "Permalink")
时间线栏根据史诗或里程碑的开始日期和到期日期指示其大概位置.
\ No newline at end of file
# Projects
> 原文:[https://docs.gitlab.com/ee/user/project/](https://docs.gitlab.com/ee/user/project/)
* [Project features](#project-features)
* [Project integrations](#project-integrations)
* [New project](#new-project)
* [Fork a project](#fork-a-project)
* [Star a project](#star-a-project)
* [Explore projects](#explore-projects)
* [Project settings](#project-settings)
* [Import or export a project](#import-or-export-a-project)
* [Remove a project](#remove-a-project)
* [Delayed removal](#delayed-removal-premium)
* [CI/CD for external repositories](#cicd-for-external-repositories-premium)
* [Project members](#project-members)
* [Project activity](#project-activity)
* [Leave a project](#leave-a-project)
* [Project’s landing page](#projects-landing-page)
* [Redirects when changing repository paths](#redirects-when-changing-repository-paths)
* [Use your project as a Go package](#use-your-project-as-a-go-package)
* [Disable Go module features for private projects](#disable-go-module-features-for-private-projects)
* [Authenticate Go requests](#authenticate-go-requests)
* [Authenticate Git fetches](#authenticate-git-fetches)
* [Access project page with project ID](#access-project-page-with-project-id)
* [Project aliases](#project-aliases-premium-only)
* [Project APIs](#project-apis)
# Projects[](#projects "Permalink")
在 GitLab 中,您可以创建用于托管代码库的项目,将其用作问题跟踪器,在代码上进行协作,并使用内置的 GitLab CI / CD 持续构建,测试和部署应用程序.
您可以[选择](../../public_access/public_access.html)公开,内部或私有[使用](../../public_access/public_access.html)您的项目. GitLab 不限制您创建的私人项目的数量.
## Project features[](#project-features "Permalink")
在 GitLab 中创建项目时,您将可以使用大量[功能](https://about.gitlab.com/features/)
**Repositories:**
* [问题跟踪器](issues/index.html) :与您的团队讨论问题内的实现
* [发行板](issue_board.html) :组织工作流程并确定其优先级
* [多个发行板](issue_board.html#multiple-issue-boards) :允许您的团队为同一项目创建自己的工作流(发行板)
* [存储库](repository/index.html) :将代码托管在完全集成的平台中
# 项目[](#项目 "Permalink")
您可以创建用于托管代码库的项目,可以通过项目进行 Issue 管理,进行代码协作,并使用内置的 CI / CD 持续构建,测试和部署应用程序。
您可以设置您的项目为[公开](../../public_access/public_access.html)[私有](../../public_access/public_access.html),我们也不限制您创建的私有项目数量。
## 项目功能[](#项目功能 "Permalink")
创建项目时,您可以使用众多功能:
**代码仓库:**
* [Issue](issues/index.html) :与您的团队讨论问题内的实现
* [看板](issue_board.html) :组织工作流程并确定其优先级
* [代码仓库](repository/index.html) :将代码托管在完全集成的平台中
* [分支](repository/branches/index.html) :使用 Git 分支策略在代码上进行协作
* [受保护的分支机构](protected_branches.html) :防止协作者弄乱历史记录或在未经审查的情况下推送代码
* [受保护的标签](protected_tags.html) :控制谁有权创建标签,并防止意外更新或删除
* [储存库镜​​](repository/repository_mirroring.html)
* [储存库镜像](repository/repository_mirroring.html)
* [签署提交](gpg_signed_commits/index.html) :使用 GPG 签署您的提交
* [部署令牌](deploy_tokens/index.html) :管理基于项目的部署令牌,这些令牌允许永久访问存储库和 Container Registry.
* [Web IDE](web_ide/index.html)
**发出和合并请求:**
**Release 及合并请求:**
* [问题跟踪器](issues/index.html) :与您的团队讨论问题内的实现
* [Issue](issues/index.html) :与您的团队讨论问题内的实现
* [发行板](issue_board.html) :组织工作流程并确定其优先级
* [多个发行板](issue_board.html#multiple-issue-boards) :允许您的团队为同一项目创建自己的工作流(发行板)
* [合并请求](merge_requests/index.html) :应用您的分支策略并获得团队的审查
* [合并请求批准](merge_requests/merge_request_approvals.html) :实施更改之前[请求批准](merge_requests/merge_request_approvals.html)
* [修复 UI 中的合并冲突](merge_requests/resolve_conflicts.html) :直接从 GitLab UI 中使用 Git diff 工具
* [修复合并中的冲突](merge_requests/resolve_conflicts.html) :直接从网页中使用 Git diff 工具
* [审查应用程序](../../ci/review_apps/index.html) :按分支实时预览合并请求中建议的更改结果
* [标签](labels.html) :按标签整理问题并合并请求
* [时间跟踪](time_tracking.html) :跟踪估计在完成问题或合并请求上花费的时间和时间
......
......@@ -172,6 +172,25 @@
<ul class="articles">
<li class="chapter " data-level="1.3.1" data-path="docs/046.html">
<a href="docs/046.html">
子组织
</a>
</li>
</ul>
</li>
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
# 组织[](#groups "Permalink")
# 组织[](#组织 "Permalink")
通过 CODEChina 的组织,您可以:
......@@ -26,11 +26,11 @@
* 如果您具有足够的权限,还将显示组织设置的按钮
* 如果您是成员,也会看到退出该组的按钮
## 组织用户示例[](#use-cases "Permalink")
## 用户示例[](#用户示例 "Permalink")
您可以出于多种原因创建组织,例如:
* 通过在同一[名称空间](#namespaces)下组织相关项目并将成员添加到顶级组,可以以较少的步骤授予对多个项目和多个团队成员的访问权限。
* 通过在同一[命名空间](#命名空间)下组织相关项目并将成员添加到顶级组,可以以较少的步骤授予对多个项目和多个团队成员的访问权限。
* 通过创建小组并包括适当的成员,可以轻松地`@mention`所有团队中的问题并合并请求。
例如,您可以为公司成员创建一个[组织](subgroups/index.html) ,并为每个单独的团队创建一个[子组织](subgroups/index.html). 假设您创建了一个名为`company-team` ,并且在该组中为各个团队`backend-team``frontend-team``production-team`创建了子组。
......@@ -39,7 +39,7 @@
* 当您的后端团队需要前端提供帮助时,他们会添加一条评论: *" `@company-team/frontend-team`您能在这里帮助我们吗?"*
* 前端团队完成实施后,他们会评论: *" `@company-team/backend-team` ,它已经完成!* *让我们将其推送到`@company-team/production-team` !*
## 命名空间[](#namespaces "Permalink")
## 命名空间[](#命名空间 "Permalink")
在 CODEChina 中,命名空间将会是用户名称、组织名称或子组名的唯一名称。
......@@ -61,11 +61,11 @@
> 注:出于系统安全以及知识产权、商标保护等因素,我们预留了一部分namespace,如果您的用户名与预留这部分namespace有冲突,系统将会自动对您在CODEChina中的namespace进行调整。
## 组织内的Issue及合并请求[](#issues-and-merge-requests-within-a-group "Permalink")
## 组织内的Issue及合并请求[](#组织内的Issue及合并请求 "Permalink")
Issue及合并请求是项目的一部分。对于组织,您可以在单个列表视图中查看所有[Issue](../project/issues/index.html#issues-list),也可以查看组织中所有项目的[请求合并](../project/merge_requests/reviewing_and_managing_merge_requests.html#view-merge-requests-for-all-projects-in-a-group)
### 批量编辑Issue及合并请求[](#bulk-editing-issues-and-merge-requests "Permalink")
### 批量编辑Issue及合并请求[](#批量编辑Issue及合并请求 "Permalink")
有关详细信息,请参考[批量编辑Issue及合并请求](../group/bulk_editing/index.html)
......@@ -102,7 +102,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
5. 选择新建的组织 [是否公开可见](../../public_access/public_access.html)
## 为组织添加一个用户[](#add-users-to-a-group "Permalink")
## 为组织添加一个用户[](#为组织添加一个用户 "Permalink")
将多个项目放在一个组织中的好处是,您可以通过一个操作就授予某个用户访问该组织中所有项目的权限。
......@@ -119,7 +119,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
如果要提高特定项目的现有用户的访问权限,请将其作为新成员再次添加到特定项目中,并为其添加相应的项目成员角色。
## 申请加入组织[](#request-access-to-a-group "Permalink")
## 申请加入组织[](#申请加入组织 "Permalink")
作为组织所有者,您可以启用或禁用非组织成员请求访问组织的功能。该功能可以通过再**组织设置-常规设置-权限,LFS,2FS**中单击**允许用户请求访问(如果可见性是公开或内部的)**进行开启,该功能默认为启用状态。
......@@ -138,7 +138,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
[![Withdraw access request button](img/a6d5e94df0d5d50038a0909603d69933.png)](img/withdraw_access_request_button.png)
## 变更组织的所有者[](#changing-the-owner-of-a-group "Permalink")
## 变更组织的所有者[](#变更组织的所有者 "Permalink")
组织的所有关系是指至少有一个组织成员拥有组织的 [所有者权限](../permissions.html#group-members-permissions),一个组织至少需要一名所有者。
......@@ -148,7 +148,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
2. 赋予其他成员**所有者**权限;
3. 让新的所有者删除您的**所有者**权限。
## 移除组织成员[](#remove-a-member-from-the-group "Permalink")
## 移除组织成员[](#移除组织成员 "Permalink")
只有[拥有所有者](../permissions.html#group-members-permissions)权限的[用户](../permissions.html#group-members-permissions)才能管理组织成员。
......@@ -166,7 +166,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
3. (可选)选中 **取消分配给已移除的成员的 Issue及合并请求** 的复选框
4. 点击**移除成员**按钮
## 变更组织的默认保护分支[](#changing-the-default-branch-protection-of-a-group "Permalink")
## 变更组织的默认保护分支[](#变更组织的默认保护分支 "Permalink")
默认情况下,每个组织都会继承全局级别的分支保护。
......@@ -177,7 +177,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
3.**默认分支保护**下拉列表中选择所需的选项
4. 点击 **保存修改**
## 在组织中新建项目[](#add-projects-to-a-group "Permalink")
## 在组织中新建项目[](#在组织中新建项目 "Permalink")
有两种方法可以在组织中新建项目:
......@@ -189,7 +189,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
[![Select group](img/674c1579957cca4a644bc90fb8fbb2f3.png)](img/select_group_dropdown.png)
### 项目创建权限[](#default-project-creation-level "Permalink")
### 项目创建权限[](#项目创建权限 "Permalink")
默认情况下, [开发人员和维护人员](../permissions.html#group-members-permissions)可以在一个组下创建项目。
......@@ -200,7 +200,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
3.**允许创建项目**下拉列表中选择所需的选项
4. 点击 **保存修改**
## 查看组织详情[](#view-group-details "Permalink")
## 查看组织详情[](#查看组织详情 "Permalink")
组织的 **详细信息**页面包含以下内容:
......@@ -210,19 +210,19 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
* 组织的成员
## 将项目移到组织中[](#transfer-projects-into-groups "Permalink")
## 将项目移到组织中[](#将项目移到组织中 "Permalink")
了解如何[将项目转移到组织中](../project/settings/index.html#transferring-an-existing-project-into-another-namespace) .
## 与组织共享一个项目[](#sharing-a-project-with-a-group "Permalink")
## 与组织共享一个项目[](#与组织共享一个项目 "Permalink")
您可以[与组织共享您的项目](../project/members/share_project_with_groups.html),并向所有组织成员立即授予对该项目的访问权限。
或者,您可以[锁定共享与组功能](#share-with-group-lock) .
或者,您可以[锁定与组织共享功能](#锁定与组织共享功能)
## 与组织共享另一个组织[](#sharing-a-group-with-another-group "Permalink")
## 与组织共享另一个组织[](#与组织共享另一个组织 "Permalink")
[与组织共享项目](#sharing-a-project-with-a-group)类似,您可以与一个组织共享另一个组织,以使组织成员可以直接访问共享的组织(注:这对于继承的成员无效)。
[与组织共享项目](#与组织共享一个项目)类似,您可以与一个组织共享另一个组织,以使组织成员可以直接访问共享的组织(注:这对于继承的成员无效)。
要将给定的组(例如"前端")与另一个组(例如"工程")共享:
......@@ -234,7 +234,7 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
"工程"的所有成员将被添加到"前端"组织中。
## 转移组织[](#transferring-groups "Permalink")
## 转移组织[](#转移组织 "Permalink")
您可以通过以下方式转移组织:
......@@ -251,17 +251,17 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
* 转移组织时,只有组织直接成员会被转移,从之前父组织集成的成员不会被转移。如果待转移组织的所有者是继承的身份成员,则该组织转移过去后将不会设有所有者,转移组的用户将会自动成为该组的所有者。
## 组织设置[](#group-settings "Permalink")
## 组织设置[](#组织设置 "Permalink")
创建组织后,在组织详情页您可以进入**组织设置**来对组织进行设置及管理:
[![group settings](img/b98f1bb6205ce5c692946b81e8c78003.png)](img/group_settings.png)
### 常规设置[](#general-settings "Permalink")
### 常规设置[](#常规设置 "Permalink")
除了编辑您在[创建组织](#新建一个组织)时预先设置的内容外,您还可以对该组织的其他内容进行设置。
#### 变更组织的路径[](#changing-a-groups-path "Permalink")
#### 变更组织的路径[](#变更组织的路径 "Permalink")
变更组织的路径也可能会产生一些副作用,具体的请参考[重定向的行为](../project/index.html#redirects-when-changing-repository-paths)
......@@ -275,198 +275,63 @@ Issue及合并请求是项目的一部分。对于组织,您可以在单个列
4. 点击 **变更组织路径**
> **注意:**如果命名空间包含带有[Container Registry](../packages/container_registry/index.html)标记的项目,则无法重命名该空间,因为该项目无法移动。
>
> **提示:**如果要保留对原始名称空间的所有权并保护 URL 重定向,我们建议您新建一个群组并向其转移项目,而无需更改组织的路径或重命名用户名。
### Remove a group[](#remove-a-group "Permalink")
删除组及其内容:
1. 导航到您小组的 **设置>常规**页面.
2. 展开**路径,传输,删除**部分.
3. 在"删除组"部分中,单击" **删除组"**按钮.
4. 根据要求确认操作.
> **提示:**如果要保留对原始名称空间的所有权并保护 URL 重定向,我们建议您新建一个群组并向其转移项目,而无需更改组织的路径或重命名用户名。
此操作要么:
### 删除一个组织[](#删除一个组织 "Permalink")
* 删除组,并且将后台作业排队以删除该组中的所有项目.
*[GitLab 12.8 开始](https://gitlab.com/gitlab-org/gitlab/-/issues/33257) ,在[Premium 或 Silver](https://about.gitlab.com/pricing/premium/)或更高级别上,将一个组标记为删除. 默认情况下,删除将在 7 天后进行,但是可以在[实例设置中](../admin_area/settings/visibility_and_access_controls.html#default-deletion-adjourned-period-premium-only)进行更改.
您可以通过以下删除组织及其内容:
### Restore a group[](#restore-a-group-premium "Permalink")
1. 打开 **组织设置>常规设置**页面
2. 展开**高级**部分
3. 在"删除组织"部分中,单击**删除组织**按钮
4. 根据提示的内容确认删除操作
在 GitLab 12.8 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/33257) .
这个操作将会导致:
要还原标记为删除的组:
* 删除组织,并且将后台作业排队以删除该组织中的所有项目(注:删除行为默认在删除确认后的7天后进行)
1. 导航到您小组的 **设置>常规**页面.
2. 展开**路径,传输,删除**部分.
3. 在"还原组"部分中,单击" **还原组"**按钮.
### 恢复已删除组织[](#恢复已删除组织 "Permalink")
#### Enforce 2FA to group members[](#enforce-2fa-to-group-members "Permalink")
您可以通过以下操作恢复已经标记为删除的组织:
通过对所有组成员[强制执行两因素身份验证(2FA)](../../security/two_factor_authentication.html#enforcing-2fa-for-all-users-in-a-group) ,将安全层添加到您的组中.
1. 打开 **组织设置>常规设置**页面.
2. 展开**高级**部分.
3. 在"恢复组织"部分中,单击**恢复组织**按钮.
#### Share with group lock[](#share-with-group-lock "Permalink")
#### 锁定与组织共享功能[](#锁定与组织共享功能 "Permalink")
防止一个组中[的项目与另一个组共享项目,](../project/members/share_project_with_groups.html)以便对项目访问进行更严格的控制.
该功能可防止一个组织中的[项目与另一个组共享项目](../project/members/share_project_with_groups.html),以便对项目访问进行更严格的控制。
例如,假设您有两个不同的团队(A 组和 B 组)在一个项目中一起工作,并且要继承该组成员身份,您可以在 A 组和 B 组之间共享项目. **使用组锁共享**可以防止其中的任何项目该群组不会与其他群组共享,从而确保只有合适的群组成员才能访问这些项目.
例如,假设您有两个不同的团队(A 组和 B 组)在一个项目中一起工作,并且要继承该组成员身份,您可以在 A 组和 B 组之间设置共享项目。**使用组锁共享**可以防止其中的任何项目群组与其他群组共享,从而确保只有合适的群组成员才能访问这些项目。
要启用此功能,请导航至组设置页面. 选择" **使用组锁定共享"****保存组** .
要启用此功能,请打开组织设置页面, 选择 **禁止与其他组织共享项目**并点击**保存修改**
[![Checkbox for share with group lock](img/788efc08015bf62f608d47f16b49b4d7.png)](img/share_with_group_lock.png)
#### Member Lock[](#member-lock-starter "Permalink")
成员锁定使组所有者可以阻止组中所有项目的任何新项目成员资格,从而可以更严格地控​​制项目成员资格.
例如,如果要为" [审核事件"](../../administration/audit_events.html)锁定组,请启用"成员锁定"以确保在该审核期间不能修改项目成员身份.
要启用此功能:
1. 导航到组的**"设置">"常规"**页面.
2. 展开" **权限,LFS,2FA"**部分,然后选择" **成员锁"** .
3. Click **保存更改**.
[![Checkbox for membership lock](img/5460742929164e737a1b4c1990b75fc3.png)](img/member_lock.png)
这将对以前有权操作项目成员资格的所有用户禁用该选项,因此无法添加新用户. 此外,将无法通过 API 向项目添加新用户的任何请求.
#### IP access restriction[](#ip-access-restriction-premium "Permalink")
版本历史
*[GitLab Ultimate 和 Gold](https://about.gitlab.com/pricing/) 12.0 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/1985) .
* 在 13.1 中[移至](https://gitlab.com/gitlab-org/gitlab/-/issues/215410) [GitLab Premium 和 Silver](https://about.gitlab.com/pricing/) .
为了确保只有组织内的人员可以访问特定资源,您可以选择通过 IP 地址限制对组及其基础项目,问题等的访问. 这可以帮助确保特定内容不会离开场所,同时又不会阻止对整个实例的访问.
使用 CIDR 表示法将一个或多个允许的 IP 子网添加到组设置中,并且来自其他 IP 地址的任何人将无法访问受限制的内容.
目前限制适用于:
* UI.
* [从 GitLab 12.3 开始](https://gitlab.com/gitlab-org/gitlab/-/issues/12874) ,可以访问 API.
* [从 GitLab 12.4 开始](https://gitlab.com/gitlab-org/gitlab/-/issues/32113) ,Git 通过 SSH 进行操作.
为了避免意外锁定,管理员和组所有者可以访问组,而不受 IP 限制.
要启用此功能:
1. 导航到组的**"设置">"常规"**页面.
2. 展开" **权限,LFS,2FA"**部分,然后在" **允许访问以下 IP 地址"**字段中输入 IP 地址范围.
3. Click **保存更改**.
#### Allowed domain restriction[](#allowed-domain-restriction-premium "Permalink")
版本历史
*[GitLab Premium 和 Silver](https://about.gitlab.com/pricing/) 12.2 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/7297) .
* 支持指定 GitLab 13.1 中[引入的](https://gitlab.com/gitlab-org/gitlab/-/issues/33143)多个电子邮件域
通过仅将具有特定域中电子邮件地址的用户添加到组中,可以限制对组的访问.
添加您要允许的电子邮件域,并且不允许来自不同域的电子邮件用户添加到该组.
某些域不能被限制. 这些是最受欢迎的公共电子邮件域,例如:
* `gmail.com`
* `yahoo.com`
* `hotmail.com`
* `aol.com`
* `msn.com`
* `hotmail.co.uk`
* `hotmail.fr`
* `live.com`
* `outlook.com`
* `icloud.com`
要启用此功能:
1. 导航到组的**"设置">"常规"**页面.
2. 展开" **权限,LFS,2FA"**部分,然后在" **通过电子邮件限制成员身份"**字段中输入域名.
3. Click **保存更改**.
此后,将对所有添加到组中的新用户启用域检查.
#### Group file templates[](#group-file-templates-premium "Permalink")
组文件模板使您可以与组中的每个项目共享一组通用文件类型的模板. 它类似于[实例模板存储库](../admin_area/settings/instance_template_repository.html)功能,所选项目应遵循该页面上记录的相同命名约定.
您只能在组中选择项目作为模板源. 这包括与该组共享的项目,但**不包括**正在配置的组的子组或父组中的项目.
您可以为子组和直接父组配置此功能. 子组中的项目将有权访问该子组以及任何直接父组的模板.
[![Group file template dropdown](img/6c431eb1e4bc729eceb4a6a36f0ea6b0.png)](img/group_file_template_dropdown.png)
要启用此功能,请导航至组设置页面,展开" **模板"**部分,选择一个项目作为模板存储库,然后选择" **保存组"** .
[![Group file template settings](img/09e1824644c088dfbd0f2f9710fc7d77.png)](img/group_file_template_settings.png)
#### Group-level project templates[](#group-level-project-templates-premium "Permalink")
通过将组设置为模板源,在组级别定义项目模板. [了解有关组级项目模板的更多信息](custom_project_templates.html) .
#### Disabling email notifications[](#disabling-email-notifications "Permalink")
在 GitLab 12.2 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/23585) .
您可以禁用与该组相关的所有电子邮件通知,其中包括其子组和项目.
要启用此功能:
1. 导航到组的**"设置">"常规"**页面.
2. 展开**权限,LFS,2FA**部分,然后选择**禁用电子邮件通知** .
3. Click **保存更改**.
#### Disabling group mentions[](#disabling-group-mentions "Permalink")
在 GitLab 12.6 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/21301) .
您可以防止将用户添加到对话中,并且在任何人提及这些用户所属的组时通知他们.
自动完成下拉列表中会相应地显示提及被禁用的组.
这对于具有大量用户的组特别有用.
要启用此功能:
1. 导航到组的**"设置">"常规"**页面.
2. 展开" **权限"," LFS,2FA"**部分,然后选择" **禁用组提及"** .
3. Click **保存更改**.
#### Enabling delayed Project removal[](#enabling-delayed-project-removal-premium "Permalink")
在 GitLab 13.2 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/220382) .
默认情况下,组中的项目会立即删除. (可选)在[Premium 或 Silver](https://about.gitlab.com/pricing/)或更高级别上,您可以将组内的项目配置为在延迟间隔后删除.
在此间隔期间,项目将处于只读状态,并且可以根据需要还原. 间隔时间默认为 7 天,可以由管理员在[实例设置中](../admin_area/settings/visibility_and_access_controls.html#default-deletion-adjourned-period-premium-only)进行修改.
要启用延迟删除项目:
#### 禁用电子邮件通知[](#禁用电子邮件通知 "Permalink")
1. 导航到组的**"设置">"常规"**页面.
2. 展开" **权限"," LFS,2FA"**部分,然后选中" **启用延迟的项目删除"** .
3. Click **保存更改**.
您可以禁用与该组织相关的所有电子邮件通知,其中包括其子组织和项目:
### Advanced settings[](#advanced-settings "Permalink")
您可以通过以下操作来启用该功能:
* **项目** :查看该组中的所有项目,将成员添加到每个项目,访问每个项目的设置,以及删除任何项目,所有操作均在同一屏幕上进行.
* **Webhooks** :为您的组配置[webhooks](../project/integrations/webhooks.html) .
* **Kubernetes 集群集成** :将您的 GitLab 组与[Kubernetes 集群连接](clusters/index.html) .
* **审核事件** :查看该组的[审核事件](../../administration/audit_events.html) .
* **管道配额** :跟踪组的[管道配额](../admin_area/settings/continuous_integration.html) .
1. 进入**组织设置>常规设置**页面
2. 展开**权限,LFS,2FA**部分,然后选择**禁用电子邮件通知**
3. 点击 **保存修改**
#### 禁用群组提及[](#禁用群组提及 "Permalink")
#### Group push rules[](#group-push-rules-starter "Permalink")
该功能可以防止用户将群组添加到对话中,并且在任何人提及这些用户所属的组织时通知他们。
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/34370) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.8.
@功能的自动完成下拉列表中会相应地显示提及被禁用的组织,这对于具有大量用户的组织特别有用。
组推送规则允许组维护者为特定组内的新创建项目设置[推送规则](../../push_rules/push_rules.html) .
您可以通过以下操作来启用该功能:
要为组配置推送规则,请导航至 在小组的侧边栏上.
1. 进入到**组织设置>常规设置**页面
2. 展开" **权限,LFS,2FA**部分,然后选择**禁用群组提及**
3. 点击 **保存更改**
设置后,新的子组将根据以下任一条件为其设置推送规则:
### 高级设置[](#高级设置 "Permalink")
* 定义了推送规则的最接近的父组.
* 如果没有父组定义推送规则,则在实例级别设置推送规则.
\ No newline at end of file
* **项目** :查看该组中的所有项目,将成员添加到每个项目,访问每个项目的设置,以及删除任何项目,所有操作均在同一屏幕上进行
* **Webhooks** :为您的组配置[webhooks](../project/integrations/webhooks.html)
\ No newline at end of file
# Contribution Analytics
> 原文:[https://docs.gitlab.com/ee/user/group/contribution_analytics/](https://docs.gitlab.com/ee/user/group/contribution_analytics/)
* [Overview](#overview)
* [Use cases](#use-cases)
* [Using Contribution Analytics](#using-contribution-analytics)
* [Changing the period time](#changing-the-period-time)
* [Sorting by different factors](#sorting-by-different-factors)
# Contribution Analytics[](#contribution-analytics-starter "Permalink")
版本历史
*[GitLab Starter](https://about.gitlab.com/pricing/) 8.3 中引入.
* 在 GitLab 12.2 中针对子组进行了[介绍](https://gitlab.com/gitlab-org/gitlab/-/issues/3090) .
## Overview[](#overview "Permalink")
借助 Contribution Analytics,您可以大致了解小组中的以下活动:
* Issues
* 合并要求
* 推送事件
要查看贡献分析,请转至小组的" **分析">"贡献分析"**页面.
## Use cases[](#use-cases "Permalink")
* 分析您的团队在一段时间内的贡献,并为杰出贡献者提供奖金.
* 与可以从其他支持中受益的小组成员一起确定改进的机会.
## Using Contribution Analytics[](#using-contribution-analytics "Permalink")
以下是三个主要的条形图,它们说明了每个组成员的贡献数量:
* 推送事件
* 合并要求
* 已解决的问题
将鼠标悬停在每个栏上可以显示特定组成员的事件数.
[![Contribution analytics bar graphs](img/52f1314a06269a0dc317f758c8e8cdab.png)](img/group_stats_graph.png)
## Changing the period time[](#changing-the-period-time "Permalink")
您可以从以下三个期间中选择:
* 上周(默认)
* 上个月
* 最近三个月
从日历下拉列表中选择所需的时间段.
[![Contribution analytics choose period](img/0bc8de7b7d20af897fb8b38bb48663e8.png)](img/group_stats_cal.png)
## Sorting by different factors[](#sorting-by-different-factors "Permalink")
每个小组成员的贡献也以表格形式显示. 单击列标题以按该列对表进行排序:
* 成员名字
* 推送事件数
* 未解决的问题数
* 已解决的问题数
* 已打开的 MR 数
* 合并的 MR 数
* 总捐款数
[![Contribution analytics contributions table](img/0a64287e1feef55413a5a906d02ec8ea.png)](img/group_stats_table.png)
\ No newline at end of file
# Custom group-level project templates
> 原文:[https://docs.gitlab.com/ee/user/group/custom_project_templates.html](https://docs.gitlab.com/ee/user/group/custom_project_templates.html)
# Custom group-level project templates[](#custom-group-level-project-templates-premium "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/6861) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.6.
创建新[项目时](../project/index.html) ,基于自定义项目模板创建它是一个方便的选择.
用户可以在组的**"设置">"常规">"自定义项目模板"**下配置一个用作模板源的 GitLab 组.
**注意:** GitLab 管理员可以[为整个 GitLab 实例设置项目模板](../admin_area/custom_project_templates.html) .
在本部分中,您可以配置所有自定义项目模板的来源组. 如果用户有权访问组命名空间下的每个项目,则它们将对用户可用. 例如,组中的每个公共项目将对每个登录用户可用.
但是,仅当用户是项目成员时,私人项目才可用.
**注意:**只能将直接子组设置为模板源. 不能使用所选模板源的嵌套子组项目.
复制到每个新项目的存储库和数据库信息与使用[GitLab 的项目导入/导出导出](../project/settings/import_export.html)的数据相同.
\ No newline at end of file
# Epics
> 原文:[https://docs.gitlab.com/ee/user/group/epics/](https://docs.gitlab.com/ee/user/group/epics/)
* [Use cases](#use-cases)
* [Manage epics](#manage-epics)
* [Relationships between epics and issues](#relationships-between-epics-and-issues)
* [Issue health status in Epic tree](#issue-health-status-in-epic-tree-ultimate)
* [Disable Issue health status in Epic tree](#disable-issue-health-status-in-epic-tree)
* [Multi-level child epics](#multi-level-child-epics-ultimate)
* [Start date and due date](#start-date-and-due-date)
* [From milestones](#from-milestones)
* [Inherited](#inherited)
* [Roadmap in epics](#roadmap-in-epics)
* [Permissions](#permissions)
* [Thread](#thread)
* [Comment or start a thread](#comment-or-start-a-thread)
* [Activity sort order](#activity-sort-order)
* [Award emoji](#award-emoji)
* [Notifications](#notifications)
# Epics[](#epics-premium "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 10.2 中引入.
* 单级史诗在 12.8 [中移至](https://gitlab.com/gitlab-org/gitlab/-/issues/37081) [GitLab Premium](https://about.gitlab.com/pricing/) .
Epics 通过跟踪跨项目和里程碑共享主题的问题组,使您可以更有效,更轻松地管理项目组合.
[![epics list view](img/bad7cd1d32a4bbf53fc1d27dcb3dd211.png)](img/epics_list_view_v12.5.png)
## Use cases[](#use-cases "Permalink")
* 假设您的团队正在研究一项大型功能,其中涉及在一个[小组](../index.html)内不同项目中创建的不同问题的多个讨论. 借助 Epics,您可以跟踪所有有助于该单一功能的相关活动.
* 跟踪何时针对该组问题开始工作,以及何时结束目标工作.
* 深入讨论和协作功能思想和范围.
## Manage epics[](#manage-epics "Permalink")
要了解您可以使用史诗功能,请参阅[管理史诗](manage_epics.html) . 可能的动作包括:
* [Create an epic](manage_epics.html#create-an-epic)
* [Bulk-edit epics](../bulk_editing/index.html#bulk-edit-epics)
* [Delete an epic](manage_epics.html#delete-an-epic)
* [Close an epic](manage_epics.html#close-an-epic)
* [Reopen a closed epic](manage_epics.html#reopen-a-closed-epic)
* [Go to an epic from an issue](manage_epics.html#go-to-an-epic-from-an-issue)
* [Search for an epic from epics list page](manage_epics.html#search-for-an-epic-from-epics-list-page)
* [Make an epic confidential](manage_epics.html#make-an-epic-confidential)
* [Manage issues assigned to an epic](manage_epics.html#manage-issues-assigned-to-an-epic)
* [Manage multi-level child epics](manage_epics.html#manage-multi-level-child-epics-ultimate)
## Relationships between epics and issues[](#relationships-between-epics-and-issues "Permalink")
史诗与问题之间的可能关系是:
* 史诗是一个或多个问题的父代.
* 史诗是一个或多个子史诗的父代. 有关详细信息,请参见[多级子史诗](#multi-level-child-epics-ultimate) .
图 TD Parent_epic-> Issue1 Parent_epic-> Child_epic Child_epic-> Issue2
请参阅[管理分配给史诗](manage_epics.html#manage-issues-assigned-to-an-epic)的问题以获取将事件添加到史诗,重新排序问题,在史诗之间移动问题或将问题升级到史诗的步骤.
## Issue health status in Epic tree[](#issue-health-status-in-epic-tree-ultimate "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/199184) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.10.
您可以通过在问题上设置红色,琥珀色或绿色的[健康状态](../../project/issues/index.html#health-status-ultimate)来报告并快速响应单个问题和史诗的[健康](../../project/issues/index.html#health-status-ultimate) ,该状态将显示在史诗树上.
### Disable Issue health status in Epic tree[](#disable-issue-health-status-in-epic-tree "Permalink")
此功能带有默认情况下启用的功能标志. 有关禁用它的步骤,请参阅[禁用问题运行状况](../../project/issues/index.html#disable-issue-health-status) .
## Multi-level child epics[](#multi-level-child-epics-ultimate "Permalink")
在 GitLab Ultimate 11.7 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/8333) .
属于父史诗组的一个组或子组的任何史诗都可以添加. 新的儿童史诗出现在" **史诗和问题"**选项卡中史诗列表的顶部.
当您添加已链接到父级史诗的史诗时,到其当前父级的链接将被删除.
An epic can have multiple child epics up to the maximum depth of five.
请参阅[管理多级子级史诗](manage_epics.html#manage-multi-level-child-epics-ultimate) ,以了解创建,移动,重新排序或删除子[级史诗](manage_epics.html#manage-multi-level-child-epics-ultimate)的步骤.
## Start date and due date[](#start-date-and-due-date "Permalink")
要设置史诗的**开始日期****截止日期** ,请选择以下选项之一:
* **固定** :输入固定值.
* **从里程碑** :从当前分配给史诗问题的里程碑继承动态值. 请注意,GitLab 12.5 用**Inherited**替换了此选项.
* **继承** :从史诗的问题,子史诗和里程碑继承动态值(在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/7332) ,以代替**From 里程碑** ).
### From milestones[](#from-milestones "Permalink")
> 在 GitLab 12.5 中由**Inherited** [取代](https://gitlab.com/gitlab-org/gitlab/-/issues/7332) .
如果您选择" **从里程碑**开始"作为开始日期,则 GitLab 会自动将日期设置为当前分配给添加到史诗中的问题的所有里程碑中最早的开始日期. 同样,如果您选择" **从里程碑** "作为截止日期,则 GitLab 会将其设置为当前分配给这些问题的所有里程碑中的最新截止日期.
这些是动态日期,如果发生以下任何情况,将重新计算这些日期:
* 将里程碑重新分配给这些问题.
* 里程碑日期更改.
* 从史诗中添加或删除问题.
### Inherited[](#inherited "Permalink")
在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/7332)以替换**From 里程碑** .
如果选择:
* GitLab **继承**了开始日期,它将扫描所有子史诗和分配给该史诗的问题,并将开始日期设置为与找到的最早开始日期或里程碑相匹配.
* GitLab **继承**了截止日期,它将设置截止日期以匹配在其子史诗和问题中发现的最新截止日期或里程碑.
这些是动态日期,如果发生以下任何情况,则重新计算:
* 儿童史诗的日期发生了变化.
* 将里程碑重新分配给问题.
* 里程碑的日期会更改.
* 问题被添加到史诗中或从史诗中删除.
由于史诗的日期可以从其子级继承日期,因此开始日期和到期日期从底部传播到顶部. 如果最低级别的子级史诗的开始日期发生更改(成为其父级史诗最早的开始日期),则父级史诗的开始日期将反映该更改,并将向上传播到顶部的史诗级.
## Roadmap in epics[](#roadmap-in-epics "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7327) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.10.
如果你的史诗包含一个或多个[孩子史诗](#multi-level-child-epics-ultimate)其中有一个[开始或到期日](#start-date-and-due-date) ,一个[路线图,](../roadmap/index.html)孩子史诗的观点是父史诗中列出.
[![Child epics roadmap](img/35e89eba4dfc37f409cb295b0c8b13d1.png)](img/epic_view_roadmap_v12_9.png)
## Permissions[](#permissions "Permalink")
如果您有权查看史诗,并且有权查看已添加到该史诗的问题,则可以在史诗问题列表中查看该问题.
如果您有权编辑史诗并且有权编辑问题,则可以将问题添加到史诗中或从史诗中删除.
请注意,对于给定的组,所有项目的可见性必须与该组相同,或限制较少. 这意味着,如果您有权访问某个小组的史诗,那么您已经可以访问该小组的项目.
您也可以查阅[组权限表](../../permissions.html#group-members-permissions) .
## Thread[](#thread "Permalink")
* 评论:通过在该史诗中的评论中发布评论来协作. 这些文本字段也完全支持[GitLab Flavored Markdown](../../markdown.html#gitlab-flavored-markdown-gfm) .
## Comment or start a thread[](#comment-or-start-a-thread "Permalink")
写下评论后,您可以:
* 点击**评论** ,您的评论将被发布.
* 单击" **开始主题"** ,您将在该史诗般的讨论中开始一个主题.
### Activity sort order[](#activity-sort-order "Permalink")
[Introduced](https://https://gitlab.com/gitlab-org/gitlab/-/issues/214364) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.2.
您可以颠倒默认顺序,并与按顶部的最新项目排序的活动供稿进行交互. 您的首选项通过本地存储保存,并自动应用于您查看的每个问题.
要更改活动排序顺序,请单击**最旧的第一个**下拉菜单,然后选择最旧或最新的项目以首先显示.
[![Issue activity sort order dropdown button](img/806d03909b4b194f095b4c69e175868d.png)](img/epic_activity_sort_order_v13_2.png)
## Award emoji[](#award-emoji "Permalink")
您可以为该史诗或其评论[授予表情符号](../../award_emojis.html) .
## Notifications[](#notifications "Permalink")
您可以[打开通知](../../profile/notifications.html)[通知](../../profile/notifications.html)史诗事件.
\ No newline at end of file
# Manage epics
> 原文:[https://docs.gitlab.com/ee/user/group/epics/manage_epics.html](https://docs.gitlab.com/ee/user/group/epics/manage_epics.html)
* [Create an epic](#create-an-epic)
* [Create an epic from the epic list](#create-an-epic-from-the-epic-list)
* [Access the New Epic form](#access-the-new-epic-form)
* [Elements of the New Epic form](#elements-of-the-new-epic-form)
* [Edit an epic](#edit-an-epic)
* [Bulk-edit epics](#bulk-edit-epics)
* [Delete an epic](#delete-an-epic)
* [Close an epic](#close-an-epic)
* [Reopen a closed epic](#reopen-a-closed-epic)
* [Go to an epic from an issue](#go-to-an-epic-from-an-issue)
* [Search for an epic from epics list page](#search-for-an-epic-from-epics-list-page)
* [Make an epic confidential](#make-an-epic-confidential)
* [Disable confidential epics](#disable-confidential-epics-premium-only)
* [Manage issues assigned to an epic](#manage-issues-assigned-to-an-epic)
* [Add an issue to an epic](#add-an-issue-to-an-epic)
* [Add an existing issue to an epic](#add-an-existing-issue-to-an-epic)
* [Create an issue from an epic](#create-an-issue-from-an-epic)
* [Remove an issue from an epic](#remove-an-issue-from-an-epic)
* [Reorder issues assigned to an epic](#reorder-issues-assigned-to-an-epic)
* [Move issues between epics](#move-issues-between-epics-ultimate)
* [Promote an issue to an epic](#promote-an-issue-to-an-epic)
* [Manage multi-level child epics](#manage-multi-level-child-epics-ultimate)
* [Add a child epic to an epic](#add-a-child-epic-to-an-epic)
* [Move child epics between epics](#move-child-epics-between-epics)
* [Reorder child epics assigned to an epic](#reorder-child-epics-assigned-to-an-epic)
* [Remove a child epic from a parent epic](#remove-a-child-epic-from-a-parent-epic)
# Manage epics[](#manage-epics-premium "Permalink")
该页面收集了有关[史诗](index.html)或与[史诗](index.html)有关的所有操作的说明.
## Create an epic[](#create-an-epic "Permalink")
每个组中都有史诗的分页列表,您可以从中创建新的史诗. 史诗列表还包括所选组中所有子组的史诗. 在您的论坛页面中:
### Create an epic from the epic list[](#create-an-epic-from-the-epic-list "Permalink")
要从史诗列表中创建史诗,请分组:
1.**史诗** .
2. Click **新史诗**.
3. 输入描述性标题.
4. Click **创造史诗**.
### Access the New Epic form[](#access-the-new-epic-form "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/211533) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.2.
有两种方法可以进入"新史诗"表格并在您所在的小组中创建史诗:
* 在您小组的史诗中,点击**新建史诗** .
* 在任何地方的顶部菜单中,单击**加号** ( ) **>新史诗** .
[![New epic from an open epic](img/4c0cef07da8190af4f517bd8d336cb5b.png)](img/new_epic_from_groups_v13.2.png)
### Elements of the New Epic form[](#elements-of-the-new-epic-form "Permalink")
在创建新的史诗时,您可以填写以下字段:
* Title
* Description
* 保密性复选框
* Labels
* 开始日期
* 截止日期
[![New epic form](img/a48fc7b7ef95b54bd7ec66c17cad7dbb.png)](img/new_epic_form_v13.2.png)
## Edit an epic[](#edit-an-epic "Permalink")
创建史诗之后,可以编辑更改以下详细信息:
* Title
* Description
* 开始日期
* 截止日期
* Labels
编辑史诗的标题或说明:
1. 点击**修改标题和说明** 按钮.
2. 进行更改.
3. Click **保存更改**.
要编辑史诗的开始日期,截止日期或标签,请执行以下操作:
1. 单击史诗侧边栏中每个部分旁边的" **编辑"** .
2. 选择日期或标签为您的史诗.
## Bulk-edit epics[](#bulk-edit-epics "Permalink")
您可以一次编辑多个史诗. 要了解操作方法,请访问[批量编辑问题,史诗和在组级别合并请求](../bulk_editing/index.html#bulk-edit-epics) .
## Delete an epic[](#delete-an-epic "Permalink")
**注意:**要删除史诗,您需要成为组/子组的[所有者](../../permissions.html#group-members-permissions) .
编辑史诗的描述时,单击" **删除"**按钮以删除史诗. 出现一个模态来确认您的动作.
删除史诗会从系统中与其关联的史诗中释放所有现有问题.
## Close an epic[](#close-an-epic "Permalink")
每当您决定不再需要该史诗时,请通过以下方法关闭该史诗:
* 单击**关闭史诗**按钮.
[![close epic - button](img/dce9a8c36e06896553bd80f313c3a756.png)](img/button_close_epic.png)
* 使用[快速动作](../../project/quick_actions.html) .
## Reopen a closed epic[](#reopen-a-closed-epic "Permalink")
您可以重新打开因以下原因而关闭的史诗:
* 单击**重新打开史诗**按钮.
[![reopen epic - button](img/ed7d654fa8271709dfa6c567b48c5de6.png)](img/button_reopen_epic.png)
* 使用[快速动作](../../project/quick_actions.html) .
## Go to an epic from an issue[](#go-to-an-epic-from-an-issue "Permalink")
如果问题属于史诗,则可以使用问题侧栏中的链接导航到包含该史诗.
[![containing epic](img/8edd1cbf476ddc76f3df25fdeff8b55c.png)](img/containing_epic.png)
## Search for an epic from epics list page[](#search-for-an-epic-from-epics-list-page "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 10.5 中引入.
* [已移至](https://gitlab.com/gitlab-org/gitlab/-/issues/37081) GitLab 12.8 中的[Premium](https://about.gitlab.com/pricing/)层.
您可以根据以下参数,使用过滤的搜索栏(类似于"问题和合并请求"的搜索栏)从史诗列表中搜索史诗:
* 标题或说明
* 作者名称/用户名
* Labels
[![epics search](img/c77b45147112088b7940cb4ebcc5f4a6.png)](img/epics_search.png)
要进行搜索,请转到史诗列表,然后单击" **搜索或过滤结果** "字段. 它将显示一个下拉菜单,您可以从中添加一个作者. 您也可以输入纯文本以按史诗标题或描述进行搜索. 完成后,按键盘上的`Enter`键过滤列表.
您还可以按以下方式对史诗列表进行排序:
* 创建日期
* 最近更新时间
* 开始日期
* 截止日期
每个选项都包含一个按钮,可以在**升序****降序**之间切换顺序. 无论您浏览史诗,包括" [路线图"](../roadmap/index.html) ,都可以保存和使用排序选项和顺序.
[![epics sort](img/57b0d20488fb6cdd9ed2e8f573fcb7bb.png)](img/epics_sort.png)
## Make an epic confidential[](#make-an-epic-confidential "Permalink")
版本历史
*[GitLab Premium](https://about.gitlab.com/pricing/) 13.0 中在功能标志后面[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/213068) ,默认情况下禁用.
*[GitLab Premium](https://about.gitlab.com/pricing/) 13.2 中[默认启用](https://gitlab.com/gitlab-org/gitlab/-/issues/224513) .
创建史诗时,可以选中**"将此史诗设为机密"**复选框,使其成为机密文件.
### Disable confidential epics[](#disable-confidential-epics-premium-only "Permalink")
机密史诗功能部署在**默认情况下启用**的功能标志的后面. [有权访问 GitLab Rails 控制台的 GitLab 管理员](../../../administration/feature_flags.html)可以为您的自我管理实例禁用它.
禁用它:
```
Feature.disable(:confidential_epics)
```
## Manage issues assigned to an epic[](#manage-issues-assigned-to-an-epic "Permalink")
### Add an issue to an epic[](#add-an-issue-to-an-epic "Permalink")
您可以将现有问题添加到史诗中,也可以创建一个自动添加到史诗中的新问题.
#### Add an existing issue to an epic[](#add-an-existing-issue-to-an-epic "Permalink")
属于史诗组或史诗子组中任何项目的现有问题都可以添加到史诗中. 新添加的问题显示在" **史诗和问题"**选项卡中问题列表的顶部.
史诗包含一个问题列表,一个问题最多可以与一个史诗相关联. 当您添加已链接到史诗的问题时,该问题会自动与其当前父级取消链接.
要将问题添加到史诗中:
1. 点击**添加**下拉按钮.
2. Click **添加问题**.
3. 使用以下两种方法之一确定要添加的问题:
* 粘贴问题的链接.
* 通过输入问题标题的一部分来搜索所需的问题,然后选择所需的匹配项(在[GitLab 12.5 中](https://gitlab.com/gitlab-org/gitlab/-/issues/9126)引入).
如果要添加多个问题,请按`空格键` ,然后重复此步骤.
4. Click **Add**.
#### Create an issue from an epic[](#create-an-issue-from-an-epic "Permalink")
在 GitLab 12.7 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/5419) .
从史诗中创建问题使您可以将注意力集中在史诗的更广泛的上下文上,同时将工作划分成较小的部分.
要从史诗中创建问题:
1. 在史诗页面上的" **史诗和问题"下** ,点击**添加**下拉按钮,然后选择**创建新问题** .
2.**标题下** ,输入新期刊的标题.
3.**项目**下拉列表中,选择应在其中创建问题的项目.
4. Click **创建问题**.
### Remove an issue from an epic[](#remove-an-issue-from-an-epic "Permalink")
在史诗的详细信息页面上时,可以从史诗中删除问题. 从史诗中删除问题后,该问题将不再与此史诗相关联.
要从史诗中删除问题:
1. 点击**删除** ( )按钮旁边要删除的问题. 出现**删除问题**警告.
2. Click **Remove**.
[![List of issues assigned to an epic](img/8c47dc71d95554edf7da34adb5acc575.png)](img/issue_list_v13_1.png)
### Reorder issues assigned to an epic[](#reorder-issues-assigned-to-an-epic "Permalink")
在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/9367) .
新问题出现在" **史诗和问题"**选项卡中的列表顶部. 您可以通过拖动来重新排列问题列表.
要重新分配分配给史诗的问题:
1. 转到" **史诗和问题"**标签.
2. 将问题拖到所需的顺序.
### Move issues between epics[](#move-issues-between-epics-ultimate "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33039) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0.
新问题出现在" **史诗和问题"**选项卡中的列表顶部. 您可以将问题从一部史诗转移到另一部史诗.
要将问题移至另一个史诗:
1. 转到" **史诗和问题"**标签.
2. 将问题拖到所需的父级史诗中.
### Promote an issue to an epic[](#promote-an-issue-to-an-epic "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 11.6 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/3777) .
* 在 12.8 中[移至](https://gitlab.com/gitlab-org/gitlab/-/issues/37081) [GitLab Premium](https://about.gitlab.com/pricing/) .
如果您具有关闭问题并在直接父组中创建史诗的必要[权限](../../permissions.html) ,则可以使用`/promote` [快速操作](../../project/quick_actions.html#quick-actions-for-issues-merge-requests-and-epics)将问题升级为史诗. 仅可以促进小组项目中的问题. 尝试提出机密问题时,将显示警告. 向史诗宣传机密问题将使与该问题相关的所有信息公开,因为史诗对小组成员是公开的.
执行快速操作时:
* 在与问题项目所在的组中创建一个史诗.
* 通知该问题的订户该史诗已创建.
以下问题元数据将被复制到史诗中:
* 标题,描述,活动/评论主题.
* Upvotes/downvotes.
* Participants.
* Group labels that the issue already has.
## Manage multi-level child epics[](#manage-multi-level-child-epics-ultimate "Permalink")
### Add a child epic to an epic[](#add-a-child-epic-to-an-epic "Permalink")
要将儿童史诗添加到史诗中:
1. 点击**添加**下拉按钮.
2. Click **添加史诗**.
3. 使用以下两种方法之一确定要添加的史诗:
* 粘贴史诗的链接.
* 通过输入史诗标题的一部分来搜索所需的问题,然后选择所需的匹配项(在[GitLab 12.5 中](https://gitlab.com/gitlab-org/gitlab/-/issues/9126)引入).
如果要添加多个史诗,请按`空格键`并重复此步骤.
4. Click **Add**.
### Move child epics between epics[](#move-child-epics-between-epics "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33039) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0.
新的儿童史诗出现在" **史诗和问题"**选项卡中的列表顶部. 您可以将儿童史诗从一个史诗转移到另一个史诗. 当您添加已链接到父级史诗的史诗时,到其当前父级的链接将被删除. 问题和儿童史诗不能混在一起.
要将儿童史诗移至另一史诗:
1. 转到" **史诗和问题"**标签.
2. 将史诗拖到所需的父史诗中.
### Reorder child epics assigned to an epic[](#reorder-child-epics-assigned-to-an-epic "Permalink")
在 GitLab 12.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/9367) .
新的儿童史诗出现在" **史诗和问题"**选项卡中的列表顶部. 您可以对子史诗列表进行重新排序.
要重新分配分配给史诗的子史诗:
1. 转到" **史诗和问题"**标签.
2. 将史诗拖到所需的顺序.
### Remove a child epic from a parent epic[](#remove-a-child-epic-from-a-parent-epic "Permalink")
要从父级史诗中删除子级史诗:
1. 单击父级史诗列表中的`x`按钮.
2.**删除史诗**警告消息,请单击**删除** .
\ No newline at end of file
> 原文:[https://docs.gitlab.com/ee/user/group/dependency_proxy/](https://docs.gitlab.com/ee/user/group/dependency_proxy/)
\ No newline at end of file
# Group Import/Export
> 原文:[https://docs.gitlab.com/ee/user/group/settings/import_export.html](https://docs.gitlab.com/ee/user/group/settings/import_export.html)
* [Important Notes](#important-notes)
* [Exported Contents](#exported-contents)
* [Exporting a Group](#exporting-a-group)
* [Between CE and EE](#between-ce-and-ee)
* [Importing the group](#importing-the-group)
* [Version history](#version-history)
* [Rate Limits](#rate-limits)
# Group Import/Export[](#group-importexport "Permalink")
版本历史
* 在 GitLab 13.0 中作为实验功能[引入](https://gitlab.com/groups/gitlab-org/-/epics/2888) . 在将来的版本中可能会更改.
可以将在任何 GitLab 实例或 GitLab.com 上运行的现有组及其所有相关数据导出,并移至新的 GitLab 实例.
如果启用了组导入选项,则会显示**GitLab 导入/导出**按钮.
也可以看看:
* [Group Import/Export API](../../../api/group_import_export.html)
* [Project Import/Export](../../project/settings/import_export.html)
* [Project Import/Export API](../../../api/project_import_export.html)
要启用 GitLab 导入/导出:
1. 导航 **管理区>** **设置>可见性和访问控制** .
2. 滚动到**导入源**
3. 启用所需的**导入源**
## Important Notes[](#important-notes "Permalink")
请注意以下几点:
* 导出存储在一个临时[共享目录中](../../../development/shared_files.html) ,并由特定工作人员每 24 小时删除一次.
* 要保留导入项目中的组级关系,请首先运行"组导入/导出",以允许将项目导入所需的组结构中.
* 除非导入到父组,否则将为导入的组提供`private`可见性级别.
* 如果导入父组,则除非另有限制,否则子组将继承相同级别的可见性.
* 若要保留成员列表及其对导入组的各自权限,请查看这些组中的用户. 在导入所需的组之前,请确保这些用户存在.
### Exported Contents[](#exported-contents "Permalink")
将导出以下项目:
* Milestones
* Labels
* 董事会和董事会名单
* Badges
* 子组(包括所有上述数据)
* Epics
* Events
以下项目将不会导出:
* Projects
* 跑步者令牌
* SAML 发现令牌
**注意:**有关在组导出中[`import_export.yml`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/import_export/group/import_export.yml)的特定数据的更多详细信息,请参阅[`import_export.yml`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/import_export/group/import_export.yml)文件.
## Exporting a Group[](#exporting-a-group "Permalink")
1. 导航到您的论坛的主页.
2. 请点击 侧栏中的**设置** .
3. 在" **高级"**部分中,单击" **导出组"**按钮.
[![Export group panel](img/222aa4a1e09c2312446d0aa324c6f193.png)](img/export_panel_v13_0.png)
4. 生成导出后,您应该会收到一封电子邮件,其中包含指向压缩的 tar 存档中[导出内容](#exported-contents)的链接,其中的内容为 JSON 格式.
5. 或者,您可以返回项目设置,然后点击**下载导出**从那里下载文件,或者点击**重新**生成导出来生成一个新文件.
**注意:**可以由管理员设置最大导入文件大小,默认为 50MB. 作为管理员,您可以修改最大导入文件大小. 为此,请在" [应用程序设置" API](../../../api/settings.html#change-application-settings)或" [管理界面"中](../../admin_area/settings/account_and_limit_settings.html)使用`max_import_size`选项.
### Between CE and EE[](#between-ce-and-ee "Permalink")
您可以将组从[Community Edition](https://about.gitlab.com/install/ce-or-ee/)导出[到 Enterprise Edition](https://about.gitlab.com/install/ce-or-ee/) ,反之亦然.
如果要将组从企业版导出到社区版,则可能会丢失仅保留在企业版中的数据. 有关更多信息,请参阅[从 EE 降级为 CE](../../../README.html) .
## Importing the group[](#importing-the-group "Permalink")
1. 通过顶部导航栏中的`+`按钮或现有组页面上的" **新建子组"**按钮导航到" **新建**组"页面.
[![Navigation paths to create a new group](img/fad2df1fa4371b39b3ea1032a8ad236c.png)](img/new_group_navigation_v13_1.png)
2. 在"新建组"页面上,选择" **导入组"**选项卡.
[![Fill in group details](img/d15d948fc7d1b6e5c8dabacbe7c2fcc9.png)](img/import_panel_v13_1.png)
3. 输入您的群组名称.
4. 接受或修改关联的组 URL.
5. Click **选择文件**
6. 在" [导出组"](#exporting-a-group)部分中选择您导出的文件.
7. 单击**导入组**开始导入. 您新导入的组页面将很快出现.
## Version history[](#version-history "Permalink")
GitLab 可以导入从其他 GitLab 部署导出的捆绑软件. 此功能仅限于之前的两个 GitLab [次要](../../../policy/maintenance.html#versioning)发行版,这与我们的[安全发布](../../../policy/maintenance.html#security-releases)流程类似.
例如:
| 当前版本 | 可以导入从 |
| --- | --- |
| 13.0 | 13.0, 12.10, 12.9 |
| 13.1 | 13.1, 13.0, 12.10 |
## Rate Limits[](#rate-limits "Permalink")
为了避免滥用,用户的速率仅限于:
| 请求类型 | Limit |
| --- | --- |
| Export | 每 5 分钟 30 个小组 |
| 下载导出 | 每 10 分钟每组 10 次下载 |
| Import | 每 5 分钟 30 个小组 |
\ No newline at end of file
# Insights
> 原文:[https://docs.gitlab.com/ee/user/group/insights/](https://docs.gitlab.com/ee/user/group/insights/)
* [View your group’s Insights](#view-your-groups-insights)
* [Configure your Insights](#configure-your-insights)
* [Permissions](#permissions)
# Insights[](#insights-ultimate "Permalink")
[Introduced](https://gitlab.com/groups/gitlab-org/-/epics/725) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.0.
配置对您的团队重要的洞察力,以探索数据,例如分类诊断,在给定时间段内创建/关闭的问题,合并请求的平均时间等.
[![Insights example stacked bar chart](img/9f4a21c247f193621ddd2f709c4536d7.png)](img/insights_example_stacked_bar_chart.png)
## View your group’s Insights[](#view-your-groups-insights "Permalink")
您可以通过点击左侧边栏中的**Analytics(分析)> Insights**链接来访问组的 Insights:
[![Insights sidebar link](img/098a5864447e44da06b72051af59b294.png)](img/insights_sidebar_link_v12_8.png)
## Configure your Insights[](#configure-your-insights "Permalink")
导航到组的**"设置">"常规"** ,展开" **Insights"** ,然后选择包含`.gitlab/insights.yml`配置文件的项目:
[![group insights configuration](img/6e3e1e9c7013cd330bcb6380ef19ddf9.png)](img/insights_group_configuration.png)
如果未设置任何配置,将使用[默认配置文件](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/fixtures/insights/default.yml) .
有关`.gitlab/insights.yml`配置文件的更多详细信息,请参见[Project 的 Insights 文档](../../project/insights/index.html) .
## Permissions[](#permissions "Permalink")
如果您有权查看组,则可以查看其见解.
**注意:**您无法访问的问题或合并请求(因为您无法访问它们所属的项目,或者因为它们是机密的)会从 Insights 图表中过滤掉.
您也可以查阅[组权限表](../../permissions.html#group-members-permissions) .
\ No newline at end of file
# Issues Analytics
> 原文:[https://docs.gitlab.com/ee/user/group/issues_analytics/](https://docs.gitlab.com/ee/user/group/issues_analytics/)
* [Drill into the information](#drill-into-the-information)
# Issues Analytics[](#issues-analytics-premium "Permalink")
版本历史
*[GitLab Premium](https://about.gitlab.com/pricing/) 11.5 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/7478) .
* 在项目级别的[GitLab Premium](https://about.gitlab.com/pricing/) 12.9 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/196561) .
问题分析是一个条形图,用于说明每月创建的问题数. 默认时间跨度为 13 个月,其中包括当月以及之前的 12 个月.
要访问图表,请导航至您的组或项目侧边栏,然后选择 **分析>问题分析** .
将鼠标悬停在每个栏上可以查看总数.
要缩小图中包含的问题的范围,请在" **搜索或过滤结果..."**字段中输入您的条件. 可以在以下列表中输入条件或从菜单中选择条件:
* Author
* Assignee
* Milestone
* Label
* 我的反应
* Weight
您可以通过设置 URL 参数来更改显示的总月数. 例如, `https://gitlab.com/groups/gitlab-org/-/issues_analytics?months_back=15` //gitlab.com/groups/gitlab-org/-/issues_analytics?months_back `https://gitlab.com/groups/gitlab-org/-/issues_analytics?months_back=15` 15 显示 GitLab.org 组中图表的总计 15 个月.
[![Issues created per month](img/7a1046341466c144b96bc573f0a16114.png)](img/issues_created_per_month_v12_8.png)
## Drill into the information[](#drill-into-the-information "Permalink")
在 GitLab 13.1 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/196547) .
您可以通过浏览图表下方的表格来检查各个问题的详细信息.
该图表显示基于全局页面筛选器的前 100 个问题.
[![Issues table](img/c07889c4060a55eccd0e5dde9cb54f74.png)](img/issues_table_v13_1.png)
\ No newline at end of file
# Iterations
> 原文:[https://docs.gitlab.com/ee/user/group/iterations/](https://docs.gitlab.com/ee/user/group/iterations/)
* [View the iterations list](#view-the-iterations-list)
* [Create an iteration](#create-an-iteration)
* [Edit an iteration](#edit-an-iteration)
* [Enable Iterations](#enable-iterations-core-only)
# Iterations[](#iterations-starter "Permalink")
版本历史
*[GitLab Starter](https://about.gitlab.com/pricing/) 13.1 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/214713) .
* 它部署在功能标记后面,默认情况下处于禁用状态.
* 在 GitLab.com 上已禁用.
* 可以按组启用或禁用
* 不建议将其用于生产.
* 要在 GitLab 自管实例中使用它,请让 GitLab 管理员[启用它](#enable-iterations-core-only) .
迭代是跟踪一段时间内问题的一种方法. 这使团队可以跟踪速度和波动性指标. 迭代可与[里程碑](../../project/milestones/index.html)一起使用,以在不同时间段内进行跟踪.
例如,您可以使用:
* 计划递增的里程碑,跨越 8 到 12 周.
* Sprint 的迭代,历时 2 周.
在 GitLab 中,迭代类似于里程碑,但有一些区别:
* 迭代仅适用于组.
* 一组一次只能有一个活动的迭代.
* 迭代需要开始日期和结束日期.
* 迭代日期范围不能重叠.
## View the iterations list[](#view-the-iterations-list "Permalink")
要查看迭代列表,请分组访问 **问题>迭代** . 从那里您可以创建一个新的迭代或单击一个迭代以获得更详细的视图.
## Create an iteration[](#create-an-iteration "Permalink")
**注意:**您需要具有开发人员[权限](../../permissions.html)或更高[权限](../../permissions.html)才能创建迭代.
要创建迭代:
1. 在一个小组中,转到 **问题>迭代** .
2. Click **新迭代**.
3. 输入标题,描述(可选),开始日期和截止日期.
4. 单击**创建迭代** . 将打开"迭代详细信息"页面.
## Edit an iteration[](#edit-an-iteration "Permalink")
版本历史
*[GitLab Starter](https://about.gitlab.com/pricing/) 13.2 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/218277) .
**注意:**您需要开发者[权限](../../permissions.html)或更高[权限](../../permissions.html)才能编辑迭代.
要编辑迭代,请点击三点菜单( )> **编辑迭代** .
## Enable Iterations[](#enable-iterations-core-only "Permalink")
GitLab 迭代功能正在开发中,尚未准备好用于生产. 它部署在**默认情况下禁用**的功能标志的后面. [有权访问 GitLab Rails 控制台的 GitLab 管理员](../../../administration/feature_flags.html)可以为您的实例启用它. `:group_iterations`可以按组启用或禁用.
要启用它:
```
# Instance-wide
Feature.enable(:group_iterations)
# or by group
Feature.enable(:group_iterations, Group.find(<group id>))
```
禁用它:
```
# Instance-wide
Feature.disable(:group_iterations)
# or by group
Feature.disable(:group_iterations, Group.find(<group id>))
```
\ No newline at end of file
# Public access
> 原文:[https://docs.gitlab.com/ee/public_access/public_access.html](https://docs.gitlab.com/ee/public_access/public_access.html)
* [Visibility of projects](#visibility-of-projects)
* [Public projects](#public-projects)
* [Internal projects](#internal-projects)
* [Private projects](#private-projects)
* [How to change project visibility](#how-to-change-project-visibility)
* [Visibility of groups](#visibility-of-groups)
* [Visibility of users](#visibility-of-users)
* [Visibility of pages](#visibility-of-pages)
* [Restricting the use of public or internal projects](#restricting-the-use-of-public-or-internal-projects)
* [Reducing visibility](#reducing-visibility)
# Public access[](#public-access "Permalink")
GitLab 允许[所有者](../user/permissions.html)将项目的可见性设置为**public****internal****private** . 这些可见性级别会影响谁可以在公共访问目录(GitLab 实例下的`/public` )中查看项目,例如[https://gitlab.com/public](https://gitlab.com/public)
## Visibility of projects[](#visibility-of-projects "Permalink")
### Public projects[](#public-projects "Permalink")
可以克隆公共项目, **而无需**通过 HTTPS **进行任何**身份验证.
它们将在所有用户的公共访问目录( `/public` )中列出.
**任何登录的用户**都将对存储库具有[来宾权限](../user/permissions.html) .
### Internal projects[](#internal-projects "Permalink")
任何登录用户都可以克隆内部项目.
它们也将列在公共访问目录( `/public` )中,但仅适用于登录用户.
任何登录的用户都将对存储库具有[来宾权限](../user/permissions.html) .
**注意:**从 2019 年 7 月开始,GitLab.com 上的新项目,组和摘要的`` `Internal`可见性''设置被禁用. 使用" `Internal`可见性"设置的现有项目,组和摘录保留此设置. 您可以在[相关问题中](https://gitlab.com/gitlab-org/gitlab/-/issues/12388)阅读有关更改的更多信息.
### Private projects[](#private-projects "Permalink")
私人项目只能由项目成员(来宾除外)克隆和查看.
它们将仅出现在项目成员的公共访问目录( `/public` )中.
### How to change project visibility[](#how-to-change-project-visibility "Permalink")
1. 转到项目的**"设置"** .
2. 将**可见性级别**更改为公共,内部或私有.
## Visibility of groups[](#visibility-of-groups "Permalink")
**注意:** [从](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3323) GitLab 8.6 [开始](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3323) ,组的可见性已更改,并且可以与项目相同的方式进行配置. 在以前的版本中,组页面始终对所有用户可见.
与项目一样,可以设置组的可见性来决定匿名用户,所有登录用户还是仅显式组成员可以查看它. 应用程序设置级别对可见性级别的限制也适用于组,因此,如果将其设置为内部,则匿名用户的浏览页面将为空. 现在,组页面上有一个可见性级别图标.
管理员用户不能创建具有比直接父组更高的可见性级别的子组或项目.
## Visibility of users[](#visibility-of-users "Permalink")
无论您是否登录,位于`/username`的用户公共页面始终可见.
当访问用户的公共页面时,您只能看到您有权访问的项目.
如果公共级别受到限制,则用户配置文件仅对登录用户可见.
## Visibility of pages[](#visibility-of-pages "Permalink")
默认情况下,以下目录对未经身份验证的用户可见:
* 公共访问( `/public` ).
* 探索( `/explore` ).
* 帮助( `/help` ).
但是,如果`/public`目录的访问级别受到限制,则这些目录仅对登录用户可见.
## Restricting the use of public or internal projects[](#restricting-the-use-of-public-or-internal-projects "Permalink")
您可以限制用户在创建项目或代码段时对可见性级别的使用. 这有助于防止用户意外公开其存储库. 受限的可见性设置不适用于管理员用户.
有关详细信息,请参阅[受限可见性级别](../user/admin_area/settings/visibility_and_access_controls.html#restricted-visibility-levels) .
## Reducing visibility[](#reducing-visibility "Permalink")
在 GitLab 12.6 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/33358) .
降低项目的可见性级别将删除该项目与任何分叉项目之间的派生关系. 这是一种潜在的破坏性操作,需要先确认才能保存.
[![Project visibility change confirmation](img/17abb300a15db5073a41bf8a13e53bc7.png)](img/project_visibility_confirmation_v12_6.png)
\ No newline at end of file
# SAML SSO for GitLab.com groups
> 原文:[https://docs.gitlab.com/ee/user/group/saml_sso/](https://docs.gitlab.com/ee/user/group/saml_sso/)
* [Configuring your Identity Provider](#configuring-your-identity-provider)
* [NameID](#nameid)
* [NameID Format](#nameid-format)
* [Metadata configuration](#metadata-configuration)
* [Configuring GitLab](#configuring-gitlab)
* [SSO enforcement](#sso-enforcement)
* [Providers](#providers)
* [Azure setup notes](#azure-setup-notes)
* [Okta setup notes](#okta-setup-notes)
* [OneLogin setup notes](#onelogin-setup-notes)
* [Additional providers and setup options](#additional-providers-and-setup-options)
* [User access and management](#user-access-and-management)
* [Linking SAML to your existing GitLab.com account](#linking-saml-to-your-existing-gitlabcom-account)
* [Signing in to GitLab.com with SAML](#signing-in-to-gitlabcom-with-saml)
* [Role](#role)
* [Blocking access](#blocking-access)
* [Unlinking accounts](#unlinking-accounts)
* [Glossary](#glossary)
* [Configuring on a self-managed GitLab instance](#configuring-on-a-self-managed-gitlab-instance-premium-only)
* [Limitations](#limitations)
* [Omnibus installations](#omnibus-installations)
* [Source installations](#source-installations)
* [Troubleshooting](#troubleshooting)
* [SAML debugging tools](#saml-debugging-tools)
* [Verifying configuration](#verifying-configuration)
* [Verifying NameID](#verifying-nameid)
* [Message: “SAML authentication failed: Extern uid has already been taken”](#message-saml-authentication-failed-extern-uid-has-already-been-taken)
* [Message: “SAML authentication failed: User has already been taken”](#message-saml-authentication-failed-user-has-already-been-taken)
* [Message: “SAML authentication failed: Email has already been taken”](#message-saml-authentication-failed-email-has-already-been-taken)
* [Message: “SAML authentication failed: Extern uid has already been taken, User has already been taken”](#message-saml-authentication-failed-extern-uid-has-already-been-taken-user-has-already-been-taken)
* [Message: “Request to link SAML account must be authorized”](#message-request-to-link-saml-account-must-be-authorized)
* [Stuck in a login “loop”](#stuck-in-a-login-loop)
* [The NameID has changed](#the-nameid-has-changed)
* [I need to change my SAML app](#i-need-to-change-my-saml-app)
* [I need additional information to configure my identity provider](#i-need-additional-information-to-configure-my-identity-provider)
# SAML SSO for GitLab.com groups[](#saml-sso-for-gitlabcom-groups-premium "Permalink")
在 GitLab 11.0 中引入.
此页面描述了组的 SAML. 有关自我管理的 GitLab 实例上的实例范围内的 SAML,请参阅[SAML OmniAuth Provider](../../../integration/saml.html) .
GitLab.com 上的 SAML 允许用户通过其 SAML 身份提供商进行登录. 如果用户还不是成员,则登录过程会自动将用户添加到适当的组.
如果您遵循我们的指导以使用[SCIM](scim_setup.html)[组管理的帐户](group_managed_accounts.html)自动执行用户配置,则无需手动创建此类帐户.
通过[SCIM](scim_setup.html)支持 SAML SSO 组的用户同步. SCIM 支持在 GitLab 组中添加和删除用户. 例如,如果您从 SCIM 应用程序中删除用户,则 SCIM 将从 GitLab 组中删除该用户.
## Configuring your Identity Provider[](#configuring-your-identity-provider "Permalink")
1. 导航到该组,然后单击**设置> SAML SSO** .
2. 使用**Assertion 使用者服务 URL****Identifier****GitLab 单一登录** **URL**来配置 SAML 服务器. 另外,GitLab 还提供[元数据 XML 配置](#metadata-configuration) . 有关更多详细信息,请参见[特定的身份提供者文档](#providers) .
3. 配置 SAML 响应以包括唯一标识每个用户的 NameID.
4. 如果使用[组托管帐户,请](group_managed_accounts.html)配置[必需的断言](group_managed_accounts.html#assertions) .
5. 设置身份提供者后,继续[配置 GitLab](#configuring-gitlab) .
[![Issuer and callback for configuring SAML identity provider with GitLab.com](img/ebc54b5fdcb529ff40d6d097098188ae.png)](img/group_saml_configuration_information.png)
### NameID[](#nameid "Permalink")
GitLab.com 使用 SAML NameID 来识别用户. NameID 元素:
* 是 SAML 响应中的必填字段.
* 每个用户必须唯一.
* 必须是永久不变的值,例如随机生成的唯一用户 ID.
* 区分大小写. NameID 必须在随后的登录尝试中完全匹配,因此不应依赖可能在大小写之间变化的用户输入.
* 不应是电子邮件地址或用户名. 我们强烈建议您反对这些,因为很难保证它们永远不会改变,例如当一个人的名字改变时. 电子邮件地址也不区分大小写,这可能导致用户无法登录.
支持的提供程序的相关字段名称和建议值在[提供程序特定的注释中](#providers) . 适当的相应字段.
**警告:**用户使用 SSO SAML 设置登录到 GitLab 后,更改`NameID`将破坏配置,并有可能将用户锁定在 GitLab 组之外.
#### NameID Format[](#nameid-format "Permalink")
我们建议将 NameID 格式设置为`Persistent`除非使用要求其他格式的字段(例如电子邮件).
### Metadata configuration[](#metadata-configuration "Permalink")
GitLab 提供了可用于配置身份提供者的元数据 XML.
1. 导航到该组,然后单击**设置> SAML SSO** .
2. 复制提供的**GitLab 元数据 URL** .
3. 请遵循身份提供者的文档,并在请求时粘贴元数据 URL.
## Configuring GitLab[](#configuring-gitlab "Permalink")
设置好身份提供程序以与 GitLab 一起使用后,您需要配置 GitLab 以使用它进行身份验证:
1. 导航到组的**"设置">" SAML SSO"** .
2. 从您的身份提供者中找到 SSO URL,然后在**身份提供者单点登录 URL**字段中输入 SSO URL.
3. 在" **证书"**字段中找到并输入 SAML 令牌签名证书的指纹.
4. 单击" **为此组启用 SAML 身份验证"**切换开关.
5. 点击**保存更改**按钮.
[![Group SAML Settings for GitLab.com](img/6ea99225391da160a92dd9fd1fb01cd7.png)](img/group_saml_settings.png)
**注意:**请注意,证书[指纹算法](#additional-providers-and-setup-options)必须在 SHA1 中. 配置身份提供者时,请使用安全签名算法.
### SSO enforcement[](#sso-enforcement "Permalink")
* 在 GitLab 11.8 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/5291) .
* 在 GitLab 11.11 中进行了[改进](https://gitlab.com/gitlab-org/gitlab/-/issues/9255) ,并在 GitLab UI 中不断实施.
启用此选项后,用户必须浏览您组的 GitLab 单一登录 URL. 如果已配置,也可以通过 SCIM 添加它们. 无法手动添加用户,只能通过 UI 通过 SSO URL 登录来访问项目/组资源.
但是,每次访问时都不会提示用户通过 SSO 登录. GitLab 将检查用户是否已通过 SSO 进行身份验证,并且仅在会话过期时提示用户通过 SSO 登录.
我们打算为[Git 和 API 活动](https://gitlab.com/gitlab-org/gitlab/-/issues/9152)添加类似的 SSO 要求.
为组启用 SSO 强制后,即使分叉了项目,用户也无法在顶级组之外的组中共享项目.
要禁止用户在顶级组之外进行贡献,请参阅" [组管理帐户"](group_managed_accounts.html) .
## Providers[](#providers "Permalink")
**注意:** GitLab 无法为未在此处列出的 IdP 提供支持.
| Provider | Documentation |
| --- | --- |
| ADFS(Active Directory 联合身份验证服务) | [Create a Relying Party Trust](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust) |
| Azure | [Configuring single sign-on to applications](https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/configure-single-sign-on-non-gallery-applications) |
| Okta | [Setting up a SAML application in Okta](https://developer.okta.com/docs/guides/build-sso-integration/saml2/overview/) |
| OneLogin | [Use the OneLogin SAML Test Connector](https://onelogin.service-now.com/support?id=kb_article&sys_id=93f95543db109700d5505eea4b96198f) |
[配置标识提供程序时](#configuring-your-identity-provider) ,请考虑以下有关特定提供程序的注意事项,以帮助避免常见问题,并作为所用术语的指南.
### Azure setup notes[](#azure-setup-notes "Permalink")
有关包括 SCIM 在内的 Azure SAML 设置的演示,请参阅《 [使用针对组的 SAML SSO 的 Azure 上的 SCIM 置备》演示](https://youtu.be/24-ZxmTeEBU) .
| 亚搏体育 app 设置 | 蔚蓝领域 |
| --- | --- |
| Identifier | 标识符(实体 ID) |
| 断言消费者服务 URL | 回复 URL(断言消费者服务 URL) |
| GitLab 单一登录 URL | 登录 URL |
| 身份提供者单点登录 URL | 登录网址 |
| 证书指纹 | Thumbprint |
我们推荐:
* **唯一用户标识符(名称标识符)**设置为`user.objectID` .
* **nameid-format**设置为持久.
### Okta setup notes[](#okta-setup-notes "Permalink")
有关 Okta SAML 设置(包括 SCIM)的[演示](https://youtu.be/0ES9HsZq0AQ) ,请参见[演示:Okta Group SAML 和 SCIM 设置](https://youtu.be/0ES9HsZq0AQ) .
| 亚搏体育 app 设置 | Okta 场 |
| --- | --- |
| Identifier | 目标对象 URI |
| 断言消费者服务 URL | 单一登录网址 |
| GitLab 单一登录 URL | 登录页面 URL(在" **应用程序登录页面"**设置下) |
| 身份提供者单点登录 URL | 身份提供者单一登录 URL |
在 Okta 的" **单一登录 URL"**字段下,选中" **将此用于收件人 URL 和目标 URL** "选项.
我们推荐:
* **应用程序用户名** (NameID)设置为**Custom** `user.getInternalProperty("id")` .
* **名称 ID 格式**设置为**Persistent** .
### OneLogin setup notes[](#onelogin-setup-notes "Permalink")
OneLogin 应用目录中列出的 GitLab 应用适用于自我管理的 GitLab 实例. 对于 GitLab.com,请使用通用 SAML 测试连接器,例如 SAML 测试连接器(高级).
| 亚搏体育 app 设置 | OneLogin Field |
| --- | --- |
| Identifier | Audience |
| 断言消费者服务 URL | Recipient |
| 断言消费者服务 URL | ACS(消费者)网址 |
| 断言消费者服务 URL(转义版本) | ACS(消费者)URL 验证器 |
| GitLab 单一登录 URL | 登录网址 |
| 身份提供者单点登录 URL | SAML 2.0 端点 |
Recommended `NameID` value: `OneLogin ID`.
### Additional providers and setup options[](#additional-providers-and-setup-options "Permalink")
SAML 标准意味着广泛的身份提供者将与 GitLab 一起使用. 不幸的是,我们尚未验证与所有 SAML 提供程序的连接. 有关更多信息,请参见[关于提供程序](#providers)[讨论](#providers) .
您的身份提供者可能具有相关的文档. 它可能是通用的 SAML 文档,也可能是专门针对 GitLab 的. 例子:
* [Auth0](https://auth0.com/docs/protocols/saml/saml-idp-generic)
* [G Suite](https://support.google.com/a/answer/6087519?hl=en)
* [JumpCloud](https://support.jumpcloud.com/support/s/article/single-sign-on-sso-with-gitlab-2019-08-21-10-36-47)
* [PingOne by Ping Identity](https://docs.pingidentity.com/bundle/pingone/page/xsh1564020480660-1.html)
您的身份提供商可能需要其他配置,例如:
| Field | Value | Notes |
| --- | --- | --- |
| SAML 配置文件 | Web 浏览器 SSO 配置文件 | GitLab 使用 SAML 通过用户的浏览器登录. 我们不会直接向身份提供者发出请求. |
| SAML 请求绑定 | HTTP 重定向 | GitLab(服务提供商)使用 base64 编码的`SAMLRequest` HTTP 参数将用户重定向到您的身份提供商. |
| SAML 响应绑定 | HTTP POST | 您的身份提供者使用 HTTP 表单(包括`SAMLResponse`响应用户,该表单由用户的浏览器提交回 GitLab. |
| 签署 SAML 回应 | Yes | 我们要求这样做以防止篡改. |
| X.509 证书作为回应 | Yes | 这用于签署响应并对照提供的指纹进行检查. |
| 指纹算法 | SHA-1 | 我们需要用于签名 SAML 响应的证书的 SHA-1 哈希. |
| 签名算法 | SHA-1/SHA-256/SHA-384/SHA-512 | 也称为摘要方法,可以在 SAML 响应中指定此方法. 它确定响应的签名方式. |
| 加密 SAML 断言 | No | 在您的身份提供者,用户的浏览器和 GitLab 之间使用 TLS. |
| 签署 SAML 声明 | Optional | 我们不需要签署声明. 我们要求签署完整的回复以验证其完整性. |
| 检查 SAML 请求签名 | No | GitLab 不会对 SAML 请求进行签名,但是会检查 SAML 响应上的签名. |
| 默认 RelayState | Optional | 通过身份提供者上的按钮登录后,URL 用户应最终打开. |
| NameID 格式 | `Persistent` | See [details above](#nameid-format). |
| 其他网址 |   | 您可能需要在某些提供程序的其他字段中使用" `Identifier`或" `Assertion consumer service URL` . |
| 单一登出网址 |   | 不支持 |
如果上面没有列出您需要的信息,则不妨查看[下面](#i-need-additional-information-to-configure-my-identity-provider)[故障排除文档](#i-need-additional-information-to-configure-my-identity-provider) .
## User access and management[](#user-access-and-management "Permalink")
一旦配置并启用了 Group SSO,用户就可以通过身份提供商的仪表板访问 GitLab.com 组. 如果配置了[SCIM](scim_setup.html) ,请参阅[SCIM 页面上的](scim_setup.html#user-access-and-linking-setup) " [用户访问和链接设置"部分](scim_setup.html#user-access-and-linking-setup) .
当用户尝试使用 Group SSO 登录时,他们将需要一个配置了以下内容之一的帐户:
* [SCIM](scim_setup.html).
* [Group-managed accounts](group_managed_accounts.html).
* 一个 GitLab.com 帐户.
### Linking SAML to your existing GitLab.com account[](#linking-saml-to-your-existing-gitlabcom-account "Permalink")
要将 SAML 链接到您现有的 GitLab.com 帐户:
1. 登录到您的 GitLab.com 帐户.
2. 找到并访问您要登录的组的**GitLab 单一登录 URL** . 群组管理员可以在群组的**"设置">" SAML SSO"**页面上找到此内容. 如果配置了登录 URL,则用户可以从身份提供者连接到 GitLab 应用.
3. Click **Authorize**.
4. 如果出现提示,请在身份提供者上输入您的凭据.
5. 您将被重定向回 GitLab.com,现在应该可以访问该组了. 将来,您可以使用 SAML 登录到 GitLab.com.
在随后的访问中,您应该能够[使用 SAML](#signing-in-to-gitlabcom-with-saml)或直接访问链接来[登录 GitLab.com](#signing-in-to-gitlabcom-with-saml) . 如果**强制 SSO**选项已打开,您将被重定向到通过身份提供者登录.
### Signing in to GitLab.com with SAML[](#signing-in-to-gitlabcom-with-saml "Permalink")
1. 登录到您的身份提供商.
2. 从应用程序列表中,单击" GitLab.com"应用程序(名称由身份提供者的管理员设置).
3. 您将登录到 GitLab.com,并重定向到该组.
### Role[](#role "Permalink")
首次登录时,GitLab 会将您添加到具有 Guest 角色的顶级父组中. 具有适当特权的现有成员可以提升该新用户.
如果用户已经是组的成员,则链接 SAML 身份不会更改其角色.
### Blocking access[](#blocking-access "Permalink")
要取消对该组的访问,请按顺序执行以下步骤:
1. 从身份提供者上的用户数据存储中删除用户,或从特定应用程序上的用户列表中删除用户.
2. 从 GitLab.com 组中删除用户.
### Unlinking accounts[](#unlinking-accounts "Permalink")
用户可以从其个人资料页面取消链接组的 SAML. 在以下情况下这可能会有所帮助:
* 您不再希望某个群组能够登录 GitLab.com.
* 您的 SAML NameID 已更改,因此 GitLab 无法再找到您的用户.
例如,要取消链接`MyOrg`帐户,以下" **断开连接"**按钮将在" **配置文件">"帐户"**下可用:
[![Unlink Group SAML](img/b203ae7a973815c03ea680032d1e75eb.png)](img/unlink_group_saml.png)
## Glossary[](#glossary "Permalink")
| Term | Description |
| --- | --- |
| 身份提供者 | 管理您的用户身份的服务,例如 ADFS,Okta,Onelogin 或 Ping 身份. |
| 服务提供者 | SAML 认为 GitLab 是服务提供商. |
| Assertion | 有关用户身份的一条信息,例如他们的姓名或角色. 也称为声明或属性. |
| SSO | 单一登录. |
| 断言消费者服务 URL | 在 GitLab 上的回调,在通过身份提供商成功进行身份验证后,将重定向用户. |
| Issuer | manbetx 客户端打不开如何向身份提供商识别自己. 也称为"信赖方信任标识符". |
| 证书指纹 | 用于通过检查服务器是否使用正确的证书对通信进行签名来确认通过 SAML 进行的通信是否安全. 也称为证书指纹. |
## Configuring on a self-managed GitLab instance[](#configuring-on-a-self-managed-gitlab-instance-premium-only "Permalink")
对于自我管理的 GitLab 实例,我们强烈建议改用[实例范围的 SAML OmniAuth Provider](../../../integration/saml.html) .
如果您需要允许通过多个 SAML 身份提供者进行访问,Group SAML SSO 可以提供帮助,但是作为多租户解决方案,它不太适合您管理自己的 GitLab 实例的情况.
要改为继续配置 Group SAML SSO,您需要启用`group_saml` OmniAuth 提供程序. 这可以通过以下方式完成:
* `gitlab.rb`用于 GitLab [Omnibus 安装](#omnibus-installations) .
* `gitlab/config/gitlab.yml` for [source installations](#source-installations).
### Limitations[](#limitations "Permalink")
与建议的[实例范围的 SAML](../../../integration/saml.html)相比,自管理实例上的组 SAML 受到限制. 推荐的解决方案使您可以利用:
* [LDAP compatibility](../../../administration/auth/ldap/index.html).
* [LDAP Group Sync](../index.html#manage-group-memberships-via-ldap).
* [Required groups](../../../integration/saml.html#required-groups-starter-only).
* [Admin groups](../../../integration/saml.html#admin-groups-starter-only).
* [Auditor groups](../../../integration/saml.html#auditor-groups-starter-only).
### Omnibus installations[](#omnibus-installations "Permalink")
1. 确保为 GitLab [配置了 HTTPS](../../../install/installation.html#using-https) .
2. 启用 OmniAuth 和`group_saml`在提供`gitlab.rb`
```
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_providers'] = [{ name: 'group_saml' }]
```
### Source installations[](#source-installations "Permalink")
1. 确保为 GitLab [配置了 HTTPS](../../../install/installation.html#using-https) .
2.`gitlab/config/gitlab.yml`启用 OmniAuth 和`group_saml`提供程序:
```
omniauth:
enabled: true
providers:
- { name: 'group_saml' }
```
## Troubleshooting[](#troubleshooting "Permalink")
本节包含可能遇到的问题的可能解决方案.
### SAML debugging tools[](#saml-debugging-tools "Permalink")
SAML 响应是 base64 编码的,因此我们建议使用以下浏览器插件即时对其进行解码:
* [SAML tracer for Firefox](https://addons.mozilla.org/en-US/firefox/addon/saml-tracer/)
* [Chrome SAML Panel](https://chrome.google.com/webstore/detail/saml-chrome-panel/paijfdbeoenhembfhkhllainmocckace?hl=en)
应特别注意:
* [NameID](#nameid) (我们用来标识正在登录的用户).如果该用户先前已登录,则该[ID 必须与我们存储的值匹配](#verifying-nameid) .
* `X509Certificate`的存在,我们需要使用它来验证响应签名.
* `SubjectConfirmation``Conditions` ,如果配置错误,可能会导致错误.
### Verifying configuration[](#verifying-configuration "Permalink")
For convenience, we’ve included some [example resources](../../../administration/troubleshooting/group_saml_scim.html) used by our Support Team. While they may help you verify the SAML app configuration, they are not guaranteed to reflect the current state of third-party products.
### Verifying NameID[](#verifying-nameid "Permalink")
在对组 SAML 设置进行故障排除时,任何经过身份验证的用户都可以通过访问[https://gitlab.com/api/v4/user](https://gitlab.com/api/v4/user)并检查身份下的`extern_uid`来使用 API​​来验证 NameID GitLab 是否已链接到该用户.
同样,具有适当权限的角色的组成员可以使用[成员 API](../../../api/members.html)来查看该组成员的组 SAML 身份信息.
然后可以通过使用[SAML 调试工具](#saml-debugging-tools)解码消息,将其与身份提供者发送的[NameID](#nameid)进行比较. 我们要求这些匹配项以识别用户.
### Message: “SAML authentication failed: Extern uid has already been taken”[](#message-saml-authentication-failed-extern-uid-has-already-been-taken "Permalink")
此错误表明您已以 GitLab 用户身份登录,但已将 SAML 身份链接到其他 GitLab 用户. 退出,然后尝试使用 SSO SAML 链接再次登录,该链接应使用链接的用户帐户将您登录到 GitLab.
如果您不希望通过 SAML 登录使用该 GitLab 用户,则可以[取消 GitLab 帐户与该组的 SAML 的链接](#unlinking-accounts) .
### Message: “SAML authentication failed: User has already been taken”[](#message-saml-authentication-failed-user-has-already-been-taken "Permalink")
与您登录的用户已经将 SAML 链接到另一个身份. 以下是可能的原因和解决方案:
| Cause | Solution |
| --- | --- |
| You’ve tried to link multiple SAML identities to the same user, for a given Identity Provider. | 更改用于登录的身份. 为此,请先从此 GitLab 帐户[取消链接先前的 SAML 身份](#unlinking-accounts) ,然后再尝试登录. |
### Message: “SAML authentication failed: Email has already been taken”[](#message-saml-authentication-failed-email-has-already-been-taken "Permalink")
| Cause | Solution |
| --- | --- |
| 当具有电子邮件地址的用户帐户已经存在于 GitLab 中时,但该用户没有绑定到其帐户的 SAML 身份. | 用户将需要[链接他们的帐户](#user-access-and-management) . |
### Message: “SAML authentication failed: Extern uid has already been taken, User has already been taken”[](#message-saml-authentication-failed-extern-uid-has-already-been-taken-user-has-already-been-taken "Permalink")
同时获得这两个错误表明,身份提供者提供的 NameID 大写字母与该用户的先前值不完全匹配.
可以通过配置[NameID](#nameid)返回一致的值来防止这种情况. 为单个用户解决此问题涉及[取消 GitLab 帐户中的 SAML 链接](#unlinking-accounts) ,尽管这将导致组成员身份和 Todos 丢失.
### Message: “Request to link SAML account must be authorized”[](#message-request-to-link-saml-account-must-be-authorized "Permalink")
确保尝试链接其 GitLab 帐户的用户已添加为身份提供者的 SAML 应用中的用户.
### Stuck in a login “loop”[](#stuck-in-a-login-loop "Permalink")
确保在身份提供者的 SAML 应用中将**GitLab 单一登录 URL**配置为"登录 URL"(或类似命名的字段).
另外,当用户需要[将 SAML 链接到其现有的 GitLab.com 帐户时](#linking-saml-to-your-existing-gitlabcom-account) ,请提供**GitLab 单一登录 URL,**并指示用户不要在首次登录时使用 SAML 应用.
### The NameID has changed[](#the-nameid-has-changed "Permalink")
| Cause | Solution |
| --- | --- |
| 如[NameID](#nameid)部分所述,如果 NameID 对于任何用户都发生了更改,则可以将用户锁定. 当电子邮件地址用作标识符时,这是一个常见问题. | 请按照[" SAML 身份验证失败:用户已被使用"](#message-saml-authentication-failed-user-has-already-been-taken)部分中概述的步骤进行操作. 如果许多用户受到影响,建议您使用适当的 API. |
### I need to change my SAML app[](#i-need-to-change-my-saml-app "Permalink")
用户将需要[取消链接当前的 SAML 身份](#unlinking-accounts)[并将其身份链接](#user-access-and-management)到新的 SAML 应用.
### I need additional information to configure my identity provider[](#i-need-additional-information-to-configure-my-identity-provider "Permalink")
提供商之间的许多 SAML 术语可能会有所不同. 您正在查找的信息可能以其他名称列出.
有关更多信息,请从您的身份提供商的文档开始. 查找他们的选项和示例,以了解他们如何配置 SAML. 这可以提供有关配置 GitLab 以便与这些提供程序一起使用所需的提示.
它也有助于查看我们[有关自管理 GitLab 的更详细的文档](../../../integration/saml.html) . GitLab.com 的 SAML 配置与自我管理实例的 SAML 配置基本相同. 但是,自我管理的 GitLab 实例使用支持更多选项的配置文件,如外部[OmniAuth SAML 文档中所述](https://github.com/omniauth/omniauth-saml/) . 在内部使用[`ruby-saml`库](https://github.com/onelogin/ruby-saml) ,因此我们有时在此处检查以验证不常用选项的低级详细信息.
它还可以帮助将提供商的 XML 响应与我们[用于内部测试的 XML 示例进行比较](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/spec/fixtures/saml/response.xml) .
\ No newline at end of file
# SCIM provisioning using SAML SSO for GitLab.com groups
> 原文:[https://docs.gitlab.com/ee/user/group/saml_sso/scim_setup.html](https://docs.gitlab.com/ee/user/group/saml_sso/scim_setup.html)
* [Features](#features)
* [Requirements](#requirements)
* [GitLab configuration](#gitlab-configuration)
* [Identity Provider configuration](#identity-provider-configuration)
* [Azure configuration steps](#azure-configuration-steps)
* [Configure attribute mapping](#configure-attribute-mapping)
* [Okta configuration steps](#okta-configuration-steps)
* [Okta Known Issues](#okta-known-issues)
* [User access and linking setup](#user-access-and-linking-setup)
* [Blocking access](#blocking-access)
* [Troubleshooting](#troubleshooting)
* [Azure](#azure)
* [How do I verify my SCIM configuration is correct?](#how-do-i-verify-my-scim-configuration-is-correct)
* [Testing Azure connection: invalid credentials](#testing-azure-connection-invalid-credentials)
* [Azure: (Field) can’t be blank sync error](#azure-field-cant-be-blank-sync-error)
* [How do I diagnose why a user is unable to sign in](#how-do-i-diagnose-why-a-user-is-unable-to-sign-in)
* [How do I verify user’s SAML NameId matches the SCIM externalId](#how-do-i-verify-users-saml-nameid-matches-the-scim-externalid)
* [Update or fix mismatched SCIM externalId and SAML NameId](#update-or-fix-mismatched-scim-externalid-and-saml-nameid)
* [I need to change my SCIM app](#i-need-to-change-my-scim-app)
# SCIM provisioning using SAML SSO for GitLab.com groups[](#scim-provisioning-using-saml-sso-for-gitlabcom-groups-silver-only "Permalink")
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9388) in [GitLab.com Silver](https://about.gitlab.com/pricing/) 11.10.
跨域身份管理系统(SCIM)是一种开放标准,可实现用户自动配置. 当为 GitLab 组配置 SCIM 时,该组的成员资格将在 GitLab 和身份提供者之间同步.
GitLab 的[SCIM API](../../../api/scim.html)实现[了 RFC7644 协议的](https://tools.ietf.org/html/rfc7644)一部分.
## Features[](#features "Permalink")
当前,可以执行以下操作:
* 建立使用者
* 更新用户(仅限 Azure)
* 停用用户
支持以下身份提供者:
* Azure
* Okta
## Requirements[](#requirements "Permalink")
* 必须配置[组单一登录](index.html) .
## GitLab configuration[](#gitlab-configuration "Permalink")
配置[组单一登录后](index.html) ,我们可以:
1. 导航到该组,然后单击**管理> SAML SSO** .
2. 单击**生成 SCIM 令牌**按钮.
3. 保存令牌和 URL,以便可以在下一步中使用它们.
[![SCIM token configuration](img/c187de65e481b5598b110fee5310776c.png)](img/scim_token.png)
## Identity Provider configuration[](#identity-provider-configuration "Permalink")
* [Azure](#azure-configuration-steps)
* [Okta](#okta-configuration-steps)
### Azure configuration steps[](#azure-configuration-steps "Permalink")
现在需要为 SCIM 设置在[Azure 的](https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/configure-single-sign-on-non-gallery-applications) [单点登录](index.html)安装过程中创建的 SAML 应用程序.
1. 检查您的 GitLab SAML 应用程序的配置,并确保**名称标识符值** (NameID)指向`user.objectid`或另一个唯一标识符. 这将与 GitLab 上使用的`extern_uid`匹配.
[![Name identifier value mapping](img/fe827d4bc97b90c3a250af05fd988fc4.png)](img/scim_name_identifier_mapping.png)
2. 通过遵循针对 Azure [支持](https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups#provisioning-users-and-groups-to-applications-that-support-scim)的 SCIM 安装文档[中支持 SCIM 的应用程序](https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups#provisioning-users-and-groups-to-applications-that-support-scim)[供应用户和组,来](https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups#provisioning-users-and-groups-to-applications-that-support-scim)设置自动供应和管理凭据.
During this configuration, note the following:
* `Tenant URL``secret token`是在[上一步中](#gitlab-configuration)检索到的.
* 如果 GitLab 的可用性有任何问题或类似错误,则通知电子邮件集将获得这些信息.
* 建议设置通知电子邮件并选中**发生故障时发送电子邮件通知**复选框.
* 对于映射,我们将仅启用"将`Synchronize Azure Active Directory Users to AppName`启用状态.
然后,您可以通过单击" **测试连接"****测试连接** . 如果连接成功,请确保在继续操作之前保存配置. 请参阅下面的[疑难解答](#troubleshooting) .
#### Configure attribute mapping[](#configure-attribute-mapping "Permalink")
1. 单击"将`Synchronize Azure Active Directory Users to AppName`以配置属性映射.
2. 单击`mail`映射旁边的**删除** .
3.`userPrincipalName`映射到`emails[type eq "work"].value`并将其**Matching 优先级**更改为`2` .
4. Map `mailNickname` to `userName`.
5. 确定 GitLab 如何唯一标识用户.
* 除非用户已经为您的组链接了 SAML,否则请使用`objectId` .
* 如果已经有链接 SAML 的用户,则使用[SAML 配置中](#azure)的" `Name ID`值. 使用其他值可能会导致用户重复并阻止用户访问 GitLab 组.
6. 创建一个新的映射:
1. 单击**添加新映射** .
2. 组:
* 上面确定的唯一标识符的**Source 属性** ,通常是`objectId` .
* **目标属性**`externalId` .
* **使用此属性****对象匹配**`Yes` .
* **匹配优先级**`1` .
7. 单击`userPrincipalName`映射,然后**使用此属性****Match 对象**更改为`No`
8. 保存您的更改. 作为参考,您可以[在故障排除参考中](../../../administration/troubleshooting/group_saml_scim.html#azure-active-directory)查看[示例配置](../../../administration/troubleshooting/group_saml_scim.html#azure-active-directory) .
**注意:**如果您使用**除** `objectId` **之外**的唯一标识符,请确保将其映射到`externalId` .
9. 在映射列表下,单击**显示高级选项>编辑 AppName 的属性列表** .
10. 确保`id`是主要字段和必填字段,并且还需要`externalId` .
**注意:** `username`既不是主要`username`也不是必需的,因为我们尚不支持 GitLab SCIM 上的该字段.
11. 保存所有屏幕,然后在**Provisioning**步骤中将`Provisioning Status`设置为`On` .
[![Provisioning status toggle switch](img/4c6172d095020a91bcf8d48c85ee4d1d.png)](img/scim_provisioning_status.png)
**注意:**您可以通过选择`Scope`来控制实际同步的内容. 例如, `Sync only assigned users and groups`将仅同步分配给应用程序的`Users and groups` ( `Users and groups` ),否则,它将同步整个 Active Directory.
一旦启用,同步细节的任何错误都出现在**供应**屏幕的底部,有一个链接到审计日志在一起.
**警告:**同步后,将映射到`id``externalId`的字段更改可能会导致配置错误,用户重复,并阻止现有用户访问 GitLab 组.
### Okta configuration steps[](#okta-configuration-steps "Permalink")
现在需要为 SCIM 设置在[Okta 的](https://developer.okta.com/docs/guides/build-sso-integration/saml2/overview/) [单点登录](index.html#okta-setup-notes)安装过程中创建的 SAML 应用程序. 在继续之前,请确保完成[GitLab 配置](#gitlab-configuration)过程.
1. 登录到 Okta.
2. 如果您在右上角看到一个**管理**按钮,请单击该按钮. 这将确保您位于"管理"区域.
**提示:**如果您在使用开发者控制台,点击**开发者控制台**顶部栏并选择**经典的 UI.** 否则,您可能看不到以下步骤中描述的按钮:
3. 在" **应用程序"**选项卡中,单击" **添加应用程序"** .
4. Search for **GitLab**, find and click on the ‘GitLab’ application.
5. 在 GitLab 应用程序概述页面上,单击**添加** .
6. 在" **应用程序可见性"下,**选中两个复选框. 当前,GitLab 应用程序不支持 SAML 身份验证,因此不应向用户显示该图标.
7. 单击**"完成"**以完成添加应用程序.
8.**供应**标签中,点击**配置 API 集成** .
9. Select **启用 API 集成**.
* 对于**基本 URL,**输入从 GitLab SCIM 配置页面获得的 URL.
* 对于**API 令牌,**输入从 GitLab SCIM 配置页面获得的 SCIM 令牌.
10. 点击"测试 API 凭据"以验证配置.
11. 单击**保存**以应用设置.
12. After saving the API integration details, new settings tabs will appear on the left. Choose **到应用**.
13. Click **Edit**.
14. 选中"为**创建用户****停用用户** **启用** "复选框.
15. Click **Save**.
16. 在" **分配"**选项卡中分配用户. 分配的用户将在您的 GitLab 组中创建和管理.
#### Okta Known Issues[](#okta-known-issues "Permalink")
Okta GitLab 应用程序当前仅支持 SCIM. 继续使用单独的 Okta [SAML SSO](index.html)配置以及上述新的 SCIM 应用程序.
## User access and linking setup[](#user-access-and-linking-setup "Permalink")
只要已经配置了[Group SAML](index.html) ,就可以在启用同步之前,在激活同步之前,现有的 GitLab.com 用户可以通过以下方式之一链接到其帐户:
* 通过更新其 GitLab.com 用户帐户中的*主要*电子邮件地址以匹配其身份提供商的用户个人资料电子邮件地址.
* 通过执行以下步骤:
1. 如果需要,登录到 GitLab.com.
2. 在身份提供商的仪表板上单击 GitLab 应用程序,或访问**GitLab 单一登录 URL** .
3. 单击**授权**按钮.
后续访问中的新用户和现有用户可以通过身份提供商的仪表板或直接访问链接来访问组.
有关角色信息,请参阅[组 SAML 页面](index.html#user-access-and-management)
### Blocking access[](#blocking-access "Permalink")
要取消对该组的访问,我们建议从身份提供商或特定应用程序的用户列表中删除该用户.
在下一次同步时,将取消提供该用户,这意味着该用户将从组中删除. 除非使用[组托管帐户,](group_managed_accounts.html)否则不会删除该用户帐户.
## Troubleshooting[](#troubleshooting "Permalink")
本节包含可能遇到的问题的可能解决方案.
### Azure[](#azure "Permalink")
#### How do I verify my SCIM configuration is correct?[](#how-do-i-verify-my-scim-configuration-is-correct "Permalink")
查看以下内容:
* 确保`id`的 SCIM 值与`NameId`的 SAML 值匹配.
* 确保`externalId`的 SCIM 值与`NameId`的 SAML 值匹配.
查看以下 SCIM 参数以获取合理的值:
* `userName`
* `displayName`
* `emails[type eq "work"].value`
#### Testing Azure connection: invalid credentials[](#testing-azure-connection-invalid-credentials "Permalink")
测试连接时,您可能会遇到错误: **您似乎输入了无效的凭据.** **请确认您使用的管理帐户信息正确** . 如果`Tenant URL``secret token`正确,请检查您的组路径中是否包含可能被视为无效 JSON 原语的字符(例如`.` ). 从组路径中删除此类字符通常可以解决该错误.
#### Azure: (Field) can’t be blank sync error[](#azure-field-cant-be-blank-sync-error "Permalink")
在检查供应的审核日志时,有时您会看到错误`Namespace can't be blank, Name can't be blank, and User can't be blank.`
这可能是由于没有为所有要映射的用户提供所有必填字段(例如名字和姓氏).
作为解决方法,请尝试其他映射:
1. 请按照上面的 Azure 映射说明进行操作.
2. 删除`name.formatted`目标属性条目.
3.`displayName`源属性更改为具有`name.formatted`目标属性.
#### How do I diagnose why a user is unable to sign in[](#how-do-i-diagnose-why-a-user-is-unable-to-sign-in "Permalink")
每当`id``externalId`更改时,SCIM 都会更新 GitLab 存储的**Identity**`extern_uid` )值. 除非 GitLab 标识( `extern_uid` )值与 SAML 发送的`NameId`匹配,否则用户将无法登录.
SCIM 还将使用此值来匹配`id`上的用户,并且只要`id``externalId`值发生更改,SCIM 就会更新此值.
将此 SCIM `id`和 SCIM `externalId`配置为与 SAML `NameId`相同的值很重要. 可以使用[调试工具](./index.html#saml-debugging-tools)跟踪 SAML 响应,并且可以根据我们的[SAML 故障排除文档](./index.html#troubleshooting)检查任何错误.
#### How do I verify user’s SAML NameId matches the SCIM externalId[](#how-do-i-verify-users-saml-nameid-matches-the-scim-externalid "Permalink")
组所有者可以在组 SAML SSO 设置页面中查看用户列表和为每个用户存储的`externalId` .
另外,在[SCIM API](../../../api/scim.html#get-a-list-of-saml-users)可用于手动检索`externalId` ,我们已经存储了用户,也被称为`external_uid``NameId` .
例如:
```
curl 'https://example.gitlab.com/api/scim/v2/groups/GROUP_NAME/Users?startIndex=1"' --header "Authorization: Bearer <your_scim_token>" --header "Content-Type: application/scim+json"
```
要查看它与作为 SAML NameId 返回的值的比较,可以让用户使用[SAML Tracer](index.html#saml-debugging-tools) .
#### Update or fix mismatched SCIM externalId and SAML NameId[](#update-or-fix-mismatched-scim-externalid-and-saml-nameid "Permalink")
无论是更改值还是需要映射到其他字段,请确保`id``externalId``NameId`都映射到同一字段.
如果 GitLab 的`externalId`与 SAML NameId 不匹配,则需要对其进行更新才能使用户登录.理想情况下,将身份标识提供者配置为进行此类更新,但是在某些情况下,它可能无法这样做. ,例如在查找用户时由于 ID 更改而失败.
如果您修改 SCIM 身份提供程序使用的字段,请务必谨慎,通常为`id``externalId` . 我们使用这些 ID 查找用户. 如果身份提供者不知道这些字段的当前值,则该提供者可以创建重复的用户.
如果用户的`externalId`不正确,并且也与 SAML NameID 不匹配,则可以通过以下方式解决该问题:
* 您可以根据[" SAML 身份验证失败:用户已被使用"](./index.html#message-saml-authentication-failed-user-has-already-been-taken)部分,使用户取消链接并重新链接自己.
* 通过在启用预配置的同时从 SAML 应用中删除所有用户,可以同时取消所有用户的链接.
* 您可以使用[SCIM API](../../../api/scim.html#update-a-single-saml-user)手动更正为用户存储的`externalId`以匹配 SAML `NameId` . 要查找用户,您需要知道与`NameId`以及当前`externalId`匹配的`NameId` .
然后可以发出手动 SCIM#update 请求,例如:
```
curl --verbose --request PATCH 'https://gitlab.com/api/scim/v2/groups/YOUR_GROUP/Users/OLD_EXTERNAL_UID' --data '{ "Operations": [{"op":"Replace","path":"externalId","value":"NEW_EXTERNAL_UID"}] }' --header "Authorization: Bearer <your_scim_token>" --header "Content-Type: application/scim+json"
```
重要的是不要将这些值更新为不正确的值,因为这将导致用户无法登录.也不要将值分配给错误的用户,这也很重要,因为这将导致用户登录到错误的帐户.
#### I need to change my SCIM app[](#i-need-to-change-my-scim-app "Permalink")
各个用户可以按照[" SAML 身份验证失败:用户已被使用"](./index.html#i-need-to-change-my-saml-app)部分中的说明进行操作.
或者,可以从 SCIM 应用程序中删除用户,这将取消所有已删除用户的链接. 然后可以为新的 SCIM 应用打开同步,以[链接现有用户](#user-access-and-linking-setup) .
\ No newline at end of file
# Subgroups
# 子组织[](#子组织 "Permalink")
> 原文:[https://docs.gitlab.com/ee/user/group/subgroups/](https://docs.gitlab.com/ee/user/group/subgroups/)
我们支持多达 20 个级别的子组织,也称为嵌套结构或层次结构。
* [Overview](#overview)
* [Creating a subgroup](#creating-a-subgroup)
* [Membership](#membership)
* [Overriding the ancestor group membership](#overriding-the-ancestor-group-membership)
* [Mentioning subgroups](#mentioning-subgroups)
* [Limitations](#limitations)
通过子组织中您可以:
# Subgroups[](#subgroups "Permalink")
* **独立的子组织.** 由于每个组都有自己的可见性级别,因此您可以在同一保护范围内创建不同子组织以满足您不同的使用目的;
* **组织大型项目** 对于大型项目,子组织可能会更容易分隔源代码的权限
* **使管理人员和控制可见性变得更加容易** 根据人们的组织[成员身份](#成员身份)赋予他们不同的[权限](../../permissions.html#group-members-permissions)
在 GitLab 9.0 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/2772) .
有关组织和项目中允许的权限的更多信息,请参考[可见性级别](../../../development/permissions.html#general-permissions)
GitLab 支持多达 20 个级别的子组,也称为嵌套组或层次结构组. 组的级别.
## 概览[](#概览 "Permalink")
通过使用子组,您可以执行以下操作:
* **独立的内部/外部组织.** 由于每个组都有自己的可见性级别,因此您可以在同一保护范围内为不同目的托管组.
* **组织大型项目.** 对于大型项目,子组可能会更容易分隔部分源代码的权限.
* **使管理人员和控制可见性变得更加容易.** 根据人们的组[成员身份,](#membership)赋予他们不同的[权限](../../permissions.html#group-members-permissions) .
有关组和项目中允许的权限的更多信息,请参见[可见性级别](../../../development/permissions.html#general-permissions) .
## Overview[](#overview "Permalink")
一个组中可以有许多子组,而同一组中只能有一个直接父组. 它类似于目录行为或嵌套项目列表:
一个组织中可以有许多子组织,且每个组织只能有一个直接父组, 它类似于目录或嵌套项目列表:
* 第一组
* 1.1 组
* 1.2 组
* 1.2.1 组
* 1.2.2 组
* 组 1.2.2.1
* 1.2.2.1组
在一个真实的示例中,设想维护一个 GNU / Linux 发行版,其中第一个组是发行版的名称,随后的组按如下所示拆分:
假设维护一个 GNU / Linux 发行版,其中第一个子组织是发行版的名称,随后的子组织则按如下所示拆分:
* Organization Group - GNU/Linux distro
* 类别子组-包
......@@ -48,102 +35,55 @@ GitLab 支持多达 20 个级别的子组,也称为嵌套组或层次结构组
* 类别子组-红外线工具
* (项目)Ansible 剧本
Another example of GitLab as a company would be the following:
* 组织组-GitLab
* 类别子组-市场营销
* (项目)设计
* (项目)一般
* 类别子组-软件
* (项目)GitLab CE
* (项目)GitLab EE
* (项目)Omnibus GitLab
* (项目)GitLab Runner
* (项目)GitLab Pages 守护程序
* 类别子组-红外线工具
* (项目)厨师食谱
* 类别子组-执行团队
* * *
当执行诸如在子组之间转移或导入项目的操作时,其行为与在`group/project`级别执行这些操作时的行为相同.
## Creating a subgroup[](#creating-a-subgroup "Permalink")
要创建子组,您必须是该组的所有者或维护者,具体取决于该组的设置.
当执行诸如在子组织之间转移或导入项目的操作时,其行为与在`group/project`级别执行这些操作时的行为相同。
默认情况下,在以下位置创建的组:
## 新建一个子组织[](#新建一个子组织 "Permalink")
* GitLab 12.2 或更高版本允许所有者和维护者创建子组.
* GitLab 12.1 或更早版本仅允许所有者创建子组.
要在组织中创建子组织,您必须是该组织的所有者或维护者,具体取决于该组织的设置(默认情况下,允许所有者和维护者创建子组)。
此设置可以是所有者或管理员的任何组.
有关权限的更多信息,请检查[权限表](../../permissions.html#group-members-permissions) 。有关不允许用作组名的单词列表,请参见[保留名称](../../reserved_names.html) .
有关更多信息,请检查[权限表](../../permissions.html#group-members-permissions) . 有关不允许用作组名的单词列表,请参见[保留名称](../../reserved_names.html) .
如果用户明确地作为所有者(或维护者,如果启用了此设置)被添加到父组织中,则用户始终可以创建子组,即使管理员在其组织设置中禁用了组创建也是如此。
如果将子组明确地作为所有者(或维护者,如果启用了此设置)添加到直接父组,则用户始终可以创建子组,即使管理员在其设置中禁用了组创建也是如此.
您可以通过以下操作创建一个子组织:
要创建一个子组:
1. 在组的仪表板中,展开" **新建项目**拆分"按钮,选择" **新建子组"** ,然后单击" **新建子组"**按钮.
1. 在组织详情页中,展开右上角**新建项目**旁的下拉按钮,选择**新建子组织** ,然后单击 **新建子组**按钮;
[![Subgroups page](img/c3c27ff673c33bcd50004c2adb617d5f.png)](img/create_subgroup_button.png)
2. 像平常一样创建一个新组. 请注意,直接父组名称空间在" **组路径"**下是固定的. 可见性级别可以与直接父组不同.
2. 像平常一样直接创建一个新组织。 需要注意的是,父组织名称空间在 **组路径**下是不可修改的,但 可见性级别可以与父组织不同;
[![Subgroups page](img/7fb24fed9f39dcdabb530523bcb8dc08.png)](img/create_new_group.png)
3. 单击**创建组**按钮,您将被带到新组的仪表板页面.
按照相同的过程创建任何后续组.
## Membership[](#membership "Permalink")
3. 单击**创建组织**按钮
将成员添加到子组时,它们将从父组继承成员资格和权限级别. 如果您是其父级成员之一,则该模型允许访问嵌套组.
在亚组可以用乔布斯的管道[运动员](../../../ci/runners/README.html)注册到父组(S). 这意味着为父组配置的机密可用于子组作业.
## 成员身份[](#成员身份 "Permalink")
此外,属于子组的项目的维护者可以查看注册到父组的 Runner 的详细信息.
将成员添加到子组织时,它们将从父组织继承成员资格和权限级别。如果您是其父组织成员之一,则您可以被允许访问该组织下所有的子组织。
成员的组权限只能由所有者更改,并且只能在添加成员的组的" **成员"**页面上进行.
您可以通过查看组的" **成员"**页面来确定成员是否从父组继承了权限.
成员的组权限只能由所有者更改,您可以通过查看组织的**组织设置-组织成员设置**页面来确定成员是否从父组织继承了权限。
[![Group members page](img/e18ff80d06980688066f9ec9404bd2da.png)](img/group_members.png)
从上图可以得出以下几点
从上图我们可以了解到
* 有 5 位成员可以访问第`four`组.
* User0 是一个 Reporter,已从组`four`的层次结构上方的组`one`继承了其权限.
* 用户 1 是一个开发并已继承组他们的权限`one/two`其是组的层级以上`four` .
* 用户 2 是一个开发并已继承组他们的权限`one/two/three`这是组的层级以上`four` .
* 对于 User3,没有任何父组的指示,因此它们属于`four`组,即我们正在检查的组.
* 管理员是**所有**子组的所有者和成员,因此,与 User3 一样,没有任何祖先组的迹象.
* User0 是一个 Reporter,已从组`four`的层次结构上方的组`one`继承了该权限
* User1 是一个开发者,已从组`one/two`的层次结构上方的组`two`继承了该权限
* User2 是一个开发者,已从组`one/two/three`的层次结构上方的组`three`继承了该权限
* 对于 User3,没有任何父组织的指示,因此它属于`four`
* 管理员是**所有**子组织的所有者和成员,与 User3 一样也没有任何父组织的指示
[](https://gitlab.com/gitlab-org/gitlab/-/issues/21727) GitLab 12.6 中,您可以使用右侧的下拉列表过滤此列表:
您可以使用右侧的下拉列表过滤此列表:
[![Group members filter](img/8215c374294289cd2bd24399439403fd.png)](img/group_members_filter_v12_6.png)
* **仅显示直接成员**仅显示 Administrator 和 User3,因为这是属于`four`组的唯一用户,这是我们正在检查的用户.
* **仅显示继承的成员将**显示 User0,User1 和 User2,无论层次结构上方的哪个组都是继承权限的来源.
### Overriding the ancestor group membership[](#overriding-the-ancestor-group-membership "Permalink")
**注意:**您必须是网上论坛的所有者,才能向其中添加成员.**注意:**子组中的用户权限不能低于其任何祖先组中的权限. 因此,您不能针对子组的祖先组减少用户的权限.
* **仅显示直接成员**仅显示 Administrator 和 User3,因为这是属于`four`组的唯一用户
* **仅显示继承的成员**将显示 User0,User1 和 User2,无论层次结构上方的哪个组都可以作为继承权限的来源
要覆盖用户的祖先组(他们被添加到的第一个组)的成员资格,请将该用户再次以更高的权限集添加到新的子组中.
## 提及子组织[](#提及子组织 "Permalink")
例如,如果首先使用具有开发者权限将 User0 添加到组`group-1/group-1-1` ,则它们将在组`group-1/group-1-1`每个其他子`group-1/group-1-1`继承这些权限. 要为他们提供维护者访问`group-1/group-1-1/group1-1-1` ,您可以将他们再次添加为该维护者. 从该组中删除它们,权限将回退到祖先组的权限.
## Mentioning subgroups[](#mentioning-subgroups "Permalink")
在问题,提交和合并请求中提及组( `@group` )将通知该组的所有成员. 现在有了子组,如果您想拆分组的结构,将有更精细的支持. 提及方式与以前一样,您可以选择要通知的人群.
在Issue,提交和合并请求中提及组织( `@group` )将通知该组的所有成员。当有了子组织后,如果您想拆分组织的结构,将有更精细的支持。提及方式与以前一样,您可以选择要通知的人群.
[![Mentioning subgroups](img/0d1089161431c5f21751458027d84535.png)](img/mention_subgroups.png)
## Limitations[](#limitations "Permalink")
以下是您无法对子组进行操作的列表:
* [GitLab 页面](../../project/pages/index.html)支持在一个子组下托管的项目,但不支持子组网站下的项目. 这意味着,尽管您可以在子组下拥有项目网站,但是只有最高级别的组才支持[组网站](../../project/pages/getting_started_part_one.html#gitlab-pages-default-domain-names) .
* 不能与作为该项目所属组的祖先的组共享项目.这意味着您只能在沿层次结构走时共享. 例如, `group/subgroup01/project` **不能**`group`共享,但是可以与`group/subgroup02``group/subgroup01/subgroup03`共享.
\ No newline at end of file
# Roadmap
> 原文:[https://docs.gitlab.com/ee/user/group/roadmap/](https://docs.gitlab.com/ee/user/group/roadmap/)
* [Timeline duration](#timeline-duration)
* [Quarters](#quarters)
* [Months](#months)
* [Weeks](#weeks)
* [Roadmap timeline bar](#roadmap-timeline-bar)
# Roadmap[](#roadmap-premium "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 10.5 中引入.
*[GitLab 12.9 中](https://gitlab.com/gitlab-org/gitlab/-/issues/198062) ,路线图已移至高级层.
*[GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/-/issues/5164)及更高版本中,史诗条显示史诗的标题,进度和完成的重量百分比.
* 里程碑出现在[GitLab 12.10](https://gitlab.com/gitlab-org/gitlab/-/issues/6802)及更高版本的路线图中.
*[GitLab 13.0 中](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/29641)删除的路线图中可见的里程碑的功能标志.
*[GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/214375)和更高版本中,该路线图还显示了组中项目的里程碑.
*[GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/212494)和更高版本中,里程碑栏可以折叠和展开.
可以以时间轴(即甘特图)的形式显示包含开始日期或截止日期的组中的史诗和里程碑. "路线图"页面显示了一个组,一个子组或一个组中的一个项目的史诗和里程碑.
在史诗栏上,您可以看到每个史诗的标题,进度和完成的重量百分比. 当您将鼠标悬停在史诗栏上时,将显示一个弹出框,其中包含史诗的标题,开始日期,到期日和完成的权重.
您可以展开包含子级史诗的史诗,以在路线图中显示其子级史诗. 您可以单击人字形( )旁边的史诗标题,以展开和折叠子史诗.
在里程碑栏的顶部,您可以看到其标题. 当您将鼠标悬停在里程碑栏或标题上时,将显示一个带有其标题,开始日期和截止日期的弹出窗口. 您也可以点击 V 形符号( )旁边的" **里程碑"**标题以切换里程碑栏的列表.
[![roadmap view](img/b44c56313892b2d78da86b3f64519a98.png)](img/roadmap_view_v13_2.png)
下拉菜单允许您仅显示打开或关闭的史诗. 默认情况下,显示所有史诗.
[![epics state dropdown](img/9fa8173be554c09a1397ae7e064f24e5.png)](img/epics_state_dropdown_v12_10.png)
您可以通过以下方式在"路线图"视图中对史诗进行排序:
* 创建日期
* 最近更新时间
* 开始日期
* 截止日期
每个选项都包含一个按钮,可在**升序****降序**之间切换排序顺序. 浏览史诗(包括[史诗列表视图)](../epics/index.html)时,排序选项和顺序仍然存在.
路线图也可以[在史诗内部可视化](../epics/index.html#roadmap-in-epics) .
## Timeline duration[](#timeline-duration "Permalink")
版本历史
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 11.0 中引入.
*[GitLab 12.9 中](https://gitlab.com/gitlab-org/gitlab/-/issues/198062) ,时间轴已移至高级层.
路线图支持以下日期范围:
* Quarters
* 月(默认)
* Weeks
### Quarters[](#quarters "Permalink")
[![roadmap date range in quarters](img/ecb561241f5fcf0f0695ee4e29069b11.png)](img/roadmap_timeline_quarters.png)
在" **季度"**预设中,路线图显示史诗和里程碑,其开始或到期日期**在**过去的季度,当前季度和接下来的四个季度**之内****经过**过去的季度,当前季度和接下来的四个季度,其中**今天**由时间轴中的垂直红线显示. 时间轴标题上季度名称下方的子标题代表季度的月份.
### Months[](#months "Permalink")
[![roadmap date range in months](img/e255c03f63cd814a974b54b2a9eb6b02.png)](img/roadmap_timeline_months.png)
在" **月份"**预设中,路线图显示史诗和里程碑,这些史诗和里程碑的开始或到期日期**在**过去一个月,当前月份以及接下来的五个月**之内****经历**过去或六个月,其中**今天**由时间轴中的垂直红线显示. 时间轴标题上月份名称下方的子标题表示一周中开始日期(星期日)的日期. 默认情况下选择此预设.
### Weeks[](#weeks "Permalink")
[![roadmap date range in weeks](img/26b5d3ef6b515c199d6c860ac62a4671.png)](img/roadmap_timeline_weeks.png)
在" **周"**预设中,路线图显示史诗和里程碑,这些史诗和里程碑的开始日期或到期日期**在**过去一周,当前星期和接下来的四个星期**之内****经过**过去一周,当前星期和接下来的四个星期,其中**今天**由时间轴中的垂直红线显示. 时间轴标题上星期名称下方的子标题代表星期几.
## Roadmap timeline bar[](#roadmap-timeline-bar "Permalink")
时间线栏根据史诗或里程碑的开始日期和到期日期指示其大概位置.
\ No newline at end of file
# Projects
> 原文:[https://docs.gitlab.com/ee/user/project/](https://docs.gitlab.com/ee/user/project/)
* [Project features](#project-features)
* [Project integrations](#project-integrations)
* [New project](#new-project)
* [Fork a project](#fork-a-project)
* [Star a project](#star-a-project)
* [Explore projects](#explore-projects)
* [Project settings](#project-settings)
* [Import or export a project](#import-or-export-a-project)
* [Remove a project](#remove-a-project)
* [Delayed removal](#delayed-removal-premium)
* [CI/CD for external repositories](#cicd-for-external-repositories-premium)
* [Project members](#project-members)
* [Project activity](#project-activity)
* [Leave a project](#leave-a-project)
* [Project’s landing page](#projects-landing-page)
* [Redirects when changing repository paths](#redirects-when-changing-repository-paths)
* [Use your project as a Go package](#use-your-project-as-a-go-package)
* [Disable Go module features for private projects](#disable-go-module-features-for-private-projects)
* [Authenticate Go requests](#authenticate-go-requests)
* [Authenticate Git fetches](#authenticate-git-fetches)
* [Access project page with project ID](#access-project-page-with-project-id)
* [Project aliases](#project-aliases-premium-only)
* [Project APIs](#project-apis)
# Projects[](#projects "Permalink")
在 GitLab 中,您可以创建用于托管代码库的项目,将其用作问题跟踪器,在代码上进行协作,并使用内置的 GitLab CI / CD 持续构建,测试和部署应用程序.
您可以[选择](../../public_access/public_access.html)公开,内部或私有[使用](../../public_access/public_access.html)您的项目. GitLab 不限制您创建的私人项目的数量.
## Project features[](#project-features "Permalink")
在 GitLab 中创建项目时,您将可以使用大量[功能](https://about.gitlab.com/features/)
**Repositories:**
* [问题跟踪器](issues/index.html) :与您的团队讨论问题内的实现
* [发行板](issue_board.html) :组织工作流程并确定其优先级
* [多个发行板](issue_board.html#multiple-issue-boards) :允许您的团队为同一项目创建自己的工作流(发行板)
* [存储库](repository/index.html) :将代码托管在完全集成的平台中
# 项目[](#项目 "Permalink")
您可以创建用于托管代码库的项目,可以通过项目进行 Issue 管理,进行代码协作,并使用内置的 CI / CD 持续构建,测试和部署应用程序。
您可以设置您的项目为[公开](../../public_access/public_access.html)[私有](../../public_access/public_access.html),我们也不限制您创建的私有项目数量。
## 项目功能[](#项目功能 "Permalink")
创建项目时,您可以使用众多功能:
**代码仓库:**
* [Issue](issues/index.html) :与您的团队讨论问题内的实现
* [看板](issue_board.html) :组织工作流程并确定其优先级
* [代码仓库](repository/index.html) :将代码托管在完全集成的平台中
* [分支](repository/branches/index.html) :使用 Git 分支策略在代码上进行协作
* [受保护的分支机构](protected_branches.html) :防止协作者弄乱历史记录或在未经审查的情况下推送代码
* [受保护的标签](protected_tags.html) :控制谁有权创建标签,并防止意外更新或删除
* [储存库镜​​](repository/repository_mirroring.html)
* [储存库镜像](repository/repository_mirroring.html)
* [签署提交](gpg_signed_commits/index.html) :使用 GPG 签署您的提交
* [部署令牌](deploy_tokens/index.html) :管理基于项目的部署令牌,这些令牌允许永久访问存储库和 Container Registry.
* [Web IDE](web_ide/index.html)
**发出和合并请求:**
**Release 及合并请求:**
* [问题跟踪器](issues/index.html) :与您的团队讨论问题内的实现
* [Issue](issues/index.html) :与您的团队讨论问题内的实现
* [发行板](issue_board.html) :组织工作流程并确定其优先级
* [多个发行板](issue_board.html#multiple-issue-boards) :允许您的团队为同一项目创建自己的工作流(发行板)
* [合并请求](merge_requests/index.html) :应用您的分支策略并获得团队的审查
* [合并请求批准](merge_requests/merge_request_approvals.html) :实施更改之前[请求批准](merge_requests/merge_request_approvals.html)
* [修复 UI 中的合并冲突](merge_requests/resolve_conflicts.html) :直接从 GitLab UI 中使用 Git diff 工具
* [修复合并中的冲突](merge_requests/resolve_conflicts.html) :直接从网页中使用 Git diff 工具
* [审查应用程序](../../ci/review_apps/index.html) :按分支实时预览合并请求中建议的更改结果
* [标签](labels.html) :按标签整理问题并合并请求
* [时间跟踪](time_tracking.html) :跟踪估计在完成问题或合并请求上花费的时间和时间
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册