631 слово | 2 минуты

Настройка

Группы

Делаем под "root", чтобы не привязываться к пользователю

Это коллекция проектов (репозиториев) с указанием того, как пользователи получают к ним доступ.

Группы могут быть глобальными: prod, test, temp... или локальными (у каждого пользователя есть группа по его логину). Группа имеет пространство имён проектов-репозиториев (так же, как и пользователи)

http://gitlab.2dapp.ru/пользователь/репозиторий - локальная группа пользователя

http://gitlab.2dapp.ru/группа/репозиторий - глобальная группа

Права:

  • Приватный (Private) - мы должны явно дать доступ на чтение отдельным пользователям
  • Внутренний (Internal) - видена любому вошедшему пользователю GitLab
  • Публичный (Public) - проект видим всем. Это относится как к доступу git fetch, так и к доступу к проекту через веб-интерфейс.

У нас три приватные группы:

  • Prod - группа для репозиториев боевых сайтов
  • Test - группа для репозиториев тестовых сайтов (если надо)
  • Temp - песочница

Участники группы

Выбираем группу

и добавляем участника

Роль в группе:

  • Гость (Guest) - может просматривать wiki, смотреть и создавать issues (баги)
  • Репортер (Reporter) - дополнительно может просматривать код
  • Разработчик (Developer) - доступ разработчика, может свободно работать (однако по умолчанию запрещено добавлять изменения в защищенную ветку main)
  • Сопровождающий (Maintainer) - может делать все кроме управления самим проектом (например, не может проект удалить)
  • Владелец (Owner) - полный контроль над группой, её членами и проектами

Добавление пользователя

Добавляются рутом или администратором

Пользователю нужно создать имя, логин и email (на него отправится приглашение). Пользователь будет вынужден установить пароль сам при первом входе в систему.

Все пользователи могут:

  • Создавать задачи
  • Оставлять комментарии
  • Клонировать или скачивать репозиторий

Уровень доступа (Access level):

  • Regular - обычные пользователи имеют доступ к своим группам и проектам
  • Administrator - имеет неограниченный доступ ко всем группам, проектам, пользователям и функциям

В случаях, чтобы пользователь имел доступ только к некоторым внутренним или частным проектам, существует возможность создания внешних пользователей:

  • Им невозможно создавать группы, проекты или личные репозитории
  • Они могут получать доступ только к публичным проектам и проектам и к которым им явно предоставлен доступ (таким образом можно скрывать от них все остальные репозитории)

Доступ может быть предоставлен путем добавления пользователя в качестве участника проекта или группы. Как и обычные пользователи, они получают роль в проекте или группе со всеми возможностями, указанными при добавлении (Guest, Reporter, Developer, Maintainer)

Добавление проекта (репозитория)

Нужно указать имя, выбрать группу. Далее можно пригласить конкретного пользователя в проект и назначить ему права (например, если это внешний пользователь и его нет в группе проекта)

Этот репозиторий будет иметь url: http://gitlab.2dapp.ru/prod/test

Первая заливка репозитория (файлов сайта)

Тут есть 3 пути:

Первый – используем веб-интерфейс GitLab

Можно нажать "Upload File", GitLab предложит выбрать файлы проекта для загрузки и последующей работы с ними. Выбираем все файлы, что используем при разработке и выгружаем. Не подходит для больших проектов.

Второй – используем командную строку

Делаем под пользователем с правами "Maintainer" и выше, чтобы был доступ к ветке main.

Сначала на своем локальном Git нужно сделать глобальные настройки. Эти данные будут отображаться в коммитах (нужно взять из GitLab), далее на выбор:

git config --global user.name "Administrator"
git config --global user.email "admin@example.com"

можно отправить существующую папку с файлами сайта

cd project_folder
git init --initial-branch=main
git remote add origin https://gitlab.2dapp.ru/temp/test.git
git add .
git commit -m "Initial commit"
git push --set-upstream origin main

или можно запушить существующий локальный репозиторий со всеми коммитами

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.2dapp.ru/temp/test.git
git push --set-upstream origin --all
git push --set-upstream origin --tags

Третий – используем сторонний git-клиент

Существуют приложения в духе TortoiseGit, Tower, Sublime Merge, GitFox и т.п., позволяющие управлять репозиториями

Как добавить SSH-ключ для подключения к репозиторию

Для того чтобы при клонировании репозитория с GitLab и отправки обратно в него внесенных изменений GIT не требовал постоянно вводить логин и пароль пользователя гитлаба - можно сгенерировать SSH ключ и добавить его в настройки в GitLab

Генерируем ключ с помощью команды ssh-keygen (вводим ее в терминал):

ssh-keygen -t rsa -b 2048 -C "комментарий ключа"

после ввода команды в консоли отобразится примерно следующее:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

Генератор ключа спрашивает, куда его сохранить. Оставляем путь по умолчанию (ничего не вводим) и нажимаем Enter до тех пор, пока генерация ключа не будет завершена. В результате должны быть сгенерированы два ключа - приватный (id_rsa) и публичный (id_rsa.pub). Нужно скопировать публичный ключ и добавить его в настройки гитлаба.

cat ~/.ssh/id_rsa.pub

Копируем его и идем в настройки GitLab: Иконка пользователя в правом верхнем углу -> Settings -> SSH Keys (в левом меню). Вставляем наш ключ в соответствующее поле и нажимаем Add key.

Теперь при использовании протокола ssh путь до удалённых репозиториев будет отличаться от путей, которые соответствовали протоколу https. Чтобы клонировать репозиторий с GitHub по ssh нужно будет выбрать вкладку ssh