Эти рекомендации предлагают лучшие практики для улучшения документации и поддержания её организованной и легко доступной.
См. также написание документации.
Примечание: Эти руководства основаны на обсуждении, которое прошло в задаче #3349.
Документационная иерархия может быть значительно улучшена за счёт предоставления лучшей структуры и организации директорий.
Имея структурированную структуру документов, мы сможем иметь значимые URL, такие как docs.gitlab.com/user/project/merge_requests.html
. С этим шаблоном вы сразу можете понять, что вы навигируете по документации для пользователей и она связана с проектом и его merge requests.
Таблица ниже показывает, какие виды документации находятся в каких директориях.| Директория | Что здесь находится |
| --------- | -------------- |
| doc/user/
| Документация для пользователей. Всё, что можно сделать в интерфейсе GitLab, находится здесь, включая /admin
. |
| doc/administration/
| Документация, которая требует доступа пользователя к серверу, где установлен GitLab. Настройки администратора, которые можно получить через интерфейс GitLab, находятся в директории doc/user/admin_area/
. |
| doc/api/
| Документация, связанная с API. |
| doc/development/
| Документация, связанная с разработкой GitLab. Любые руководства по стилю должны находиться здесь. |
| doc/legal/
| Юридические документы о вкладе в GitLab. |
| doc/install/
| Вероятно, самый посещаемый директорий, так как в нём находится installation.md
. Идеально, чтобы он находился в директории doc/administration/
, но лучше оставить его как есть, чтобы избежать путаницы (вопрос всё ещё обсуждается). |
| doc/update/
| То же самое для doc/install/
. Должен находиться в директории administration/
, но это хорошо известное расположение, лучше оставить как есть, по крайней мере, на данный момент. |
| doc/topics/
| Индексы по темам (doc/topics/topic-name/index.md
): все ресурсы для этой темы (документация для пользователей и администраторов, статьи, и документация сторонних разработчиков). |
| doc/articles/
| Технические статьи: руководства для пользователей, руководства для администраторов, технические обзоры, учебные пособия (doc/articles/article-title/index.md
). |---
В разделе "Настройка сети" указаны параметры: "ip address" 192.168.1.1, "subnet mask" 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: ip address 192.168.1.1, subnet mask 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1, маска подсети 255.255.255.0. Пожалуйста, убедитесь, что вы используете правильные значения для вашей сети.
В разделе "Настройка сети" указаны параметры: IP-адрес 192.168.1.1**Общие правила:**1. Правильное наименование и расположение нового документа — это комбинация относительного URL документа и дизайна карты GitLab, используемого для целей UX (источник, изображение).
-
). Например, правильное наименование будет import_projects_from_github.md
. То же правило применяется к изображениям.user
, administration
, api
и development
.doc/user/
содержит пять основных подкаталогов: project/
, group/
, profile/
, dashboard/
и admin_area/
.
doc/user/project/
должен содержать всю документацию, связанную с проектами.doc/user/group/
должен содержать всю документацию, связанную с группами.doc/user/profile/
должен содержать всю документацию, связанную с профилями. Каждая страница, которую вы можете просмотреть по пути /profile
, должна иметь свой собственный документ, например, account.md
, applications.md
, emails.md
и т. д.doc/user/dashboard/
должен содержать всю документацию, связанную с панелями управления.doc/user/admin_area/
должен содержать всю документацию, связанную с администрированием, описывая, что можно достичь, используя интерфейс администрирования GitLab (не путать с doc/administration
, где требуется доступ к серверу).
1.Каждая категория по пути /admin/application_settings
должна иметь свой собственный документ, расположенный по пути doc/user/admin_area/settings/
. Например, категория Visibility and Access Controls должна иметь документ, расположенный по пути doc/user/admin_area/settings/visibility_and_access_controls.md
.doc/topics/
содержит технический контент, связанный с темами. Создайте doc/topics/topic-name/subtopic-name/index.md
, когда подтемы становятся необходимыми. Общая документация, связанная с пользователями и администрированием, должна быть расположена соответствующим образом.doc/articles/article-title/img/
.Если вы не уверены, где должен находиться документ, вы можете обратиться к @axil
в вашем запросе на слияние.-
) для неупорядоченных списков вместо звёздочек (*
).1
) для упорядоченных списков._
) для выделения слова или текста курсивом.**
) для выделения слова или текста жирным шрифтом.#
в начале (при использовании markdown). Для подзаголовков используйте ##
, ###
и так далее.@axil
, @rspeicher
, @marcia
, @SeanPackham
. Это для того, чтобы убедиться, что ни один документ с некорректными заголовками не будет опубликован без проверки, что предотвращает появление неактивных ссылок и проблем с перенаправлением при исправлении.Если ссылка делает абзац многократно разрывающимся на несколько строк, не используйте
обычный подход Markdown: [Text](https://example.com)
. Вместо этого используйте
[Text][identifier]
и в самом низу документа добавьте:
[identifier]: https://example.com
. Это еще один способ создания ссылок в Markdown,
который сохраняет документ ясным и кратким. Дополнительные баллы, если вы также добавите
альтернативный текст: [identifier]: https://example.com "Альтернативный текст"
,
который появляется при наведении указателя мыши на ссылку.
Иногда требуется создать ссылку на встроенные документы, которые GitLab предоставляет
в директории /help
. Это обычно делается в файлах внутри директории app/views/
с помощью вспомогательного метода help_page_path
.
В самом простом виде HAML-код для создания ссылки на страницу /help
выглядит следующим образом:
= link_to 'Help page', help_page_path('user/permissions')
Метод help_page_path
содержит путь к документу, на который вы хотите создать ссылку, с
следующими соглашениями:
doc/
в репозитории GitLab.md
должно быть опущено/
)Ниже приведены некоторые специальные случаи, когда следует использовать метод help_page_path
в зависимости от контекста. Вы можете комбинировать один или несколько из следующих:1. Ссылка на якорь. Используйте anchor
как часть метода help_page_path
:
```haml
= link_to 'Help page', help_page_path('user/permissions', anchor: 'anchor-link')
```
Открытие ссылок в новой вкладке. Это должно быть стандартным поведением:
= link_to 'Help page', help_page_path('user/permissions'), target: '_blank'
Ссылка на круглый значок. Обычно используется в настройках, где длинное
описание не может быть использовано, например, рядом с флажками. Вы можете использовать
любой значок Font Awesome, но предпочтительно использовать question-circle
:
= link_to icon('question-circle'), help_page_path('user/permissions')
Использование кнопки-ссылки. Полезно в местах, где текст выходит из контекста остальной части разметки страницы:
= link_to 'Help page', help_page_path('user/permissions'), class: 'btn btn-info'
Подчеркивание ссылки.
= link_to 'Help page', help_page_path('user/permissions'), class: 'underlined-link'
Использование ссылок в тексте.
Описание к #{link_to 'Help page', help_page_path('user/permissions')}.
Добавление точки в конце предложения. Полезно, когда вы не хотите, чтобы точка была частью ссылки:
= succeed '.' do
Узнайте больше на странице
= link_to 'Help page', help_page_path('user/permissions')
```## Изображения — Размещайте изображения в отдельной директории с именем `img/` в той же директории, где находится ваш документ `.md`. Всегда добавляйте в начало имен изображений имя документа, в который они будут включены. Например, если есть документ с именем `twitter.md`, то допустимым именем изображения может быть `twitter_login_screen.png`. [**Исключение**: изображения для [статей](writing_documentation.md#technical-articles) следует размещать в директории `img` под `/articles/article_title/img/`, поэтому нет необходимости добавлять имя документа в начало имен файлов.]

---
) между изображением и текстом для создания горизонтальной линии для лучшей читаемости.---
) между изображением и заголовком.Примечания должны быть выделены словом Note:
жирным шрифтом. Используйте этот формат:
>**Note:**
Это что-то, что следует отметить.
что отображается как:
Note: Это что-то, что следует отметить.
Если примечание занимает несколько строк, это допустимо.
Каждый документ, связанный с новой функцией, должен объявлять версию GitLab, в которой эта функция была введена. Немного ниже заголовка добавьте примечание:
> Введено в GitLab 8.3.
Если возможно, каждая функция должна иметь ссылку на MR, который её ввёл. Вышеупомянутое примечание будет преобразовано к следующему: ```
Введено в GitLab 8.3.
, где идентификатор ссылки назван в соответствии с репозиторием (CE) и номером MR.
Если функция доступна только в GitLab Enterprise Edition, не забудьте об этом упомянуть, как:
> Введено в GitLab Enterprise Edition 8.3.
В противном случае, упоминание можно опустить.
Перезапуск GitLab:
Существует множество случаев, когда требуется перезапуск или переконфигурирование GitLab. Чтобы избежать дублирования, ссылайтесь на специальный документ, который можно найти в
doc/administration/restart_gitlab.md
. Обычно текст будет выглядеть следующим образом:
Сохраните файл и [перезапустите GitLab](../administration/restart_gitlab.md)
для применения изменений.
Если документ, который вы редактируете, находится в другом месте, отличном от директории doc/
GitLab CE/EE, вместо относительной ссылки используйте полный путь:
http://docs.gitlab.com/ce/administration/restart_gitlab.html
.
Замените переконфигурирование
на перезапуск
там, где это необходимо.
Изменение местоположения документа не должно быть произвольным. Помните, что
документация доступна для всех установок под help/
и не только для
GitLab.com или http://docs.gitlab.com. Убедитесь, что это обсуждено с командой
документации заранее.
Если вам действительно нужно изменить местоположение документа, не удаляйте старый документ, а вместо этого добавьте текст, указывающий на новое местоположение, например:
Этот документ был перемещён в [path/to/new_doc.md](path/to/new_doc.md).
где path/to/new_doc.md
— относительный путь к корневому каталогу doc/
.
Например, если вы хотите переместить doc/workflow/lfs/lfs_administration.md
в doc/administration/lfs.md
, то шаги будут следующими:
Скопируйте doc/workflow/lfs/lfs_administration.md
в doc/administration/lfs.md
Замените содержимое doc/workflow/lfs/lfs_administration.md
на:
Этот документ был перемещён в [administration/lfs.md](../../administration/lfs.md).
Найдите и замените все вхождения старого местоположения на новое.
Быстрым способом для поиска является использование git grep
. Сначала перейдите
в корневой каталог, где вы клонировали репозиторий gitlab-ce
, а затем выполните:
git grep -n "workflow/lfs/lfs_administration"
git grep -n "lfs/lfs_administration"
```Важные моменты:
app/
), которые отображаются при посещении /help
,
а также иногда в тестовом наборе (spec/
).git grep
будет рекурсивно искать в директории, в которой она запущена,
строки с workflow/lfs/lfs_administration
и lfs/lfs_administration
и будет выводить файл и строку,
где упоминается этот файл. Вы можете спросить, почему используется два поиска. Поскольку мы используем относительные пути для ссылок на документацию,
иногда полезно искать путь глубже.*.md
не используется, когда документ ссылается на встроенные страницы справки GitLab,
поэтому мы его опускаем в git grep
.Когда есть настройки, которые можно настроить для обоих методов установки, рекомендуется документировать их в документации CE, чтобы избежать дублирования.
Настройки конфигурации включают:
config/
lib/support/
в целомКогда есть список шагов для выполнения, обычно это означает редактирование конфигурационного файла и переконфигурирование/перезапуск GitLab. В этом случае следует следовать стилю ниже в качестве руководства:
**Для установок с использованием Omnibus**
1. Редактируйте `/etc/gitlab/gitlab.rb`:
```ruby
external_url "https://gitlab.example.com"
```
1. Сохраните файл и [переконфигурируйте] GitLab для применения изменений.
---
**Для установок из исходников**
1. Редактируйте `config/gitlab.yml`:
```yaml
gitlab:
host: "gitlab.example.com"
```
1. Сохраните файл и [перезапустите] GitLab для применения изменений.
[переконфигурируйте]: path/to/administration/gitlab_restart.md#omnibus-gitlab-reconfigure
[перезапустите]: path/to/administration/gitlab_restart.md#installations-from-source
В этом случае:- перед каждым шагом метод установки объявляется жирным шрифтом
---
) используются для создания горизонтальной линии и разделения двух методовВозможно, вам потребуется токен для демонстрации вызова API с использованием cURL или секретного переменного, используемого в CI. Рекомендуется не использовать реальные токены в документации, даже если вероятность эксплуатации токена низкая.
Вы можете использовать следующие фейковые токены в качестве примеров.
Тип токена | Значение токена |
---|---|
Частный токен пользователя | 9koXpg98eAheJpvBs5tK |
Токен доступа пользователя | n671WNGecHugsdEDPsyo |
ID приложения | 2fcb195768c39e9a94cec2c2e32c59c0aad7a3365c10892e8116b5d83d4096b6 |
Секрет приложения | 04f294d1eaca42b8692017b426d53bbc8fe75f827734f0260710b83a556082df |
Секретная переменная CI | Li8j-mLUVA3eZYjPfd_H |
Токен конкретного запуска | yrnZW46BrtBFqM7xDzE7dddd |
Токен общего запуска | 6Vk7ZsosqQyfreAxXTZr |
Токен триггера | be20d8dcc028677c931e04f3871a9b |
Секретный токен вебхука | 6XhDroRcYPM5by_h-HLY |
Токен проверки состояния | Tu7BgjR9qeZTEyRzGG2P |
Токен профиля запроса | 7VgpS4Ax5utVD2esNstz |
Вот список обязательных элементов. Используйте их в точном порядке, в котором они указаны в этом документе. Дополнительное объяснение дано ниже.
Каждый метод должен иметь запрос REST API. Например:
GET /projects/:id/repository/branches
```- Каждый метод должен иметь подробное описание параметров ([см. описание метода](#описание-метода)).
Каждый метод должен иметь пример cURL.
Каждый метод должен иметь тело ответа (в формате JSON).### Описание метода
Используйте следующие заголовки таблицы для описания методов. Атрибуты всегда должны быть в блоках кода с использованием обратных апострофов (`).
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ----------- | -------- |
Пример отображения:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
user |
string | да | Имя пользователя GitLab |
https://gitlab.example.com/api/v4/
в качестве конечной точки.9koXpg98eAheJpvBs5tK
.GET
является по умолчанию, поэтому его не нужно включать.Методы | Описание |
---|---|
-H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" |
Используйте этот метод в таком виде, когда требуется аутентификация |
-X POST |
Используйте этот метод при создании новых объектов |
-X PUT |
Используйте этот метод при обновлении существующих объектов |
-X DELETE |
Используйте этот метод при удалении существующих объектов |
Ниже приведен набор примеров cURL, которые можно использовать в документации API.#### Простая команда cURL
Получить детали группы:
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v4/groups/gitlab-org
Создать новый проект в пространстве имен аутентифицированного пользователя:
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects?name=foo"
Вместо использования -X POST
и добавления параметров к URI можно использовать опцию --data
cURL. Пример ниже создаст новый проект foo
в пространстве имен аутентифицированного пользователя.
curl --data "name=foo" --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects"
Примечание: В этом примере мы создаем новую группу. Обратите внимание на использование одинарных и двойных кавычек.
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" --header "Content-Type: application/json" --data '{"path": "my-group", "name": "My group"}' https://gitlab.example.com/api/v4/groups
Вместо использования JSON или urlencode вы можете использовать multipart/form-data, что правильно обрабатывает кодировку данных:
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" --form "title=ssh-key" --form "key=ssh-rsa AAAAB3NzaC1yc2EA..." https://gitlab.example.com/api/v4/users/25/keys
Приведенный выше пример выполняется администратором и добавляет публичный ключ SSH с названием ssh-key
в аккаунт пользователя, имеющего идентификатор 25.#### Экранирование специальных символов
Пробелы или слеши (/
) могут иногда приводить к ошибкам, поэтому рекомендуется экранировать их, когда это возможно. В примере ниже мы создаем новую задачу, в которой в заголовке присутствуют пробелы. Обратите внимание, как пробелы экранируются с помощью ASCII-кода %20
.
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/42/issues?title=Hello%20Dude"
Используйте %2F
для слешей (/
).
API GitLab иногда принимает массивы строк или целых чисел. Например, чтобы ограничить домены электронной почты для регистрации в экземпляре GitLab только *.example.com
и example.net
, вы можете сделать что-то вроде этого:
curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" --data "domain_whitelist[]=*.example.com" --data "domain_whitelist[]=example.net" https://gitlab.example.com/api/v4/application/settings
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )